의존 클래스가 다른 클래스를 의존한다는 것은 한 클래스가 다른 클래스의 기능이나 서비스를 사용하거나 필요하다는 의미이다.의존성 의존성은 특정 클래스가 기능을 수행하기 위해 필요로 하는 다른 클래스, 즉 필요한 클래스이다의존성 주입 전 ( 강한 결합 , tight-coupling )cashService 와 productService 인스턴스를 클래스 안에서 생성해서 사용하고 있다.이렇게 하면 만약 이 서비스들을 다른 서비스로 교체하려면? 모든 service가 쓰인 곳을 찾아가 하나씩 바꿔야 한다. ( 유지보수 꽝 ) import { CashService} from './services/cash.service'import {ProductService} from './services/product.servi..
MVC 패턴Model소프트웨어나 애플리케이션에서 정보 및 데이터 부분을 담당한다. Controller로 부터 데이터를 받아서 처리하고 그 결과값을 반환한다Controller Model 과 View 사이에서 비지니스 로직을 처리하는 역할을 한다. URL에 따라 요청을 파악하고 적절한 서비스와 Model에 데이터를 전달한다. ViewController로부터 돌려받은 데이터를 가지고 시각적인 부분을 처리해서 user에게 반환한다 ( 요즘은 프론트엔드에서 이작업을 하므로 백엔드에서 HTML을 작성하는 일은 많지 않다 ) 폴더구조 코드// product.controller.js 파일import { CashService} from './services/cash.service'import {ProductServic..
상품 API 구조 만들기 실습 // cash.js 파일export class CashService { checkValue = () =>{ // 1. 가진 돈 검증하는 코드 ( 대략 10줄 정도 ) // ... // ... // ... // ... }} // product.js 파일export class ProductService { checkSoldout = () =>{ // 2. 판매여부 검증하는 코드 ( 대략 10줄 정도 ) // ... // ... // ... // ... // ... }} // index.js 파일import {CashService} from './cash.js..
Class 의 정의 객체를 생성하는 ' 틀 ' 객체지향 프로그래밍 Class 실습 클래스에는 const , let , var 가 붙지 않는다.함수 생성시 function 키워드도 없다class Monster { power = 10 constructor(qqq){ this.power = qqq; } attack(){ console.log("공격") console.log('내공격력은' + this.power + '야!!') } run(){ console.log("도망") } // 화살표 함수도 가능하다. fight = ()=>{ console.log('전투') }}const myMonste..
오픈그래프 이해디스코드나 카카오톡 등에서 URL 을 입력하면 아래와 같이 웹사이트의 이미지와 설명이 예쁘게 같이 출력된다. 원리사이트가 URL 을 인식하고, 그 URL에 get 요청을 통해서 HTML 파일을 받아 온다.이 HTML 파일에서 이미지와 설명을 스크랩 해서 위의 이미지와 같이 이쁘게 출력을 한다. 오픈그래프 실습하기 라이브러리 설치 yarn add axiosyarn add cheerio 스크랩핑 함수 // 1. 입력된 메시지에서 http로 시작하는 문장이 있는지 먼저 찾기! ( find() 등의 알고리즘 사용하기 )function findHttpMessage(input) { // input 문자열을 줄 단위로 나누기 const lines = input.split('\n'); ..
스크래핑과 크롤링 크롤링은 웹을 탐색하며 다양한 페이지를 자동으로 방문하고 콘텐츠를 수집하는 과정이에요. 주로 링크를 따라가며 페이지들을 방문하는 데 중점을 둡니다.스크래핑은 특정 웹 페이지에서 필요한 정보만 추출하는 과정이에요. 단순 탐색보다는 특정 데이터를 뽑아내는 작업에 초점이 있어요. 브라우저 주소창 == API-GET 요청하는 도구 API-GET 요청의 응답이 json이라면 단순히 출력을 하고, html 라면 브라우저가 이를 렌더링 해서 보여준다 스크래핑API-get 요청으로 HTML 응답을 받으면, HTML 안의 데이터를 처리해서 원하는 데이터를 뽑아낸다.
Mongoose 에서 mongoDB 실제 명령어 확인하기Mongoose가 MongoDB와 주고받는 모든 쿼리를 콘솔에 출력해준다.어떤 쿼리가 실행되는지 실시간으로 확인해볼 수 있다.mongoose.set("debug",true) Mongoose 의 모델은 몽고DB 스키마에 영향을 주지 않는다 백엔드에서 몽구스를 사용하여 몽고DB와 데이터 통신을 할 때에는 모델이 필터링 역할을 하지만, 몽고DB 자체의 스키마를 제한하지는 않는다. ( 몽고DB는 스키마리스 ) 따라서 모델에 없는 age 도 몽고DB로 명령을 통해 직접 넣을 수 있다. 몽구스의 __v ( 버전 키 ) 몽구스를 통해서 데이터를 통신하면 __v 속성이 추가되고, ' 배열 ' 을 바꿀 때 마다 __v 의 숫자가 올라간다.사용목적 여러 사용자가 동..
노드몬이 작동되지 않는 이유도커 빌드시에는 소스코드 전체를 이미지로 가져오고 , 그 이미지를 가지고 컨테이너를 실행했다.이렇게 되면 소스코드에 변화가 생기더라도, 이미 이미지는 빌드가 되어있으니까 새로 빌드를 하지 않는이상 컨테이너에 소스코드 변경이 반영되지 않는다. ( 컴퓨터에서 USB 로 파일을 옮기고 연결을 해제하면, 컴퓨터의 파일을 수정해도 USB 에는 반영되지 않는다 )Volumes docker-compose.yaml 파일에 volumes 를 설정해서 소스코드를 동기화하도록 한다. 이렇게 되면 매번 빌드할 필요 없이 소스코드의 변경이 반영되고, nodemon에 의해서 다시 서버가 시작될 수 있다. 노드몬과 Volumes 실습// docker-compose.yaml 파일version : '3...