본문 바로가기

전체 글

[Node.js 교과서] 3-1. 노드로 Http 서버 만들기, 3-2. fs로 HTML 파일 읽어 제공하기 요청과 응답 이해하기 1. 서버와 클라이언트 클라이언트가 서버로 요청 (request)을 보냄 서버는 요청을 처리 처리 후, 클라이언트로 응답 (response)을 보냄 노드 js는 자바스크립트 실행기 이지 서버가 아님 자바스크립트로 서버를 돌릴 수 있는 코드를 작성해 놓으면 노드가 그 코드를 실행해서 서버가 실행됨 2. 노드로 http 서버 만들기 http 요청에 응답하는 노드 서버 createServer로 요청 이벤트에 대기 req 객체는 요청에 관한 정보가, res 객체는 응답에 관한 정보가 담겨 있음 서버도 프로그램이기 때문에 node js가 createServer를 실행하는 순간 이 서버를 프로세스로 올려줘야함 프로세스에 올릴 때는 설정한 port에 올려야함 포트는 서버 내에서 프로세스를 구분하.. 더보기
[Node.js 교과서] 17-2. 라이브러리 코드 타이핑하기 (passport, squalize) Passport와 squalize 모듈에 대해서 JS 스크립트를 TS로 컨버팅하는 과정에 대한 글 Unknown은 타입스크립트가 Type을 몰라 추론을 못하는 상황이므로 따로 명시해 주자 그리고 아래 처럼 process.env에 정의된 상수들은 타입스크립트가 어떤 타입인지 모르므로 ! 느낌표를 붙여주자 느낌표는 사용자가 타입을 보증한다는 뜻 (아래 코드에서는 왼쪽 그림의 Type중 하나로 보증한다는 ) 아래 그림처럼 KakaoStrategy 생성자를 생성할 때, StrategyOption 타입으로 생성해야해서 매개변수에 ?을 제외한 clientID, clientSecret, callbackURL이 있어야하는데 아래 그림처럼 clientSecret 변수 이름에 ? 을 붙이면 해당 변수의 타입은 있어도 Ok.. 더보기
[Node.js 교과서] 17-1. 타입스크립트 기본 문법 TypeScript (TS) 타입스크립트 (TS)는 자바스크립트 (JS)에 명시적으로 타입이 추가된 언어임 JS에도 문자열, 숫자, 불린, 객체 같은 자료형 타입이 있음 그저 JS 코드를 작성할 때, 명시적으로 타입을 지정하지 않을 뿐! TS 코드는 tsc라는 컴파일러를 통해 JS 코드로 변화할 수 있음 Node JS는 JS만 실행할 수 있으므로, TS 코드를 JS 코드로 변환해야만 실행 가능함 디노 (deno)라는 TS를 실행할 수 있는 런타임이 있긴 하지만 아직 Node JS보다 대중적이지 않아서 많이 사용 안함 - tsc 설치 방법 npm i typescript //js 프로젝트를 ts 프로젝트로 변환 할 수 있음 npx tsc --init //ts config가 생김 - tsconfig.json .. 더보기
[Node.js 교과서] 2-10. 파일 시스템 fs (FileSystem) 파일 시스템에 접근하는 모듈 (1) 파일/폴더 생성, 삭제, 읽기, 쓰기 가능 (2) 웹 브라우저에서는 파일 접근이 제한적이었으나 Node JS는 권한을 가지고 있음 (3) 파일 읽기 예제 (결과의 버퍼는 뒤에서 설명함) const fs = require('fs'); fs.readFile('./read.txt', (err, data) => { if(err) { throw err; } console.log(data) console.log(data.toString()) }) // //이파일을 읽어주세요. Promise를 이용할 수 도 있음 const fs2 = require('fs').promises; fs2.readFile('./read.txt') .then((data) => .. 더보기
[Node.js 교과서] 2-x. 예외 처리하기 프로그래밍의 오류 종류 프로그램에서 오류가 발생하면 시스템 레벨에서 프로그램에 문제를 야기하여 원치 않는 버그를 일으키거나, 심각하면 실행중인 프로그램을 강제로 종료시키기도 함 원인은 다양한데, 내부적인 요인과 외부적인 요인으로 나눌 수 있음 - 내부적인 요인 : 프로그램 설계 로직의 결함 등... - 외부적인 요인 : 하드웨어에 대한 문제 등... 프로그래밍에서는 이러한 오류를 발생 시점에 따라 크게 3가지로 나눔 (1) 컴파일 에러 : 컴파일시에 발생하는 에러 (Ex: 문법 구문 오류 Syntax Error) (2) 런타임 에러 : 실행시에 발생하는 에러 () (3) 논리적 에러 : 실행은 되지만 의도와 다르게 동작 (≒논리 에러 Logic Error) 프로그램 실행 시, 발생하는 오류를 크게 2가지.. 더보기
AWS SDK Node.js SDK (Software Development Kit) 특정 서비스를 프로그래밍적으로 제어하기 편리하도록 제공되는 개발에 필요한 도구들을 의미 라이브러리, 프레임워크, 모듈 같은 용어를 내포하는 상위권 용어라고 볼 수 있음 AWS SDK 모듈 설치 npm install aws-sdk AWS Credentials 세팅 aws 홈페이지에서 aws 세팅을 하려면 계정 정보가 필요함 이와 같이 SDK를 이용하여 서버단 코드에서 aws 서비스와 연동하기 위해선 자격증명(Credentials) Acces Key (아이디) 와 Secret Access Key (비밀번호)가 필요함 공식 가이드에서 서버단에서 aws 서비스와 연동하기 위한 자격증명 얻는 5가지 방법 더보기 1. 서버(EC2)로부터 IAM Roles를 얻.. 더보기
[인간 JS엔진 되기] 2-4. Promise에도 동기 부분이 있다! Promise란 실행은 바로 하되, 결괏값을 나중에 원할 때 쓸 수 있는 것 promse, process.nextTick -> micro, 나머지는 매크로 Queue에서 처리 prmoise 조건은 resolve 함수가 호출 될 ㄸ let a = 2; //new Promise가 실행되면서 Promise 안의 코드는 동기적으로 실행됨, 그 결과를 resolve에 넣음 const p = new Promise((resolve, reject) => { console.log('제일 먼저 실행') //동기 setTimeout(() => { a = 5; console.log(a) resolve(a); },0) }) console.log('딴짓') p.then((result) => { console.log('result.. 더보기
async 비동기 함수의 병렬 처리로 최적화 하기 최적화 되지 않은 코드 2초가 걸림 //getApple과 getBanana라는 비동기 함수가 있고, 각 함수들은 1초를 기다리고 실행됨 // await을 두번을 써서 2초를 기다리게 되는데 만일 이 두 비동기 함수가 서로 연관이 없다면, 시간낭비임 function delay() { return new Promise ((resolve, reject) => { setTimeout(()=>resolve(), 1000); }) } async function getApple() { await delay(); return "apple"; } async function getBanana() { await delay();; return "banana" } async function getFruites() { conso.. 더보기