본문 바로가기

Programming

(467)
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 9 [worker_threads] 2 앞선 아티클에서 워커 스레드를 사용하는 기본 유형에 대해서 살펴보았습니다. 일반적인 모듈이나 메서드의 활용 패턴이 아니기 때문에 예제 코드 이해가 다소 어려웠을 수 있습니다. 다시 한번 코드를 살펴보면서 확인해 보겠습니다.  const { Worker, isMainThread, parentPort,} = require('worker_threads');if (isMainThread) { // 부모일 경우 const worker = new Worker(__filename); worker.on('message', message => console.log('from worker', message)); worker.on('exit', () => console.log('worker exit..
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 9 [worker_threads] 1 앞선 아티클에서  우리는 노드의 싱글 스레드 사용 구조에 대해서 살펴보았습니다. 잘 기억이 나지 않으면 식당 점원에 비유한 아래 아티클을 다시 한번 살펴보시기 바랍니다.    1. Node.js 핵심 개념 이해 (4) - Single Thread기본적으로 노드는 싱글 스레드 시스템입니다. 우리가 코드를 동시에 실행할 수 없다는 이야기를 앞의 아티클에서 했었는데, 이것 역시 이 영향에서 비롯됩니다. 일단은 스레드 설명을 위해서nozeroslope.tistory.com  그래서 우리는 기본적으로는 노드의 구조가 싱글 스레드를 기반으로 이루어져 있는 것으로 인식하고 학습해 왔죠. 이번 아티클에서는 worker threads를 이용한 멀티 스레딩 방식에 대해서 살펴보겠습니다. 우선, 예제를 살펴보기 전에 알아둬..
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 8 [util] util은 말 그대로 편의 기능을 모아놓는 모듈이라고 보시면 됩니다. 당연히 계속해서 API가 추가되고 있고, 반대로 deprecated되어 사용되지 않는 경우도 많습니다. deprecated는 주로 새로운 기능의 개발로 인해, 기존 기능의 중요도가 낮아지고 사라질 예정이라는 의미죠. 당장 기능을 삭제하는 것은 아니며 이전 사용자들을 위해 남겨두지만 더이상 업데이트도 되지 않고, 없어질 예정이므로 가능한 사용하지 말라는 의미가 되겠습니다.  이번 아티클에서는 util 모듈의 대표적 메서드 두 개를 살펴보겠습니다.  · util.deprecate : 함수가 deprecated 처리 되었음을 알려줍니다. 첫 번째 인수로 넣은 함수를 사용할 때 경고 메시지가 출력되는데, 두 번째 인수로 경고 메시지를 넣습니다..
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 7 [crypto] : 양방향 암호화 양방향 암호화는, 예상했다시피 암호화된 패스워드 문자열을 복호화할 수 있다는 것이 가장 큰 특징입니다. 이 복호화 과정에서는 키(열쇠)가 사용됩니다. 대칭형 암호화에서 암호를 복호화하기 위해서는 암호화 과정에서 사용한 키와 동일한 키를 사용해야 합니다.  아래 예제를 통해서, 양방향 암호화 과정을 살펴보겠습니다. 참고로 암호학 자체에 대한 이해도가 필요한 부분도 있으므로, 일정 부분은 간단하게 읽고 이해하는 정도로 살펴보면 되겠습니다.   const crypto = require('crypto');const algorithm = 'aes-256-cbc';const key = 'abcdefghijklmnopqrstuvwxyz123456';const iv = '1234567890123456';const ci..
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 7 [crypto] : 단방향 암호화 2 앞선 과정에서 단방향 암호화 방식을 살펴보았습니다. 이 과정을 간단히 요약하면, [비밀번호] → [해시 함수] → [다이제스트]의 과정을 거치게 된다고 볼 수 있죠. 단방향이므로 해시 함수에서 다시 비밀번호로 돌아갈 수 없다는 특징이 있다고 했습니다. 4. Node 기능 살펴보기 (4) - 노드 내장 모듈 7 [crypto] : 단방향 암호화 1 암호화는 너무나도 당연한 개념인 것 같지만, 그 구현 방법은 간단하지만은 않습니다. 아무튼, 만약 DB상에 비밀번호가 암호화되지 않은 상태로 저장된다면 DB가 해킹당하는 순간 모든 계정 정보 nozeroslope.tistory.com const crypto = require('crypto'); console.log('base64 : ', crypto.create..
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 7 [crypto] : 단방향 암호화 1 암호화는 너무나도 당연한 개념인 것 같지만, 그 구현 방법은 간단하지만은 않습니다. 아무튼, 만약 DB상에 비밀번호가 암호화되지 않은 상태로 저장된다면 DB가 해킹당하는 순간 모든 계정 정보가 탈취당하겠죠? DB가 해킹당하지 않도록 방어하는 것이 최우선이겠지만, 만일을 위해 암호화를 진행해야 합니다. 암호화 방법 중 우선 '단방향 암호화'에 대해서 먼저 살펴보겠습니다. ○ 단방향 암호화 단방향 암호화는 "복호화(암호화된 문자열을 원래대로 복구시키는 것)가 불가능한 암호화 방식"입니다. 그리고 이 복호화 할 수 없는 방식이기 때문에 암호화가 아닌 '해시 함수'라고 부르기도 합니다. 이에 대한 설명은 아래에서 추가로 진행하겠습니다. 이 단방향 암호화 개념만 들어보면, 원래대로 복구가 꼭 필요한 것이 아닐까 ..
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 6 [dns] 이번 아티클에서는 dns 모듈에 대해서 살펴보겠습니다. 말 그대로 DNS를 다루는 경우에 사용하는데요, 주로 도메인 정보를 이용해 IP 혹은 DNS 정보를 얻고자 할 때 사용합니다. 아래 예제에서는 async/await가 다시 등장하니, 해당 개념도 참고 삼아 리뷰하고 오시기 바랍니다. 2. Javascript ES2015 (7) - async/awiat [1/2] async/await는 노드 7.6 버전부터(ES2017) 추가된 기능입니다. 노드와 같이 비동기 중심의 코드를 작성하는 데 있어서 코드를 간소화하는데 큰 도움을 주는 문법이죠. 우선은 기본적으로 프로미스를 nozeroslope.tistory.com import dns from 'dns/promises'; const ip = await dns..
4. Node 기능 살펴보기 (4) - 노드 내장 모듈 5 [url 2/2] 이번에는 앞선 예제에서 search 부분을 집중적으로 살펴보도록 하겠습니다. 4. Node 기능 살펴보기 (4) - 노드 내장 모듈 5 [url 1/2] ○ url url은, 예상했다시피 인터넷 주소 사용을 도와주는 모듈입니다. url 처리 방식도 여러 가지가 있는데, 현재는 노드 7에서 추가된 WHATWG(단체명) 방식의 url을 사용합니다. 이전부터 사용하던 nozeroslope.tistory.com require('url'); // 생략 가능 const { URL } = url; // 생략 가능 const myURL = new URL('http://www.example.co.kr/audio/movieList.aspx?sercate1=001001000#anchor'); console.log('new ..