본문 바로가기

programming study/Node.js

(10)
[생활코딩]WEB2-Node.js (10)(2020.12.24) 본 내용은 해당 강의 토대로 작성 API 우리가 사용했던 함수 fs.readFile 은 개발자들이 만들어 놓은 것이다. Node.js의 공식 홈페이지에서 이 함수를 어떻게 사용하고 어떤 목적으로 사용하는지 그리고 인자와 콜백을 받는지 등을 상세하게 설명해 놓았다. 이렇게, 약속된 조작장치 같은 것을 Interface라고 한다. 웹 개발자들은 Interface를 실행시킴으로써 애플리케이션을 만들 수 있게 된다. 이를 프로그래밍 하기 위해서 제공되는 API(Application Programming Interface)라고 한다. API는 프로그래밍 언어를 다룰떄의 조작장치 같은 것이라 어떠한 프로그래밍 언어라도 가지고 있다. 만약, 새로운 언어를 배울 때 조작이 궁금하면 API를 찾으면 된다. http는 웹..
[생활코딩]WEB2-Node.js (9)(2020.12.23) 본 내용은 해당 강의 토대로 작성 App - 입력 정보에 대한 보안 웹 페이지를 관리할 때, 사용자들의 신상 정보가 있는 password.js 가 있다고 하자. module.exports = { id:'jaemin', password:'123456' } 이러한 파일은 절대로 유출되면 안 되는 것이다. 그런데, 만든 웹사이트에서는 매우 치명적인 보안 취약점이 있다. 쿼리스트링의 id 를 통해서 화면을 출력하는 기능이 있다. 이 쿼리스트링에 어떤 사용자가 악의적으로 ../passport를 입력하면 아래와 같이 화면이 출력된다. 이렇게 매우 간단하게 상위 디렉토리로 넘어가서 password.js 를 출력해 버린 것이다. 이에 더해서, 더 상위의 디렉토리로 간다면 컴퓨터 전체의 파일들이 탐색되어 버릴 위험이 있..
[생활코딩]WEB2-Node.js (8)(2020.12.23) 본 내용은 해당 강의 토대로 작성 App - 객체를 이용해서 템플릿 기능 정리 정돈하기 main.js에서 객체를 이용해서 코드의 복잡성을 낮춘다. 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; 위의 두 함수는 template라는 접두어를 가지고 있다. 이렇게, 함수를 만들 때 접두사나 접미사를 사용하는 이유는 같은 것을 그룹핑하기 위해서이다. 이 두 함..
[생활코딩]WEB2-Node.js (7)(2020.12.22) 본 내용은 해당 강의 토대로 작성 App - 글수정 - 수정 링크 생성 이제, 사용자가 수정을 할 수 있도록 update 기능을 추가한다. 전체 템플릿의 틀을 바꾸고 주소에 따른 템플릿 또한 그에 맞게 변경한다. 홈에 있을 때는 update기능을 넣지 않는다. 함수 templateHTML 에 control 인자를 넣는다. function templateHTML(title, list, body, control){ . . ${control} 사용자가 홈 / 에 있을 경우의 템플릿을 수정한다. var template = templateHTML(title, list, `${title}${description}`, `create` ); 사용자가 리스트의 페이지에 있을 경우의 템플릿을 수정한다. var templa..
[생활코딩]WEB2-Node.js (6)(2020.12.19~21) 본 내용은 해당 강의 토대로 작성 HTML-form 지금까지, 데이터 디렉토리에 접근할 수 있는 것은 자기 자신이기 때문에 컨텐츠 생성은 소유자만 할 수 있었다. 지금부터는, 사용자가 서버를 통해서 데이터를 전송하면 컨텐츠를 생성, 수정 삭제를 할 수 있도록 HTML-form을 알아본다. 아래의 명령어와 설명을 보자. : HTML-form을 사용 ​ -action : 각 각의 컨트롤input, textarea에 사용자가 입력한 정보를 submit했을 때 속성이 가르키는 곳으로 전송 : 사용자가 데이터를 입력할 수 있는 컨트롤 생성 ​ -type="text" : 텍스트 상자 ​ -type="submit" : 제출버튼 : 여러줄 입력할 수 있는 텍스트 상자 만들어진 컨트롤들에 위와 같이 입력하면 아래와 같은..
[생활코딩]WEB2-Node.js (5)(2020.12.18) 본 내용은 해당 강의 토대로 작성 Synchronous & Asynchronous 업무를 진행할 때, 보통은 순차적으로 일을 한다. 하나의 일을 끝나면 하나의 일을 착수하는 식으로. 이러한 것을 Synchronous(동기적)이라고 한다. 반면, 어떤일을 누군가에게 시켜놓고 바로 다음일을 처리한다. 이렇게 동시에 일을 처리함에따라 훨씬 효율적으로 일을 진행할 수 있다. 이를 Asynchronous(비동기적)이라고 한다. 아래의 표와 그림을 보면 이해가 잘 될 것이다. 동기적 비동기적 순차적인 실행 병렬적인 실행 Node.js는 명령어를 비동기적으로 처리할 수 있다. 구체적인 예시 두 명령어의 출력을 비교해서 동기와 비동기는 어떤 차이가 있는지 알아보자. console.log('A'); var result ..
[생활코딩]WEB2-Node.js (4)(2020.12.17) 본 내용은 아래의 강의를 토대로 하여 작성하였습니다. 링크:opentutorials.org/course/3332 WEB2 - Node.js - 생활코딩 수업소개 이 수업은 JavaScript를 이용해서 Node.js를 제어해 동적으로 HTML 코드를 생성하는 웹애플리케이션을 만드는 방법에 대한 수업입니다. 수업대상 예를들어 1억개의 페이지로 이루어진 웹사 opentutorials.org 1. 강의 내용 Input과 Output var args = process.argv; console.log(args); console.log("A"); console.log("B"); if(false){ console.log("C1"); } else { console.log("C2"); } console.log("D");..
[생활코딩]Node.js (3)(2020.12.14) 본 내용은 아래의 강의를 토대로 하여 작성하였습니다. 링크:opentutorials.org/course/3332 WEB2 - Node.js - 생활코딩 수업소개 이 수업은 JavaScript를 이용해서 Node.js를 제어해 동적으로 HTML 코드를 생성하는 웹애플리케이션을 만드는 방법에 대한 수업입니다. 수업대상 예를들어 1억개의 페이지로 이루어진 웹사 opentutorials.org 1. 강의 내용 동적인 웹 페이지 만들기 전 시간에 만든 웹 페이지에 명령어를 추가해서 쿼리 스트링에 따라서 바뀌는 기능을 추가한다. main.js의 본문에 var template=''를 생성하고 콤마 사이에 1.html의 텍스트들을 붙여 넣기 한다.(임시로) WEB1 - ${queryData.id} ${queryData..