Unity/서버

0602_ 서버 수업 2

minquu 2021. 6. 2. 13:27
반응형

비구조화 할당

 

객체와 배열로부터 속성이나 요소를 쉽게 꺼낼 수 있다.

 

자바스크립터 배열은 아무거나 다 들어간다.

기본형

 

다 들어감

 

 

 

 

이런식으로도 가능

 

 

 -----

 

프로미스

자바스크립터는 콜백 헬을 극복하기 위해서 프로미스 기반으로 재구성됩니다.

먼저 프로미스 객체를 생성한다.

 

new Promise

 

new라는 키워드로 프로미스를 생성할수있다.  resolve 와 reject를 매개변수로 갖는 콜백함수를 넣어준다.

then과 catch 메서드를 붙일수 있다. 

프로미스 내부에서 resolve가 호출되면 then이 실행

reject가 호출되면 catch가 실행

 

resolve (성공)이 호출되면 then

reject (실패)이 호출되면 catch 실행

 

즉, 성공햇을 때 then 호출 

실패햇을때 catch 호출

 

이전 then의 return 값을 다음 then의 매개변수로 넘깁니다.

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise

 

Promise - JavaScript | MDN

Promise 객체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타냅니다.

developer.mozilla.org

 

 promise.all[프로미스, 프로미스]프로미스를 배열로 받고,

 

두개가 모두 true여야지 then이 실행된다.하나라도 false이면 catch가 호출 

 

 

 

--프로미스 예제

 

 

 

https://www.w3schools.com/js/js_promise.asp

 

 

JavaScript Promises

JavaScript Promises "I Promise a Result!" "Producing code" is code that can take some time "Consuming code" is code that must wait for the result A Promise is a JavaScript object that links producing code and consuming code JavaScript Promise Object A Java

www.w3schools.com

 

1. 프로미스 객체 생성

2. resolve와 reject 매개변수가 있는 콜백을 전달

3. 프로미스 객체가 있는 변수에 then 또는 catach를 붙인다. 

 

---

예제 

----

 

실습 

 

1. 프로미스 객체 생성

2.리졸브 리젝트 매개변수가 있는 콜백함수 전달

3. 변수에 할당

 

4. 기능구현

 

 

5. 변수에 then 함수 사용

 

------

 

async / await 문법을 사용하면 더 줄일 수 있다.

 

마치 코르틴과 비슷하다.

 

await를 함수 내부에서 사용하면서 해당 함수가 async로 되어야한다.

 

 

해당 프로미스는 resolve될 떄까지 기다린 뒤 다음에 로직으로 넘어가게된다.

 

 

------

 

프론트엔드 자바 스크립트

 

AJAX는 어떤 기술이다.  비동기적 웹서비스를 개발하기 위한 기법.

예) 웹페이지가 있고, 어떤부분이 변경이 되어야한다. 기존은 새로고침을 했는데

AJAX를 쓰면 그 부분만 업데이트되게하는 기술을 AJAX라고 한다.

 

XML은 JSon과 비슷한 데이터 태그, 즉 데이터 포멧이다. 하지만 요즘에는 잘 사용하지 않는다.

 

-----

자바스크립터는 스크립터 언어 이므로, 컴파일을 하지 않아도 즉석에서 코드를 실행할수있다.

 

REPL은 직접 cmd에 바로 작성하는 것.

 

우리는 JS파일 실행으로 하고 있따. 비주얼 스튜디오 코드에서

 

-----

모듈로 만들기

노드는 코드를 모듈로 만들수 있다는 점에서 브루아저의 자바스크립트와 다릅니다.

모듈이랑  특정한 기능을 하는 함수나 변수들의 집합이니다.

모듈로 만들어 두면 여러 프로그램에 해당 모튤을 재사용할 수있씁니다.

 

이런 모듈이 많은 생태계가 NPM이다.

 

즉 누가 만들어둔 모듈을 쓸 수 있다.

 

모튤만드는법

 

const odd = '홀수'

const even = '짝수'

module.export = {

    odd, 

     even

};

 

이러면  Var.js 모듈이 생긴다.

 

 

const [odd, even] = require(/var.js)

 

모듈만들기

 

모듈 가져다 쓰기

 

 

 

-----

 

모듈을 여러개 만들어서 받기

 

 

 

checkOddEven; 를 모듈로 또 만들어준다.

 

index.js 를 새로 만들어줘서

 

 

 

func의 모듈을 받아서 사용할수도있다.

 

-----

 

노드 내장 객체 알아보기

 

노드에서는 기본적인 내장 객체와 내장 모듈을 제공합니다.

https://nodejs.org/dist/latest-v14.x/docs/api/

 

Index | Node.js v14.17.0 Documentation

 

nodejs.org

 

1. global 

먼저 global 객체,

전역 객체이므로 모든 파일에서접근할 수 있다.

 

노드에서 전역 객체는 global

윈도우는 windows

 

2.console

https://nodejs.org/dist/latest-v14.x/docs/api/console.html

 

Console | Node.js v14.17.0 Documentation

Console# Source Code: lib/console.js The console module provides a simple debugging console that is similar to the JavaScript console mechanism provided by web browsers. The module exports two specific components: A Console class with methods such as conso

nodejs.org

 

 

다양한 기능들이 있다.

 

-----

타이머

 

