간단 메모, 필기 nodemon 서버코드에 수정사항 생길때 마다 서버를 자동으로 제시작해줌 const express = require('express'); const app = express(); app.set('port', 3000); app.get('/', (req, res) => { res.send('Hello Express'); }); app.listen(app.get('port'), () => { console.log(app.get('port'), '번 포트로 서버 열림'); }); app.set을 통해 서버가 실행될 포트를 지정함 app.get(주소, 라우터)에 대해 주소에 대한 GET요청이 왔을때 어떤 동작을 할 지 적음 요청에 따라 프로토타입 메서드로 post,put,patch,delete..
Backend
REST REpresentational State Transfer ⇒ 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법을 가리킴 여기서 자원이란, 서버가 행할 수 있는 것들을 통틀어서 의미함 주소는 명사로 구성함 주소로는 어떤 동작을 할 것인지 명확하지 않으므로, HTTP요청 메서드를 사용함 GET 서버 자원을 가져오고자 할때 사용함 POST본문에 등록할 데이터를 넣어 보냄 서버에 자원을 새로 등록하고자 할때 사용함 PUT 서버 자원을 요청 데이터로 치환할 때 DELETE 서버 자원을 삭제할 때 OPTIONS 요청을 하기전에 통신 옵션을 설명하기 위해 사용함
SOLID Single Responsibility Principle(SRP) 가장 핵심이며, 가장 지키기 어렵다. ⇒ 클래스는 단 한가지의 변화만 가진다. 즉, 단 하나의 책임만 가진다. 행동(책임) 하나에 연관된 속성들을 엮어 클래스로 만든다. 별개의 행동은 별개의 클래스로 분리한다. 책임을 제대로 만든다는 것은 행동 단위의 명세를 만드는 것과 비슷하다 ⇒ interface를 잘 설계하는 것 여기서 중요한 것은 하나의 책임 뿐만 아니라, 분리된 두 클래스간의 관계 복잡도 역시 줄이도록 설계하는 것이다. Open-Closed Principle(OCP) 소프트웨어는 변경에는 닫혀있되, 확장에는 열려있어야 한다. 추상화를 얼마나 잘하냐에 따라서 갈리게된다. → 추상클래스를 통해 구현 OCP를 위한 조언 모든..
데이터 모델링의 이해 모델링의 정의 ⇒ 다양한 현상에 대해 일정한 표기법에 의해 표현해 놓은 모형 Webster 사전 → 가설적, 일정 양식에 맞춘 표현 해 → 어떤 것에 대한 예비표현, 그로부터 최종 대상이 구축되도록 하는 계획으로서 기여하는 것 ⇒ 현실세계를 단순화 시킨 표현 ⇒ 사물, 사건에 대한 양상이나 관점을 연관된 사람이나 그룹을 위해 명확하게 하는 것 ⇒ 모델이란 현실세계의 추상화된 반영 모델링의 3가지 특징 추상화 : 현실세계를 일정한 형식에 맞추어 표현 단순화 : 복잡한 현실세계를 특정 표기법이나 언어로 표현하여 쉽게 이해할 수 있게함 명확화 : 대상에 대한 애매모호함을 제거하고 정확하게 현상을 기술함 모델링을 계획/분석/설계시에 사용하고, 이후에 구축/운영에서는 변경과 관리의 목적으로 ..
하나의 쿼리에서 SELECT문 안에 또 다른 SELECT문이 있는 경우, 안에 포함된 SELECT문을 서브쿼리라고 한다. 서브쿼리의 유형 메인 쿼리의 어느부분에 위치하는가에 따라 구분하기도 하고 메인쿼리와의 연관성에 따라 구분하기도 합니다. 스칼라 서브쿼리 SELECT 절에 있는 서브쿼리 파생 테이블 FROM 절에 있는 서브쿼리 WHERE 절의 서브쿼리 메인쿼리와 서브쿼리의 연관성에 따라 다음 두가지로 분류 1. 연관성 있는 서브쿼리 : 메인쿼리와 서브쿼리를 조인하는 경우 2. 연관성 없는 서브쿼리 : 메인쿼리와 서브쿼리를 조인하지 않는 경우 스칼라 서브쿼리 단일 칼럼이 와야하며, 여러 개의 칼럼을 기술 할 수 없다. 또한, 단일 건(로우)를 반환해야 하고, 여러 로우를 반환하면 오류가 발생한다. 그래서..
내부조인 DB내에서 조건이 동일한 컬럼에 대한 정보를 조회하는 방법 방법 1. inner join table 을 통해 조회 예시 use world; select a.name, count(*) from country a inner join city b on a.code=b.CountryCode group by a.name with rollup order by 1; 2. from과 where을 통해 조회 use world; select a.name, count(*) from country a, city b where a.code=b.CountryCode group by a.name with rollup order by 1; 둘은 동일한 결과를 가져옴 country 테이블과 city 테이블에서 code와 Co..
SELECT는 DML중 가장 자주 사용하는 명령어로, DB에서 필요한 값을 추출하는 명령어이다. 구문은 SELECT [원하는 속성들] FROM [어떤 테이블] WHERE [조건] ORDER BY [어떤 속성으로 정렬할 것인지] [ASC/DESC : 오름차/내림차] LIMIT [몇개]; 이런식으로 구성된다. 원하는 속성들이 여러 테이블에 있는 경우 테이블명.속성명으로 사용한다. 이제 프로그래머스 SQL 문제를 풀어보자. ANIMAL_INS는 동물에 대한 정보다. 이렇게 되어 있을 때 필요한 정보를 SELECT을 통해 뽑아보자. 1. 모든 정보를 ANIMAL_ID 순으로 조회한다. 따라서 SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID; 2. 별거 없다. 이름이랑 보호시작일(D..
데이터베이스는 여러 사람이 공유하고, 사용할 목적으로 통합 관리되는 정보의 집합이다. 논리적으로 연관된 하나 이상의 자료의 모음으로, 내용을 구조화한다. 정의 1. 통합된 데이터 : 자료의 중복을 배제한 데이터의 모임이다. 2. 저장된 데이터 : 컴퓨터가 접근할 수 있는 저장매체에 저장된 데이터이다. 3. 운영데이터 : 조직의 고유한 업무를 수행하는데 존재가치가 확실하고, 없어서는 안될 반드시 필요한 자료이다. 4. 공용데이터 : 여러 응용 시스템들이 공용으로 소유하고 유지하는 자료이다. 데이터 베이스의 특징 1. 계속적인 변화 데이터베이스는 동적인 상태로, 새로운 데이터의 삽입(insert), 삭제(delete), 갱신(update)로 항상 최신의 데이터를 유지한다. 웹을 통해 누군가가 새로 회원가입을..
MTV(Model, Template, View)모델은 장고 프레임 워크에서 사용되는 웹 디자인 패턴이다. 기존 MVC(Model, View, Controller)모델과 이름만 다르고 그 기능은 거의 같다고 해도 무방하다. 장고는 이런식으로 작동한다. 사용자가 url을 요청하면 view에서 model CRUD(create read update delete)를 통해서 db에 접근한다. 그리고 가져온 정보를 template에 렌더링(html)하여 클라이언트에게 응답한다. 그래서 Django를 통해 처음 프로젝트와 어플리케이션을 만들게 되면 기본 파일의 구성이 이런 것이다. 다음 게시글 부터 파일 기본 요소들을 파헤쳐보겠다.