본문 바로가기

전체 글246

NodeJS 크롤링 만들어보기 (cheerio) 크롤링 웹페이지 안에 있는 필요한 데이터를 추출하는 것 크롤링에 필요한 모듈은 2가지가 있다. axios Promise API를 활용하는 HTTP 비동기 통신 라이브러리 크롤링 할 웹페이지를 가져오는데 사용한다. cheerio HTML 문서를 파싱하여 필요한 정보만을 가져올 수 있도록 도와주는 모듈이다. jQuery 문법과 유사하다. 1. 폴더 생성 2. npm 초기화 npm init -y 3. 필요한 패키지 설치 axios, cheerio, express npm i axios cheerio express nodemon npm i -g nodemon 4. index.js 코드작성 크롤링 할 사이트와 DOM 구조에 맞게 가져오도록 작성하기 나는 조만간 일본 여행을 갈 예정이라서 네이버에 “도쿄 여행” 이라.. 2023. 5. 27.
[Node.js 프로젝트 투입 일주일 전] 클러스터 모드 Nodejs는 싱글 스레드로 동작하고 단일 CPU 코어에서 실행된다. Nodejs 클러스터 = Primary 프로세스 + Worker 프로세스 primary 프로세스는 CPU 수만큼 포크해서 worker 프로세스를 만든다. worker 프로세스는 처리해야 할 비즈니스 로직을 구현해서 CPU 자원을 모두 사용하여 병렬로 처리하도록 한다. PM2 Nodejs의 프로세스 관리 대표적인 도구이며, 더 쉽게 클러스터 모드 실행이 가능하다 2023. 5. 21.
[Node.js 프로젝트 투입 일주일 전] 모듈 Module Require/Import 모듈 Module : 분리된 각각의 자바스크립트 파일, 각 파일은 특정한 목적을 가진 여러 개의 함수와 변수의 집합 사용하는 이유: 재사용을 위해! 함수와 변수를 객체에 담고 다른 자바스크립트 파일에서 사용하기 위해 module.exports에 대입하면 모듈로 적용된다. 모듈로 만들어진 자바스크립트 파일은 require()함수를 통해 가져올 수 있다. Require VS Import 둘 다 외부 모듈/라이브러리를 불러오는데 사용된다. Import라는 es6 모듈 시스템을 많이 사용하는 추세이지만, 태그를 사용하는 브라우저 환경에서나, NodeJS 환경 또는 Babel 사용이 불가할 때 Require 를 사용하므로 알아둬야한다. commonjs equire / exports es6 import / expo.. 2023. 5. 21.
[Node.js 프로젝트 투입 일주일 전] Nodejs 란? 회사 동료와 함께 읽기로 구매하고, 1회 완독 하였다~ 그 후 포인트 정리하기! Nodejs란 ? Chrome V8 엔진으로 빌드된 Javascript 런타임이다. Nodejs 특징 특징1) 논블로킹 I/O 자바스크립트는 한번에 하나의 작업을 처리하지만 I/O 작업의 경우는 동시에 처리가 가능하다. ex) 파일 읽기/쓰기, 데이터베이스 데이터 전송/조회 * 논블로킹: 함수를 호출하면 해당 함수에 제어권을 넘겨줘 다른 작업을 바로 진행할 수 있도록 하는 방식 (= 비동기) * 블로킹: 함수를 호출하면 해당 함수가 작업을 마칠때까지 제어권을 주지 않고 대기하는 방식 (= 동기) 특징 2) 싱글 스레드 * 프로세스: 작업 처리를 위해 작업 단위를 두고 프로세스를 통해 작업을 처리한다. * 스레드: 프로세스 안.. 2023. 5. 17.
[공유] Clean Code PHP 한글판 clean code PHP 버전으로 만든 문서를 한글로 번역한 Git Readme 문서를 봤는데 간단한 코드 예제와 함께 클린 코드 규칙을 잘 설명해주어서 공유하게되었습니다. GitHub - yujineeee/clean-code-php: Clean Code PHP 한글판 :bathtub: Clean Code PHP 한글판. Contribute to yujineeee/clean-code-php development by creating an account on GitHub. github.com Robert C. Martin의 책, 소프트웨어 엔지니어링의 교과서라고 불리는 Clean Code PHP 버전입니다. 이 문서는 스타일 가이드가 아닙니다. PHP로 읽기 쉽고 재사용 가능하며, 리팩토링이 쉬운 소프트.. 2023. 5. 16.
[SpringBoot 통신] RestTemplate, WebClient 서버로 웹 요청을 보내고 응답을 받을 수 있게 도와주는 RestTemplate 과 WebClient RestTemplate 스프링에서 HTTP 통신 기능을 손쉽게 사용하도록 설계된 템플릿 RESTful 원칙을 따르는 서비스를 편리하게 만들 수 있다. 동기 방식으로 처리되며, AsyncRestTemplate를 사용하면 비동기 방식으로 사용할 수 있다. 현업에서 많이 쓰이지만 지원이 중단된 상태여서 최신 버전에서는 WebClient 사용을 권고한다. WebClient Reactor 기반으로 동작하는 API 스레드와 동시성 문제를 벗어나 비동기 형식으로 사용할 수 있다. 특징 Non-Blocking I/O 를 지원한다 Reactive Streams의 Back Pressure를 지원한다 적은 하드웨어 리소스로 .. 2023. 5. 9.
객체지향 패러다임 적절한 객체에게 적절한 책임을 할당하여 서로 메시지를 주고 받으며 협력하도록 하는 것 점점 증가하는 sw 복잡도를 낮추기 위해 객체지향 패러다임 대두 높은 응집도, 낮은 결합도 -> 유지보수가 용이하다. 영향도를 파악할 수 있어야 한다. 중요한 포인트! 1. 클래스가 아닌 객체에 초점을 맞추는 것 2. 객체들에게 얼마나 적절한 역할과 책임을 할당하는지 절차지향 프로그래밍 vs 객체지향 프로그래밍 절차 지향 - 책임이 한곳에 집중해 있는 방식 (getter) 객체지향 - 책임이 여러 객체로 적절히 분산돼 있는 방식 객체지향 설계 시 고려할 것 1. 도메인을 구성하는 객체에는 어떤 것들이 있는지 고민 2. 객체들간의 관계를 고민 3. 동적인 객체를 정적인 타입으로 추상화해서 도메인 모델링 하기 4. 협력을 .. 2023. 4. 12.
[Spring Boot] 예외처리 Exeption 클래스 구분 Chekcked Exception Unchecked Exception 처리 여부 반드시 예외처리 필요 명시적 처리를 강제하지 않음 확인 시점 컴파일 단계 실행 중 단계 대표적인 예외 클래스 IOExceiption SQLException RuntimeException NullPointerException IllegalArgumentException IndexOutOfBoundException SystemException uncheked exception 은 문법상 문제는 없지만 예기치 않은 상황이 생겨 발생하는 예외이다. 예외처리 방법 1. 예외 복구 - try catch 2. 예외 처리 회피 - throw 예외가 발생한 메서드를 호출한 곳에서 에러 처리를 할 수 있게 전가하는.. 2023. 3. 28.
[Spring Boot] JPA 영속성 전이 cascade, 고아객체 영속성 전이 cascade : 특정 엔티티의 영속성 상태를 변경할 때 그 엔티티와 연관된 엔티티의 영속성에도 영향을 미쳐 영속성 상태를 변경하는 것 영속성 전이 타입의 종류 ALL : 모든 영속 상태 변경에 대해 영속성 전이 적용 PERSIST : 엔티티가 영속화할 때 연관된 엔티티도 함께 영속화 MERGE : 엔티티를 영속성 컨텍스트에 병합할 때 연관된 엔티티도 병합 REMOVE : 엔티티를 제거할 때 연관된 엔티티도 제거 REFRESH : 엔티티를 새로고침할 때 연관된 엔티티도 새로고침 DETACH : 엔티티를 영속성 컨텍스트에서 제외하면 연관된 엔티티도 제외 엔티티 생명주기와 연관이 있다. 한 엔티티가 영속 상태의 변경이 일어나면 매핑으로 연관된 엔티티에도 동일한 동작이 일어나도록 전이를 발생시킨다.. 2023. 3. 27.
반응형