Basics에 해당하는 글 68

  1. [Express] 에러 처리하기 2021.07.17

    가장 흔한 에러는 존재하지 않는 페이지를 찾았을 때 발생하는 에러. http상에서는 404 Not Found라는 에러를 보내주기로 약속되어 있음. 참고 링크 : https://expressjs.com/ko/starter/faq.html app.use(function(req, res, next) { res.status(404).send('Sorry cant find that!'); }); 끝에다가 위 코드를 추가하면 된다. 근데 왜 끝에다 해야할까? → 미들웨어는 순차적으로 실행되기 때문에 더 이상 실행할 수 있는 상황이 없을 때 끝까지 도착하게 되고, 그 때 에러 처리를 하는 것이다. 링크 양식에는 맞지만 작성한 글 리스트에 없는 글 제목을 불러오려고 했을 때도 에러로 처리해 보자. 45, 46번째 줄의..


  2. [Express] 미들웨어의 실행순서 2021.07.16

    http://expressjs.com/en/guide/using-middleware.html 미들웨어는 여러가지 타입이 있다. 지금까지 사용했던 것은 application-level middleware이다. app. 은 객체가 담겨있고 use, get, post 등의 방식을 통해 미들웨어를 등록할 수 있는데, 그런 식으로 등록된 미들웨어를 의미한다. app.use(function (req, res, next){ console.log('Time:', Date.now()) next() }) → app.use에다가 함수를 등록하게 되면 그 함수는 미들웨어로서 등록된다. 미들웨어의 핵심은 request와 response 객체를 받아서 변형할 수 있다는 것임 +next 호출을 통해 그 다음에 실행되어야 할 미들웨..


  3. [Express] 미들웨어 만들기 2021.07.16

    http://expressjs.com/en/guide/writing-middleware.html 미들웨어는 아래와 같이 만들 수 있다. var express = require('express') var app = express() var myLogger = function (req, res, next) { var myLogger =console.log('LOGGED') var myLogger =next() var myLogger =} → app.use의 변수가 되는 함수는 첫 번째 인자는 request 객체, 두 번째 인자는 response 객체, 세 번째는 next라는 값을 가지고 있는 함수이다. request response를 받아서 그것을 변형할 수 있다. next호출을 통해 그 다음에 실행해야 할..


  4. 보안 2021.06.24

    오염된 정보가 들어올 때 생길 수 있는 문제 어떻게 위험한가? 예를들어 주소 뒤에 /?id=../password.js 등을 치면? → .. = 현재 디렉토리, data 디렉토리의 부모 디렉토리의 데이터를 가져올 수 있다. ..을 더 많이 치면 보다 상위 디렉토리의 데이터를 가져올 수 있게 된다. 어떻게 막을 수 있을까? 참고 링크 path.parse()를 이용해서 디렉토리, 확장자, 파일 이름 등을 알 수 있다. path.parse().base 를 이용하면 경로를 탐색해나갈 수 있는 정보를 세탁할 수 있다. 오염된 정보, 문제의 소지가 있는 정보를 걸러내는것 = filter 오염된 정보가 나갈 때 생길 수 있는 문제 만약 이런 글을 게시하면... 이런 글이 뜨게 된다. 스크립트 태그 내부에 locatio..


  5. 모듈 2021.06.24

    코드를 작성하는 과정에서 코드가 늘어나면 정리하는 과정이 필요하다. (ex. 객체, 배열, 함수 등..) 이러한 정리수단인 객체가 늘어나면 더 큰 틀의 정리 수단이 필요하다. → 모듈(Module) 모듈 : 특정한 기능을 하는 함수나 변수들의 집합 모듈은 파일로 쪼개서 밖으로 내보낼 수 있음 = 모듈로 만들면 여러 프로그램에서 재사용 가능 코드가 길다 싶으면 파일로 잘게 쪼개서 관리하기 쉽게 만들 수 있다는 것~ var M = { v: "v", f: function() { console.log(this.v); }, }; //아래 명령어는 약속이다. module.exports = M; //기능들 중에서 M이 가리키는 객체를 모듈 밖에서 사용할 수 있도록 내보내겠다. → 다른 파일에서 쓰고 싶은 변수들을 m..


  6. 객체 지향 프로그래밍 2021.06.23

    Object Oriented Programming, OOP 객체 지향 프로그래밍. 프로그래밍을 한다 = 데이터 + 데이터를 처리하는 것 데이터를 사용하기 좋게 정리하는 도구 - array, object javascript에서 처리하는 코드가 많아지면 서로 연관되는 것들을 구분하여 그룹핑하기 위해서 각종 내장함수를 사용한다. 함수는 처리해야할 일에 대한 어떠한 정보를 담고 있는 일종의 구문(statement)이자 값이다. 함수를 변수에 넣을 수 있다 = 값이다. var j = function f1() { console.log(1 + 1); console.log(1 + 2); } var i = if(true){ console.log(1); } var k = while(true){ console.log(10)..


  7. JavaScript 객체 2021.06.23

    객체(Object)는... 추상적이고 철학적인 개념이긴 하지만 기능 중심으로 생각하면 쉽다~ Object vs Array 배열은 객체와 함께 정보를 정리정돈하는 수납수단이다. 정보를 정리정돈할 때 순서에 따라서이고 배열의 리터럴은 대괄호([]). 배열에서 각각의 정보들은 고유한 식별자가 있고 그 식별자는 숫자이다. → Array 순서가 없이 정보를 저장하는 최적의 수납수단, 리터럴은 중괄호({}). 숫자로 식별자를 주지 않고 이름으로 줄 수 있다. → Object var members = ["rouie", "effy", "doodoo", "moro"]; console.log(members[2]); //doodoo 출력 var roles = { bird: "rouie", cat: "effy", human:..


  8. 동기와 비동기 2021.06.21

    동기(synchronous) : 하나의 일을 마칠 때까지 기다렸다가 그 일이 끝나면 순서대로 다음 일을 처리하는 것 비동기(asynchronous) : 기다리지 않고 다른 일을 동시에 진행하면서 순서대로 처리하는 것(=효율적이고 복잡하다) https://nodejs.org/dist/latest-v14.x/docs/api/fs.html#fs_fs_readfilesync_path_options 예시로, readFile을 살펴보자. readFile과 readFileSync가 있다. Sync는 callback이 없다. node js는 비동기적으로 처리하는 것을 선호한다. → 동기적 처리를 따로 명령어를 만들어놨으니... fs.readFileSync(path[,options]) //readFileSync cons..


  9. Javascript 함수의 기본 문법 2021.06.20

    Function? 수학에서의 함수와 프로그래밍에서의 함수는 동일하다. 반복적이지만 규칙적이지 않은 코드가 중복되면 코드의 유지보수 및 관리가 힘들게 된다. → 이러한 부분은 이름을 붙여서 함수로 지정할 수 있다. f123() console.log("A") console.log("B") console.log("C") f123() console.log("D") console.log("E") console.log("F") f123() function f123() { console.log(1) console.log(2) console.log(3) } 이렇게! 입력값에 따라서 함수를 다르게 하려면? 함수에는 입력과 출력이 있다. 입력에 따라 다르게 동작하고, 출력에 따라 다양하게 사용하는 방법을 알아보자. 예를들..


  10. Boolean, 비교연산자, 조건문 2021.06.16

    Boolean datatype Comparison operator(비교연산자) Conditional statement(조건문) 이 세가지는 서로 밀접한 관계를 가지고 있다. Boolean ? true와 false 두개의 데이터로 이루어져 있다. True와 False는 Boolean의 데이터로 약속되어 있기 때문에 변수의 이름으로 지정할 수 없다. Comparison operator? + - * / : 이항연산자. 왼쪽과 오른쪽에 있는 값을 처리해서 하나의 값으로 표시한다. == : 좌항과 우항의 값이 같으면 true, 다르면 false를 만들어준다.(2개!!) == 같냐 / === 정확하게 같냐 / = 대입연산자임 > , < : 좌항과 우항의 값을 비교한다. Program = 시간의 순서에 따라 실행되어..