일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- logger
- nestjs
- 자료구조
- html
- 인접행렬
- winston
- dfs
- 코딩테스트
- css
- GraphQL
- typescript
- node.js
- TIL
- javascript
- queue
- OOP
- 인접리스트
- Deep Dive
- MySQL
- LifeCycle
- Interceptor
- 프로그래머스
- REST API
- 탐욕법
- 변수
- JWT
- Spring
- bean
- java
- 알고리즘
- Today
- Total
목록FrameWork (54)
처음부터 차근차근
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/FAm3K/btsAPXVBx64/PLlrgHSzBfjjToYxqmtpz1/img.png)
Provider란? Provider(제공자)는 Nest의 기본 개념이다. Service, Repository, helper, factory 등 많은 기본 Nest Class들이 Provider로 취급될 수 있다. Provider는 의존성을 주입할 수 있다.(객체가 서로 다양한 관계를 만들 수 있으며, 이를 해주는 역할을 NestJS의 런타임이 맡고 있다.) 대표적으로 Controller에 요청을 반는 핸들러를 선언하고, 복잡한 로직은 Provider에 위임한다. Nest는 객체지향적은 의존관계를 설정할 수 있기 때문에 SOLID 원칙을 따르는 것을 권장한다. Service 간단한 Service 로직을 만들어보자. import { Injectable } from '@nestjs/common'; import..
Controller란? Controllers are responsible for handling incoming requests and returning responses to the client. -> 들어오는 요청에 반응하고, 적절한 응답을 보낸다. 컨트롤러의 목적은 특정 요청에 응답을 반환하는 것 여기서 routing mechanism이 도입되는데, 이것은 어떠한 요청에 어떤 컨트롤러가 반응할 지 결정한다. 각각의 컨트롤러는 하나 이상의 route를 가지고, 각각의 route는 다른 행동을 수행할 수 있다. Nest에서는 기본적으로 decorator를 통해 컨트롤러를 생성한다. Decorators associate classes with required metadata and enable Nest ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bl3ySw/btsAjVoRFUv/vBNz7HxoYttKQz0hAKgwf1/img.jpg)
NestJS란?? Nest는 효율적이고 확장 가능한 Node.js 서버 측 애플리케이션을 구축하기 위한 Framework입니다. JavaScript를 사용하고 TypeScript로 빌드되며 완벽하게 지원하며 (개발자가 순수 JavaScript로 코딩할 수 있음) OOP, FP(Functional Programming) 및 FRP(Functional Reactive Programming) 요소를 사용할 수 있게 해줍니다. Node.JS 기반의 서버 사이드 Framework이다. 효율적이고 안정적이며 확장 가능한 Server Application을 구축하기 위한 Framework라고 보면 된다. Enterprise급 Application 구축에 적합하다. (Node진영의 Spring 대항마로 나온 느낌..)..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bn1HXO/btsh33L3G86/qojZwH5oEwYIKDsU8hsYqK/img.png)
1. 입력정보와 관련된 보안 Nodejs path parse를 검색해보면 path.parse() 메소드는 파일의 경로와 정보를 객체로 전달해준다. 이를 감추기 위해 path.parse().base를 입력하면 입력 정보를 세탁해줄 수 있다. 오염된 정보를 세탁하는 방법으로는 var filteredId = path.parse(queryData.id).base; 이 부분을 통해 입력정보에 대해 보안을 지킬 수 있다. else { fs.readdir('./data', function(error, filelist){ var filteredId = path.parse(queryData.id).base; fs.readFile(`data/${filteredId}`, 'utf8', function(err, descrip..
Javascript의 객체와 모듈을 이용하여 template 함수들을 정리해보자. 1. 객체를 통해서 정리 function templateHTML(title, list, body, control){ return ` WEB ${list} ${control} ${body} `; } function templateList(filelist){ var list = ''; var i = 0; while(i < filelist.length){ list = list + `${filelist[i]}`; i = i + 1; } list = list+''; return list; } 두 항목 공통적으로 template로 묶여있다. var template = { HTML:function(title, list, body, co..
1. Delete 버튼 구현 Control에 Delete를 구현해보자. Delete 버튼을 링크로 만들면 안된다(Ex 구글 플러그인 시스템, Get 방식) 따라서 Form 형식을 사용해서 만든다. update ` pathname === '/delete_process' 도 추가해주자. else if(pathname === '/delete_process'){ var body = ''; request.on('data', function(data){ body = body + data; }); request.on('end', function(){ var post = qs.parse(body); var id = post.id; fs.unlink(`data/${id}`, function(error){ response..
1. Update 버튼 생성하기 Web 홈페이지와 Create 페이지에는 나오지 않고, 각각의 template에 들어갔을때 나올 수 있도록 control이라는 변수로 변경한다. function templateHTML(title, list, body, control){ return ` WEB ${list} ${control} ${body} `; } var template = templateHTML(title, list, `${title}${description}`, `create update` ); + 누구를 수정할지 querystring을 통해 id로 받을것이다. 2. 수정할 정보 전송 Update_process로 Post를 보낸다. 기존 제목을 넣기 위해서 value="${title}"을 넣어준다. 마..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bmt3Hc/btsh16JAnY1/qKROU1YILkEr89Bax4ZPJk/img.png)
웹 어플리케이션에서 Create 진행해보자. 1. 글생성 UI 만들기 1) Create 버튼 제작 templateHTML 화면상 Create 버튼을 제작한다. function templateHTML(title, list, body){ return ` WEB ${list} create ${body} `; } Create 버튼이 생성된 것을 확인할 수 있지만, 클릭해보면 Not found가 뜨는 것을 알 수 있다. 2) 글생성 페이지 제작 } else if(pathname === '/create'){ fs.readdir('./data', function(error, filelist){ var title = 'WEB - create'; var list = templateList(filelist); var te..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bg8Riu/btsh2P0RaMn/wVJdkardbUV5MfdMMLWjTK/img.png)
Synchronous & Asynchronous (동기 & 비동기) 동기(synchronous) 방식 요청과 결과가 동시에 일어나는 방식으로 요청을 보낸 후 응답을 받아야 다음 동작이 진행된다. 요청과 결과가 한 자리에 동시에 나타나는 것으로 사용자가 서버로 요청을 보냈을 경우 요청에 대한 응답을 리턴받기 전까지는 다른 것을 하지 못하고 기다려야 한다. 특정 프로그램을 구동시키는 데 시간이 5분 소요된다고 하면, 이 프로그램이 구동되는 5분동안 컴퓨터는 다른 프로그램을 동작시키지 못하고, 구동되기를 기다려야 한다. 장점 : 설계가 간단하고, 직관적이다. 단점 : 요청에 대한 결과가 반환되기 전까지 대기해야 한다. 비동기(Asynchronous) 방식 요청과 결과가 동시에 일어나지 않는 방식으로 요청과 결..
반복되는 코드는 함수를 이용하여 정리해 줄 수 있다. 현재 두 부분의 코드가 반복해서 보이는데 templateHTML, templateList를 통해 정리해보자. function templateHTML(title, list, body){ return ` WEB ${list} ${body} `; } function templateList(filelist){ var list = ''; var i = 0; while(i < filelist.length){ list = list + `${filelist[i]}`; i = i + 1; } list = list+''; return list; } 함수를 정리해 준 모습이다. var app = http.createServer(function(request,respons..