본문 바로가기

웹 프로그래밍

(17)
[Backend] ORM과 Sequelize 데이터 베이스를 사용하다 보면 ORM이라는 말을 자주 들어봤을 것이다. 하지만 저는 처음 들어보기 때문에 이렇게 기록을 남겨요..ㅎㅎ ORM이 뭐야? 객체(클래스)와 관계(관계형 데이터 베이스)와의 설정을 의미한다. 내가 이해한 말로 풀어보자면 ORM을 사용하면 쿼리문을 직접 작성하지 않아도 된다. ORM에서 사용하는 Class가 RDBMS의 테이블과 연결된다고 생각하면 쉽다. Class의 메서드를 사용하는데 테이블에 대한 쿼리문을 실행하는 것과 동일한 행동을 한다!라고 생각하면 될 것 같다. 쉽게 말하면 나 대신 데이터베이스와 대화를 해주는 번역기와 같다. ORM을 왜쓰지? 클래스를 사용하는 것처럼 데이터베이스를 조작할 수 있으니 객체지향처럼 더 직관적이고 로직에 집중할 수 있게 해준다! CRUD를 위..
로그인 - 쿠키와 세션 거의 모든 사이트에는 로그인 기능이 필수적으로 들어가 있다! 로그인이 정확히 무엇일까? 서버에는 많은 클라이언트의 개인적인 정보가 저장되어있다.(특히 사용자가 많은 서비스일수록!) 하지만 로그인이 없으면 누가 요청을 보냈는지 확인하지 못해 다른 사용자의 개인정보를 넘겨줄 수도 있다! 그래서 로그인이라는 인증을 통해서 특정 사용자 요청에 따른 데이터만 골라서 보내주는 것이다!! 다른 사이트를 보면 로그인 한번 하면 유지가 되던데 통신 연결이 계속 되어 있는건가? 아니다. HTTP는 무상태 즉, stateless와 비연결성의 특성을 가지고 있기 때문에 한번 요청을 보내고 받게 되면 연결이 끊어지게 된다. 그러지 않고 계속 연결되어 있으면 서버에 과부하가 걸리게 된다. 그러면 매번 아이디, 비밀번호를 보내 인..
[Database] ERD란 무엇일까? 예전에 학교에서 ERD를 배워본적이 있지만 잘 기억이 나지 않아요ㅜㅜ 그래서 이번에 다시 한번 공부하고 정리를 해보려고 합니다!! 그렇다면 ERD란 무엇일까? ERD는 개체 속성과 개체 간의 관계를 그림 혹은 도표로 표현한 것이다!! 간단하게 관계를 그림,표로 시각화 했다고 보면 될 거 같다!! 데이터의 흐름과 연관성을 이해하는데 매우 중요한 역할을 한다. ERD는 왜 하는거지? ERD는 데이터 모델링에서 개념적인 설계를 할떄 개념 스키마를 만들기 위해 사용된다!! 쉽게 말한면 데이터 모델링을 하는이유가 요구 사항으로부터 SQL문을 얻기 위함인데(꼭 SQL이 목적은 아님) 과정은 다음과 같다. 요구사항 분석 -> 요구사항 분석서 -> 개념적 설계 -> ERD -> 논리적 설계 -> 관계형 모델 -> 물리..
[nginx] nCloud서버에 nginx적용하기 nginx란 무엇일까? 경량 웹서버이다. 클라이언트로부터 요청을 받았을때 요청에 맞는 정적파일을 응답해주는 http 웹서버로 활용된다. Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드밸런서로도 사용된다. 일단 ubuntu18.04에 최신버전의 nginx를 설치해야한다. 최신버전 nginx설치하기 nginx.list 파일을 만든후에 vi /etc/apt/sources.list.d/nginx.list 아래의 내용을 입력해준다. deb https://nginx.org/packages/ubuntu/ bionic nginx deb-src https://nginx.org/packages/ubuntu/ bionic nginx apt 업데이트 및 설치 $ apt-get upda..
[express, nodejs] res.send() VS res.json() 그리고 res.end() express를 쓰다보면 http요청을 받아 res라는 응답객체를 사용한다. 이 res를 이용해 여러 방식으로 클라이언트에게 응답을 보낸다. 오늘은 여러 방식중에서도 비슷한 세가지 방식(res.send, res.json 그리고 res.end)에 대해 알아보자! res.send() res.send()는 다음과 같이 res.send([body]) body를 인자로 받는다 body에 들어갈 수 있는 타입은 Buffer, String, Object, Array이다. // Buffer 객체 res.send(Buffer.from('fansor')) // 객체 res.send({ some: 'json' }) // String res.send('fansor') 위와 같이 여러 타입의 인자를 넣을 수 있다. res.se..
[JavaScript] Bind가 뭐죠? Bind란 무엇일까? 모든 함수의 메소드로 context를 수정하게 해주는 것이다. bind는 함수처럼 호출 가능한 "특수객체"를 반환한다. 이 객체를 호출하면 this가 원하는 형태로 고정된 함수가 반환된다!! let user = { firstName: "John" }; function func() { alert(this.firstName); } let funcUser = func.bind(user); funcUser(); // John 이렇게 바인딩을 시켜주면 func내부의 this는 user를 가리키게 된다!! 신기하다.. let user = { firstName: "John", say(phrase) { alert(`${phrase}, ${this.firstName}!`); } }; let say ..
[Javascript] fetch()로 API 요청 보내기 fetch란? 클라이언트에서 직접 API를 호출해주는것 (브라우저에서 직접 비동기 http통신을 하는것을 Ajax라고 불렸었다.) 브라우저에 내장된 함수로 예전에는 requrest,axios,jQuery같은 라이브러리를 사용해 API를 호출했다. 즉, 프론트엔드에서 백엔드에 요청할때 쓰인다! fetch사용법 fetch(url, options) .then((response) => console.log("response:", response)) .catch((error) => console.log("error:", error)); 첫번째 인자로 URL을 두번쨰 인자로 옵션을 객체로 받는다. Promise객체를 리턴하기 때문에 비동기적으로 실행된다. GET요청 fetch("localhost:3000/api/u..
REST API(그런 REST API로 괜찮은가?) 오늘날 대부분 "REST API"라고 불리는 것들은 REST하지 않다!! 그럼 REST가 뭔데? 컴퓨터 시스템와 인터넷 사이에 상호 운용성을 제공하는 방법 => 즉, 서로 독립적으로 발전이 가능한 형태를 말한다. REST를 만든 로이필딩은 "웹을 망가뜨리지 않고 http기능을 추가하고 싶다"라는 생각으로 만들었다고 한다. 그러면 REST를 지키려면 어떻게 해야돼? Client-Server Stateless Cache Uniform Interface Layered System Code-on-Demand (optional) 를 만족 해야한다. => http만 잘 따라도 1,2,3,5는 지킬 수 있다. => 6은 서버에서 코드를 클라이언트로 보내 실행할 수 있어야 한다. 자바스크립트를 의미하고 필수는 아니다...

반응형