Basics에 해당하는 글 96

  1. 예외 처리하기 2021.09.22

    예외(Exception) : 처리하지 못한 에러. 처리하지 못한 에러가 발생하면 노드 스레드가 멈춘다. → 노드는 기본적으로 싱글 스레드이기 때문에, 스레드가 멈춘다 = 프로세스가 멈춘다. ∴ 에러 처리는 필수! 어떻게 할 수 있을까? 1. 에러가 발생할 만한 부분을 try-catch문으로 예외 처리 setInterval(() => { console.log("시작"); try { throw new Error("서버고장났습니다"); //throw한 것을 아래 catch에서 받아준다. } catch (err) { console.log(err); //err를 처리해 준다. } }, 1000); //% node error.js //시작 //Error: 서버고장났습니다 모든 코드를 try-catch로 감싸는 것은..


  2. File System 2021.09.22

    fs(file system) : 파일 시스템에 접근하는 모듈. 파일 및 폴더의 존재여부 확인부터 생성/삭제/읽기/쓰기가 가능하다. 브라우저에서는 파일 시스템에 접근할 수 없지만 노드에서는 접근 가능하다. → 그렇기 때문에 보안상의 이슈를 주의해야 함. readFile //fs.js const fs = require("fs"); fs.readFile("./readme.txt", (err, data) => { if (err) { throw err; } console.log(data); console.log(data.toString()); }); 위 코드를 작성하고 실행하면 같은 폴더(./)에 있는 readme.txt를 읽어온다. % node fs.js //console.log(data)의 결과 //conso..


  3. crypto, util 2021.09.21

    crypto(단방향 암호화) 암호화(평문→암호)는 가능하지만 복호화(암호→평문)는 불가능하다. 단방향 암호화는 대표적으로 해시 기법으로 진행된다. = 문자열을 고정된 길이의 다른 문자열로 바꾸는 방식. ex. 비밀번호가 kimdoodoo라고 했을 때, kimdoodoo를 해시화하면 언제나 rouie로 변경된다. 그리고 이 rouie라는 값만 서버가 기억하고, 사용자가 kimdoodoo를 입력했을 때 rouie로 변경된 값을 읽는 것. → 서버의 데이터가 털려도 복호화를 못하기 때문에 실제 데이터는 안전하다. 양방향 암호화 =대칭형 암호화, 암호문을 복호화할 수 있다. key가 사용되며, 암호화할 때와 복호화할 때 같은 key를 사용해야 한다. 따라서.. key 관리가 매우 중요함. util : 각종 편의..


  4. os와 path 2021.09.21

    os(operation system) 운영 체제에 대한 정보를 os.어쩌구로 가져올 수 있다.process와 비슷함. 참고 링크 const os = require("os"); os.arch(); //process.arch와 동일함 os.platform(); //process.platform과 동일함 os.type(); //운영체제의 종류를 보여줌 os.uptime(); //운영체제 부팅 이후 흐른 시간(초)을 보여줌 os.hostname(); //컴퓨터의 이름을 보여줌 os.release(); //운영체제의 버전을 보여줌 os.homedir(); //홈 디렉토리 경로를 보여줌 os.tmpdir(); //임시 파일 저장 경로를 보여줌 os.cpus(); //컴퓨터의 코어 정보를 보여줌 os.freemem(..


  5. process 2021.09.13

    노드는 파일 시스템에 접근할 수 있는 것처럼 운영 체제 정보에도 접근할 수 있다. 콘솔창에서 node를 켜고 명령창에 process 를 입력하면 프로세스에 대한 각종 정보를 불러올 수 있다. __ : double under = dunderscore $ node > process.version v14.0.0 //설치된 노드의 버전 > process.arch x64 //processor architecture 정보. arm, ia32등일 수도 있음 > process.platform win32 //운영체제 플랫폼의 정보. linux, darwin(맥), freebsd 등일 수도 있음 > process.pid 14736 //현재 프로세스의 아이디. 프로세스를 여러 개 가질 때 구분할 수 있음(프로세스 강제종료시..


  6. Node 내장 객체 (2) - filename, exports, this 2021.09.12

    1. __filename, __dirname (각각 언더바 두번) __filename : 실행한 파일의 주소(경로)를 알려 준다. __dirname : 현재 폴더(디렉토리)의 경로를 알려 준다. 2. module.exports module.exports는 보통 한 가지만 내보낼 때 쓴다. module.exports === exports === {} (빈 객체) 위처럼 module.exports와 exports는 서로 참조 관계이다. 그렇기 때문에, exports에 객체의 속성이 아닌 다른 값(함수 등)을 대입하면 참조 관계가 깨지게 된다. module.exports === exports === {} //여기에 module.exports = { a, b } 해주면 module.exports === expo..


  7. Node 내장 객체 (1) - global, console, timer 2021.09.12

    1. globalThis 노드의 전역 객체로 모든 파일에서 접근 가능하며 생략도 가능하다. console.log, require, setTimeout, module.exports등... 얘네들도 원래 다 global 객체 내에 들어 있는 속성들이다. 2. console 객체 console.log('') : 어퍼스트로피 안의 값을 콘솔에 찍어 준다. console.dir : 객체를 로깅한다 console.time('a') / console.timeEnd('a') : 시간을 로깅한다. → 실행할 코드 위 아래에 적어 주면 해당 코드가 실행이 완료될 때까지의 시간을 알려 준다. 3. 타이머 메서드 setTimeout(콜백 함수, 밀리초) : 주어진 밀리초 이후에 콜백 함수를 실행한다. setInterval(콜..


  8. 노드의 정의, 특성 2021.08.31

    Node의 정의 Node.js는 크롬의 V8(자바스크립트 엔진)로 빌드된 자바스크립트 런타임. 런타임? → 특정 언어로 만든 프로그램들을 실행할 수 있게 해 주는 가상 머신의 상태 = 실행기라고 생각하면 됨 노드는 서버가 아니다. 다만, 노드는 서버의 역할을 수행할 수는 있음. 자바스크립트로 서버의 기능을 수행하는 코드를 짜고 노드로 실행시켜 주면 그 역할을 할 수 있다. 자바스크립트는 브라우저에서 html 에서 스크립트 태크 안에 넣어 주면 브라우저가 html을 읽으면서 스크립트를 함께 읽어주는 방식으로 실행할 수 있었음. → html이 없으면 스크립트를 읽을 수 없었다. 종속되어 있는 느낌. node로 인해 브라우저와 html에 종속되어 사용되어야 할 필요성을 탈출할 수 있게 되었음. Node의 특성..


  9. Hash 2021.08.17

    어떤 페이지에 접근할 때는 URL을 통해 접근할 수 있다. 단, 페이지 안에서 어떤 특정한 부분으로 접근하고 싶을 때는? 예를 들어, 3개의 문단으로 구성된 글이 어떤 페이지(hash.html)내에 있고, 어떤 URL을 통해 그 페이지에 접근했을 때 3번째 문단을 기준으로 접근하고 싶다고 하자. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type s..


  10. fetch API 2021.08.16

    Asynchronous Javascript And Xml : AJAX, 에이작스 비동기 방식의 Javascript와 Xml을 가리킨다. 데이터를 가져올 때 불필요한 정보까지 끌어내는 전체 페이지 리로드 없이 Ajax를 이용해서 필요한 정보만 가져 올 수 있다. → 데이터를 절약할 수 있고 + 싱글 페이지 애플리케이션을 구현할 수 있다. 싱글 페이지 애플리케이션 = 하나의 페이지로 여러 정보를 표현할 수 있는 애플리케이션. ajax를 구현하려면? → fetch API를 사용할 것이다 fetch API의 요청과 응답 클라이언트와 서버가 서로 통신을 할 때 클라이언트가 우선 요청. fetch함수는 첫번째 인자로 전달된 데이터를 서버에게 요청해 준다. fetch('javascript') : 웹브라우저에게 jav..