전체 글

전체 글

    Node.js 의 Crypto - Cipher, Decipher 사용하기

    Cipher를 통해 암호화하고, Decipher를 통해 복호화한다. 암호화와 복호화에 사용되는 key, iv값은 동일해야 한다. 그렇지 않으면 에러가 발생한다. const { createCipheriv, createDecipheriv } = require('crypto'); const stringToBuffer = (str: string) => { const buffer = Buffer.from(str, 'utf8'); return buffer; }; const utilsDecipher = () => { const algorithm = 'aes-192-cbc'; const key = stringToBuffer('a123b456c789dabc0254f123'); // The IV is usually pas..

    NPM에 패키지 배포하고 사용해보기 (+ 타입스크립트)

    NPM에서 라이브러리를 설치받는 일은 매우 빈번했지만, 내가 실제로 NPM에 라이브러리를 배포하는 경험은 없었다. NPM은 개인이나 팀으로 유료 요금제도 제공하여 private하게 패키지를 관리할 수 있는 기능도 제공하고 있기에, 앞으로 사용할 일이 있을 것이라 생각하고 이번에 테스트로 배포를 진행해보았다. https://www.npmjs.com npm Bring the best of open source to you, your team, and your company Relied upon by more than 11 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and ..

    Node.js의 문자열과 바이트 배열 (Uint8Array, Buffer)

    일반적으로 영어 알파벳, 숫자, 특수 기호는 1byte, 한글은 2byte의 크기를 가진다. (utf-8) ES2018부터는 TextEncoder()를 사용할 수 있다. 문자열을 Uint8Array으로 변환하기 const utf8Encode = new TextEncoder(); const encode = utf8Encode.encode('aaaabbbbccccdddd'); console.log(encode); /* Uint8Array(16) [ 97, 97, 97, 97, 98, 98, 98, 98, 99, 99, 99, 99, 100, 100, 100, 100 ] */ // 다시 문자열로 const utf8Decode = new TextDecoder(); console.log(utf8Decode.dec..

    프로그래머스 코딩테스트 연습 - 뒤에 있는 큰 수 찾기 JavaScript

    function solution(numbers) { const answer = []; for(let i = 0; i numbers[i]) { tmp = numbers[j]; break; } } answer.push(tmp); } return answer; } 일단, 맨 처음에 가장 간단한 방법으로 구현했다. 하지만, 역시 시간 초과 문제가 발생하였다. 스택을 사용하여 해결할 수 있다는 조언을 듣고, 다음과 같이 코드를 수정하여 문제를 해결하였다. 값이 증가하는 추세와 하락하는 추세일 때를 구분하여 코드를 작성한다. functi..

    javascript에서 class 사용하기

    ES6부터 자바스크립트에서도 class 문법이 지원된다. 클래스는 객체를 생성하는 탬플릿으로 재사용할 수 있고, 내부의 변수와 메서드를 추상화할 수 있다. class 사용하기 // class 표현식 const Data = class { constructor(name) { this.name = name; } get name() { return "이름은 " + this._name + "입니다."; } set name(name) { if (name.length

    자바스크립트 generator 함수란?

    제네레이터 함수는 ES6부터 지원되는 자바스크립트의 기능이다. 제네레이터 함수를 사용하면, 실행한 함수를 중간에 중단(pause)한 뒤 다시 재개(resumed)할 수 있다. 제네레이터 함수가 사용되는 대표적인 예로는 redux saga가 있다. 중간 중간에 중단점이 있음으로써, 디버깅에 큰 도움이 된다. const generator = function* () { console.log("1st"); yield; console.log("2nd"); yield; console.log("3rd"); yield 3; }; generator genetator 함수는 위와같이 function*() {} 의 형태로 작성할 수 있다. 기존의 함수 선언식에 *을 붙여준 모양새이다. yield는 단순히 표현하면 중단점으로..

    javascript 스코프와 실행 컨텍스트

    자바스크립트의 스코프와 실행 컨텍스트에 대해서 정리하기로 하였다. 선언된 변수가 어디서 어디까지 유효한지에 대해 정확히 알기위해서는 이 내용들을 알아야겠다고 생각하였다. 스코프 (scope) 스코프는 식별자(변수)에 대한 유효범위로, 현재 실행중인 콘텍스트를 의미한다. 🧃 변수 또는 다른 표현식이 해당 스코프내에 존재하지 않으면 사용할 수 없다. 스코프는 계층적인 구조를 갖기에 하위 스코프는 상위 스코프에 접근할 수 있지만, 상위 스코프는 하위 스코프에 접근할 수 없다. const a = 10; { const b = 20; console.log(a); // 10 console.log(b); // 20 } console.log(a); // 10 console.log(b); // Uncaught Refere..

    비트코인 지갑 생성하기 (node.js) 및 잔액 확인

    비트코인은 bip 44, bip49, bip 84와 같이 지갑을 생성하는 표준이 형성되어 있다. 🍸 bip 44는 계층지갑, bip49는 P2WPKH-nested-in-P2SH 기반 계정, bip84는 P2WPKH 기반 계정을 생성하는 표준이다. https://trezor.io/learn/a/what-are-bips-slips https://trezor.io/learn/a/what-are-bips-slips trezor.io 자바스크립트로 비트코인 지갑을 생성하는 코드를 작성하였다. ecpair 라이브러리를 통해서 비트코인 지갑 키쌍을 생성할 수 있다. const bip39 = require("bip39"); const { ECPairFactory } = require("ecpair"); const bi..