Basics에 해당하는 글 68

  1. crypto, util 2021.09.21

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


  2. 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(..


  3. 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 //현재 프로세스의 아이디. 프로세스를 여러 개 가질 때 구분할 수 있음(프로세스 강제종료시..


  4. 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..


  5. 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(콜..


  6. 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..


  7. 구조분해 할당 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..


  8. 화살표 함수와 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 ..


  9. var, const, let 2021.09.06

    var vs const, let ES2015부터는 var를 const와 let이 대체한다. 무슨 차이인가? → 블록 스코프(var은 함수 스코프) if, for, while등의 중괄호({}) 안을 블록이라고 한다. if (true) { var x = 3; } console.log(x); //3 출력 if (true) { const y = 3; } console.log(y); //ReferenceError: y is not defined x : 블록은 빠져나갈 수 있지만, function의 중괄호 밖으로는 빠져나갈 수 없다. = 함수 스코프를 존중한다. y : 블록을 빠져나갈 수 없다. = 블록 스코프를 존중한다. const와 let의 차이? const a = 3; a = '5'; //Error const..


  10. 호출 스택, 이벤트 루프 2021.09.02

    코드가 어떻게 실행될 지 호출 스택을 그려 보면 쉽게 파악할 수 있다. 호출 스택은 자바스크립트가 동기적으로 어떻게 작동하는지 파악가능하게 해 줌. 호출 스택 : 맨 아래에 가상의 전역 컨텍스트(크롬에서는 Anonymous라고 함)가 있고, 함수 호출 순서대로 아래에서부터 쌓이며 실행은 역순으로 된다. 함수 실행이 완료되면 스택에서 빠진다. LIFO 구조라서 스택이라고 불린다. stack : 밑에서부터 쌓이고 위에서부터 꺼낼 수 있도록 하는 방식. 호출 스택은 실행 콘텍스트와 밀접한 연관이 있다. 하지만 호출스택만으로는 자바스크립트의 코드 실행순서를 모두 설명할 수 없다. 비동기함수 때문! 대표적으로 setTimeout 이 있다. = 일정 시간 이후에 특정 함수를 실행시키도록 하는 명령어 코드가 백그라운..