본문 바로가기

프로그래밍24

React 프로젝트에서 eject 를 하거나 바닥부터 만들어야 하는 이유 create-react-app 을 써서 만들면 초반에 웹팩 관련 설정을 하지 않아도 되어서 되어서 편리하다고 생각 할 수 있다. toss slash 컨퍼런스의 발표 내용 중에서 CRA로 앱을 만들면 몇가지 설정을 하기 불편해서 하지 않는다는 내용이 있다. 무슨 설정일까 궁금했다. 1. import 경로를 alias 하는데 문제가 있다. import aaa from '@project/component' 이렇게 작성하면 편리하다. import aaa from '../../../../components' 이렇게 작성하는 것은 불편하다. @project/component 이렇게 쓰기 위해서 alias 경로를 수정하려면 tsconfig.json 같은 파일들을 조금 수정해야 한다. 결론적으로 CRA로 만들면 eje.. 2021. 7. 28.
프론트엔드 웹 서비스에서 우아하게 비동기 처리하기 (feat. Toss Slash 컨퍼런스) 문제가 있는 코드 예시 function fetchAccounts(callback) { fetchUserEntity((err, user) => { if(err) { callback(err, null); return; } fetchUserAccounts(user.no, (err, accounts) => { if(err) { callback(err, null); return; } callback(null, accounts); }); }); } 안 좋은 이유 1. err , 성공 경우가 전혀 나뉘어있지 않다. 안 좋은 이유 2. 매번 비동기 호출을 할때마다 에러 처리를 해야한다. 좋은 코드로 바꾼 예 async function fetchAccounts() { const user = await fetchUserE.. 2021. 7. 15.
블록체인 / 이더리움 / 클레이튼 / 트랜잭션 블록체인은 트랜잭션으로 변화하는 상태 기계다 현재 블록은 이전블록의 상태 + 현재 블록의 내용을 담는다. 변경하는 값들을 계속 반영한다. 이전 블록의 최종 상태는 현재 블록의 초기상태이다. 트랜잭션과 가스 트랜잭션의 목적은 블록체인의 상태를 변경하는 것 가스는 트랜잭션을 처리하는데 발생하는 비용 이더리움은 가스비 많이 내면 트랜잭션이 우선 처리 된다. 클레이튼은 가스비 많이 낸다고 우선처리 되지 않는다. 그냥 선착순 ----------------------------------------------------------------------------------------------------------------------- 트랜잭션과 서명 트랜잭션을 보내려면 그 지갑으로 검증할 수 있는 서명이 필요하.. 2021. 7. 14.
블록체인 네트워크 합의 - consensus 블록체인에서는 각각의 노드에 원장을 갖고 있다. 그래서 현재 하려는 트랜잭션이 맞는지 노드들끼리 합의를 한다. POW Proof Of Work - 블록체인에서 신규 블록을 제안하기 위해서 해야 하는 일 작업을 증명하면 신원을 몰라도 신규 블록을 제안할 권리를 가진다. 합의 알고리즘 합의하는 방법이 몇가지 있다. POW 지금의 블록에는 해시 값이 있다. nonce 는 현재 블록을 해시한 값을 바꾸기 위한 임의 값이다. hellonode를 100 번 해시해도 항상 같은 값이 나온다. 1 + hellonode 를 해시하면 다른 값이 나온다. nonce + 을 하면 다른 해시 값이 나오는 것이다. BFT-variants - BFT 기반 합의 알고리즘 - 작은 그룹 (참여 노드가 20개.. 2021. 7. 13.
블록체인 앱 개념도 이렇게 블록체인 노드들이 소통할때 세부적으로는 아래 그림과 같은 구조가 된다. 노드마다 로컬에 블록체인 DB의 복사본을 갖고있다. json rpc를 통해서 노드들끼리 통신한다. client process는 전반적으로 로컬 노드가 이더리움 앱을 실행하도록 하는 주체다. memory pool 은 로컬 메모리다. jvm이 java를 실행한다면 evm은 솔리디티, evm바이트 코드로 작성된 스마트 컨트랙트를 실행한다. 2021. 6. 18.