타이머 기능을 제공하는 건 global에 있다.

 

----

인터벌

 

 

멈출러면 컨트롤 + c

 

---

 

1초마다 실행이지만,

interval 변수를 

클리어 인터벌를 할 수있다.

 

----

 

__filename  __dirname

 

노드에서는 파일 사이에 모듈관계가 있는 경우가 많아 현재 파일의 경로를 알아야하는 경우가 많다.

 

 

filename은 파일이

dir는 폴더가

 

----

 

지금까지는 모듈.익스폴트로 만들었는데

 

이걸 말고

 

익스폴트. 바로 넣을수있다.

 

사용할때는 이렇게 사용 할 수 있다.

 

 

-----

 

== 는 값 비교

 

=== 값과 타입을 비교함

 

console.log(module.exports === exports) 는 트루로 나온다.

 

---

 

process. 도 있다. 필요하다면 api 보기

 

 

process.nextTick(콜백)

이벤트루프가 다른 콜백함수들보다 nextTick의 콜백 함수가 제일 우선적으로 실행되게 만든다.

process.exit(코드)

실행중인 노드 프로세스를 종료합니다.

 

 

----

OS 모듈

const os = ('./os')

 

---

path

 

폴더와 파일 경로를 쉽게 조작하도록 도와주는 모듈입니다.

 

파일경로를 짤라서 사용하거나, 가져올때 사용한다.

 

---

url 모듈

 

인터넷 주소를 쉽게 조작하도록 도와주는 모듈

크게 두가지 방식이다. WHATWG 와 노드의 주소 체계 2개가있다.

 

---

querystring 모듈

 

? 뒤에 데이터 부분을 쿼리라고한다.

url.parse 를 통해서 ? 부분 뒤를 짤라낼수있다.

 

---

crypto 모듈

 

크립토 모듈을 쓰면 암호화를 도와주는 모듈이다.

 

---

util 모듈

각종 편의 기능을 모아둔 모듈

 

 

 

---

★파일 시스템 접근하기

fs 모듈은 파일 시스템에 접근하는 모듈

파일을 생성하거나, 삭제하거나, 읽거나 할 수 있는 것

폴더를 만들었다가 지웟다가 할 수 도있음

 

무거운 컨텐츠는 CDN 서버에 따로 저장한다. (이건 우리가 만들수 없고, 제공이 된다. 호스팅 비용이 비쌈)

 

리드 파일은  리드파일과 싱크가 있다. // 기본은 async 이다. 만약 동기로 하면 Sync로

 

파일 불러오기,

data 는 0101010 로 있고

텍스트로 볼려면 toString()해야한다.

 

 

 

 

파일을 생성 할  수 있다.

 

---

 

동기 방식으로 파일을 불러오면 

전에 읽을 게 다 읽히기 전에는 넘어가지 않는다.

비동기는 상관없이 동시에 읽는다.

 

★ 버퍼와 스트립 이해하기

파일을 읽거나 쓰는 방식에는 크게 버퍼와 스트림이 있다.

버퍼 -  데이터를 쪼개서 버퍼에 쌓아서, 차곡 차곡 클라이언트 보내는 것

즉, 버퍼링이 심하다는건 아직 버퍼 에서 받지 못한 것

데이터를 모으는 동작 = 버퍼

 

스트리밍 - 데이터를 조금씩 전송하는 동작

 

노드에서 메모리에 저장된 데이터가 바로 버퍼이다.

 

★ 버퍼를 직접다루는 클래스는 Buffer 이다.

즉, 버퍼로 직렬화 역직렬화를 할 수 있다.

 

버퍼를 한번에 보내면 느려지기 때문에

쪼개서 여러번 보내는 방식이 있다. 이를 편리하게 만든것이 바로 스트림

 

 

조금씩 나눠서 잔달하는 조각을 척이라고한다.

 

★ .on 붙이면 이벤트 펑션임 //

 

---

fs는 파일 시스템 조작하는 다양한 메서드를 제공합니다.

폴더를 생성하고 삭제할 수도있다.

 

----

이벤트 이해하기

대부분 new로 새로운 걸 만들때는 대문자로 받는다.

 

 

------

 

★예외처리

 

노드에서는 예외처리가 정말 중요합니다.

서버 통신할떄는 트라이캐치를 많이 사용합니다. 

노드에서는 트라이 캐치가 굉장히 중요하다. 왜냐면 얘네는 비동기로 되어있기 때문에 예외처리를 잘해야한다.

서버는 항상 로그를 찍어야한다. 그래서 콘솔.트레이서를 항상 남깁니다.

 

예외 처리하기

노드는 싱글스레드라서 하나의 스레드를 소중히 여겨야한다.

 

예외처리하는 방법은 대부분 콜백들이 에러를 받게 되어있다.

(err, data) => { }이러식으로 엮여있다.

만약에 err로 묶여 있지 않으면 우리가 try catch로 묶어줘야하낟.

 

문제가 생길수 있는 부분은 에러처리나, 트라이 캐치로 묶어준다.

 

 

반응형

'Unity > 서버' 카테고리의 다른 글

0609 _ 서버  (0) 2021.06.09
0608_ 서버  (0) 2021.06.08
0604_서버 4  (0) 2021.06.04
0603_ 서버 3  (0) 2021.06.03
0601 _ 서버 수업 내용  (0) 2021.06.01