Programming181 Node.js event eventEmitter 란? 이벤트 처리하기 Stream을 사용하거자 Web Socket을 사용할 때 이벤트를 사용합니다. 이벤트 객체는 개발자가 직접 구현해서 사용할 수 있습니다. Node.js 에서는 기본 모듈로 events 를 지원하고 있습니다. Node.js events Document Event 객체 우선 events 모듈을 가져옵니다. 새로운 객체를 생성해주고, addListener로 새로운 이벤트를 생성해줍니다. 이벤트가 발생했을 때 로직을 구현하는 건 콜백함수로 전달한 로직에서 완성합니다. 이번에는 간단한 예제로 console.log()로 문자열을 출력합니다. 생성된 이벤트를 일으키기 위해서는 emit() 함수를 사용합니다. const EventEmitter = require('events'); const customEvent = n.. 2022. 9. 6. 개발 공부 하기전 알면 좋은 것들 회고록 본격적으로 프로그램 개발 공부를 시작한지 1년이 넘어가고 있다. 진작에 알면 좋았을 것들 많았지만 지금 생각해보면 그 과정들이 다 필요한 과정이 아니었나 하는 생각이 든다. 개발 방향 정하기 프로그램이라고 생각하면 터미널 창에 글자들이 주루룩 나오고 키보드를 계속 쳐가면서 컴퓨터를 사용하는 것만 생각했었는데, 막상 프로그램을 시작하니 방향이 어느정도 보였다. 만약 웹 서비스를 개발한다고 하면 프론트, 백엔드, 데이터베이스, 도커 등을 이해하고 AWS나 AZUR, 헤로쿠와 같은 IaS등을 사용해 배포까지 진행할 수 있다. 이 때 프론트는 리액트를 사용할지 VUE.js를 사용할지 정해야 하고 백엔드도 Express를 사용할지 Django를 사용할지 Spring을 사용할지 결정해야 한다. 만약 모바일 앱을 만.. 2022. 9. 5. Node.js file System 폴더 파일 지우기 폴더 내용 확인하기 Node.js 에서 기본 제공되는 fs 모듈을 가지고 재밌는 기능들을 사용해볼 수 있다. const fs = require("fs").promises; fs.readdir("./testFolder") .then((dir) => { console.log("폴더 내용 확인", dir); dir.forEach((item) => { fs.unlink("./testFolder/" + item); }); }) .then(() => { console.log("파일이 삭제되었습니다."); return fs.rmdir("./testFolder"); }) .then(() => { console.log("폴더가 삭제되었습니다."); }) .catch((err) => { console.log(err); }); fs.readd.. 2022. 9. 4. Node.js Error Handling Object 에러 처리하기 코드를 작성하다보면 100% 에러를 만나게 됩니다. 누군가에게는 불편한 메시지일 수 있지만 개발자 입장에서는 반가운 존재입니다. 코드가 엄격하게 짜질 수록 예외처리를 쉽게 할 수 있고 어떤 부분이 잘못되었는지 친절하게 알려주는 구세주같은 존재이기 때문입니다. 특히 Node.js 환경에서는 1개의 스레드로 작동하는 환경이므로 메인 스레드를 잘 보호하면서 개발을 진행해야 합니다. 메인 스레드가 에러로 인해 멈춰버리면 그 프로그램은 더 이상 사용할 수 없습니다. throw error throw 문을 사용해서 에러가 발생하면 터미널에 띄워줍니다. try { throw new Error("error 발생"); } catch (error) { throw error; } 정상적으로 에러가 발생합니다. Error: e.. 2022. 9. 3. Node.js fs.access fs.mkdir fs.open fs.rename 사용법 Node.js에서 기본 제공되는 FileSystem(fs) 모듈을 사용하면 폴더를 생성하고, 파일을 생성하는 등 디렉토리에 접근하는 로직을 간단하게 구현할 수 있습니다. fs.access(path, options, callback) access 함수는 디렉토리나 파일에 접근할 수 있는 함수입니다. 첫번째 인자로는 접근할 디렉토리 path를 사용합니다. 두번째 인자로는 파일 접근권한에 대한 여부를 체크합니다. F_OK 존재여부 체크 R_OK 읽기 권한 체크 W_OK 쓰기 권한 체크 X_OK 실행 권한 체크 Error 코드 ENOENT는 폴더가 존재하지 않는 경우 발생하는 에러입니다. const fs = require("fs").promises; const constants = require("fs").co.. 2022. 9. 3. Node.js readFile vs readFileSync promise file system module 사용법 Node.js 환경에서 파일을 읽고 쓰기 위한 모듈이 File System(fs) 모듈입니다. 파일을 읽고, 쓸수도 있고 폴더를 생성할 수도 있습니다. Node.js는 1개의 스택을 가진 프로그래밍 언어로 비동기 방식을 사용해 파일을 읽고 쓰게 됩니다. 이 때 필요한 개념이 Promise입니다. fs 모듈에서는 동기로 사용할 수 있는 readFileSync와 Promise 기능을 지원합니다. Read File 먼저 파일을 읽어들이기 위해서는 fs 모듈의 readFile 함수를 사용합니다. fs 모듈의 readFile은 첫번째 인자로 파일의 경로를 입력받습니다. 두번째 인자로는 콜백함수를 전달받아 data를 핸들링할 수 있습니다. const fs = require("fs") fs.readFile('./ne.. 2022. 9. 3. Buffer Stream 이란? Node.js 버퍼 스트림 파이프 사용법 파일을 전송하는 방식에는 크게 2가지 방식이 있습니다. Buffer와 Stream으로 파일을 전송할 수 있습니다. 흔히 유튜브에서 영상을 볼 때 스피너가 계속 돌아가면 "버퍼링이 심하네"라고 합니다. 이 때 파일이 전송되는 속도가 느리다는 것을 의미합니다. 또한 OTT에서 영상을 송출할 때 스트리밍한다고 하는데, 이 때 스트림(Stream)이 파일을 전송하는 방식이 됩니다. 쉽게 이해하면 버퍼링은 영상이 재생될 수 있을 때 까지의 최소한의 데이터를 모으는 과정입니다. 에네르기파를 모은다고 할 수 있습니다. 스트리밍은 송출자가 수신자의 컴퓨터로 데이터를 조금씩 보내는 과정을 의미합니다. 스트림을 할 때 버퍼링이 사용됩니다. Buffer Stream Pipe in Node.js Buffer in Node.j.. 2022. 9. 2. Node.js crypto 비대칭키 대칭키 구현하기 암호화는 프로그램에서 굉장히 중요한 분야고 계속해서 연구가 진행되고 있습니다. 많은 연구자들이 좀더 안전한 암호화 알고리즘을 개발하고 있고, 현재 우리는 알게 모르게 그들의 결과물을 사용하고 있습니다. 예를 들어 AWS에 내가 만든 app을 배포하려고 할 때 사용하는 pem key는 대표적인 비대칭키로 양방향 암호화 알고리즘 RSA를 사용합니다. 암호된 정보의 기본 요소는 다음 4가지가 되겠습니다. 정보의 기능 1. 기밀성(Confidentiality) 정당한 권한이 있는 사용자는 데이터의 내용을 확인할 수 있어야 합니다. 2. 무결성(Integrity) 정보가 전달되는 과정에서 데이터가 위변조 되어서는 안됩니다. 3. 가용성(Availability) 정해진 기간 동안 데이터를 사용할 권한이 있는 사용자.. 2022. 9. 2. Node.js cookie 사용법 (로그인에 쿠키를 사용하면 안되는 이유) 로그인을 구현할 때 cookie를 사용하는 경우가 있습니다. 또한 쇼핑몰 사이트에서 장바구니에 담아놓았던 상품을 다시 접속해도 확인할 수 있습니다. 바로 cookie를 사용하기 때문에 가능한 기능입니다. cookie 작동방식 최초 server에서 cookie를 생성한 후 응답 메세지에 cookie를 태워서 보냅니다. 이 후 클라이언트는 모든 요청에 대해 cookie를 태워서 요청을 보내게 됩니다. 결과적으로 서버는 요청을 보내는 클라이언트를 특정할 수 있게 됩니다. HTTP Stateless HTTP의 가장 큰 특징 중 하나는 stateless 입니다. 즉, 상태값을 가질 수 없다는 특징을 가지고 있습니다. 하지만 우리가 로그인을 하거나 장바구니에 물건을 담을 수 있는 건 cookie를 사용하기 때문입니.. 2022. 8. 27. Mocha Chai framework for testing install Mocha는 Javascript에서 유닛 테스트를 위한 테스트 프레임워크 입니다. 프로덕션 개발을 진행하는 경우 유닛 테스트 => 통합테스트 -> 시스템 테스트 -> 인수 테스트 순서로 테스팅을 진행하게 되는데, 개발자 입장에서 가장 많이 겪게 되는 테스팅이 바로 유닛 테스트와 통합테스트 입니다. TDD가 일반 프로그램 개발에서도 중요하지만, 블록체인에 올릴 컨트랙트 개발에 있어서 유닛 테스트는 필수입니다. 한번 컨트랙트가 배포되고 난 뒤 코드를 수정할 수 없기 때문입니다. 유닛 테스트는 코딩이 완료된 후 최소 단위의 유닛인 함수나 프로시저를 가지고 테스트를 진행하게 됩니다. Mocha 프레임워크 사용 1. 설치방법 Node.js 프로젝트를 실행한 후 npm init으로 초기화를 진행합니다. 테스팅을 위.. 2022. 8. 20. [IPFS] Infura IPFS deprecated, NFT storage 사용법 기존 IPFS에 파일을 업로드하고, NFT 민팅을 잘 하고 있었는데, 이 때 사용했던 엔드포인트가 Infura였다. ipfs.infura.io/ipfs/ URI로 사용하면 되었는데, 2022년 8월 11일 자로 deprecated 되었다. 다른 방법을 찾아야 하는데, Web3 Stroage 또는 NFT Storage가 있다. NFT Storage 설치 방법 NFT Storage는 npm 모듈로 설치를 진행해준다. npm install nft.storage 의존성 관리 모듈을 yarn으로 사용하면 다음과 같이 설치 해준다. yarn add nft.storage NFT Storage 공식 사용 매뉴얼 NFT Storage를 사용하기 위해서는 API Key가 필요하다. API Key는 여기서 받을 수 있다. .. 2022. 8. 17. [에러 해결] Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. Node.js에 axios 요청을 보내는 통로를 proxy로 설정했습니다. React package.json에 "proxy" : "http://localhost:8080/" 형식으로 proxy를 지정해주고, 서버와 통신을 합니다. Git에 코드를 올려두고, 동료분이 클론한 다음 프로젝트를 실행하는데 아래 에러가 발생합니다. Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. 에러 발생 원인 이 에러가 발생하는 이유는 Proxy가 연결할 서버를 찾지 못해서 인것으로 보입니다. 따라서 proxy 설정을 따로 해주는 작업이 필요해 보입니다. 에러 해결 So.. 2022. 8. 16. [Git] 되돌리기 명령어 (restore, reset, clean 사용법) Local Repository에서 작업하다 수정사항을 이전 단계로 돌려야 하는 경우 일일이 수정사항을 찾아서 되돌리기는 시간이 많이 소요됩니다. 수정 사항을 되돌리는 작업은 2가지 단계로 나눌 수 있습니다. Commit 하기 이전 단계에서 수정사항 되돌리기 Commit한 후 이전 단계로 되돌리기 Commit 전 수정사항 되돌리기 작업을 하면서 이미 commit이 되어 있는 파일을 수정(Modification)하는 경우 Changes not staged for commit 이란 항목으로 출력되고, 새로 생성한 파일은 Untracked files 항목에 표시됩니다. 아래에서 Header.jsx파일은 Git에 이미 올라간 파일이며, 수정되었습니다. NewFolder는 아예 새로 생성된 폴더 입니다. Git에 .. 2022. 8. 14. [회고록 ]코드스테이츠 NFT Marketplace 프로젝트 완료 후기 코드스테이츠에서 블록체인 파트가 모두 종료되고, 처음으로 진행되는 첫번째 프로젝트가 완료되었다. 총 4명이 한 팀이 되어 OpenSea 와 같은 NFT Marketplace 서비스를 제작해보는 과제가 주어졌다. 처음 논의했을 때는 Bare-Minimum , Advanced, Nightmare까지 나누고 Advanced까지 진행해볼 계획이었지만 일주일이란 짧은 기간동안 Bare-Minimun까지만 진행했다. Project : OpenSea NFT Marketplace Clone 팀 역할 : 프론트 1명, 백엔드 1명, 컨트랙트 1명, 전체 프로젝트 관리 1명 처음 프로젝트를 진행하는데, 내가 팀장을 맡게 되었다. 전체적인 프로젝트 그림을 그리는데, 시간이 조금 걸렸는데, 결국 NFT를 발행하는 컨트랙트를 .. 2022. 8. 13. IPFS Node.JS에서 사용하기(ipfs-http-client npm) IPFS 데이터 저장소를 Node 환경에서 사용할 수 있습니다. 대표적으로 ERC-721을 발급할 때 파일의 엔드포인트를 아마존 S3에 올리는 경우도 있지만, IPFS에 올리고 해시값으로 반환되는 주소를 활용해 NFT를 발행할 수 있습니다. 1. 모듈 설치 IPFS에 이미지 파일을 읽어와서 업로드 하는 간단한 애플리케이션입니다. fs, express, ipfs-http-client 등 모듈을 가지고 옵니다. ipfs-http-client는 현재 버전 59까지 나와있습니다. 49 이후로는 ESMA 스크립트가 도입되면서 에러가 발생할 가능성이 높습니다. 제가 사용해본바로는 49.0.4버전이 가장 안정적으로 작동하였습니다. const ipfsCLient = require('ipfs-http-client') c.. 2022. 8. 9. 이전 1 ··· 3 4 5 6 7 8 9 ··· 13 다음