전체 글에 해당하는 글 292

  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. Promise, async/await 2021.09.08

    Promise? Promise : 내용이 실행은 되었지만 아직 결과를 아직 반환하지 않은 객체 → 실행된 결과를 가지고 있다가 Then을 붙이면 결과를 반환한다. 실행이 완료되지 않은 경우에는 완료된 이후에 Then 내부 함수가 실행된다. 프로미스는 어떤 동작을 하는 것. (어떤 파일을 읽어라, 어디에 어떤 요청을 보내고 와라) 언제나 실패할 가능성을 염두에 두어야 함. 성공하면 resolve를 호출, 실패하면 reject를 호출한다. const condition = true; //true면 resolve, false면 reject const promise = new Promise((resolve, reject) => { if (condition){ resolve("성공"); } else { reject..


  9. 구조분해 할당 2021.09.06

    https://ko.javascript.info/destructuring-assignment 구조분해 할당? (destructing assignment) = 객체나 배열을 변수로 '분해'할 수 있게 해 주는 문법. const example = { a: 123, b: { c: 135, d: 146 } }; const a = example.a; const d = example.b.d; 위처럼 속성 이름을 변수로 만들어 주는 경우가 있는데, 값들을 꺼내기만을 위해서 example을 선언해 주고 있기 때문에 코드가 깔끔하지 않을 수 있움.. 이럴 땐 아래처럼 구조분해 할당을 활용할 수 있다. example에서 필요한 정보가 들어 있는 값들의 자리에 맞게 변수를 선언해 줄 수 있다. const { a, b: {d..


  10. 화살표 함수와 function 2021.09.06

    function add1(x,y) { return x + y; } const add2 = (x,y) => { return x + y; } 위의 함수 add1은 아래의 add2처럼 간단하게 작성할 수 있다. 함수의 이름은 변수명으로 적어 주고, function 자체는 =>로 대체된다. add2처럼 중괄호 다음에 바로 return이 나오면 중괄호는 생략할 수 있다. const add2 = (x,y) => { return x + y; } const add3 = (x,y) => x+y; 이렇게! add1, add2, add3는 결국 다 같은 함수를 나타낸다. 헷갈릴 수 있기 때문에 return값은 한 번 더 괄호로 묶어 주기도 한다. function not1(x) { return !x; } const not2 ..