본문 바로가기

반응형

블록체인 기반 핀테크 및 응용 SW개발자 양성과정 일기

(184)
[124일차 복습] C++ 기초 / 백준 1000번, 1330번, 2439번, 2908번, 2164번 코딩테스트 풀어보기 그동안 써온 언어 JS의 node.js나 python은 build / compile 기능이 없다! 보통 node [파일명] / python [파일명] 명령어를 사용해서 실행시켰는데 요건 안에 이미 build를 자동으로 해주어서 ! C++ 로 간단한 기초 공부해보고 build 해서 리눅스에서 명령어 실행해보기 오늘 배운점 cin - 표준 입력 객체 Console Input 의 약자로 " 콘솔 입력"을 뜻한다. cout처럼 객체로 존재하며, C의 scanf()라고 생각하면 된다. C 언어에서 = standard input / output library 표준 입출력 라이브러리 이와 같이 C++에서는 = input / output stream C 언어에서 입출력 담당 : printf(), scanf() C++ ..
[124일차] basic C++ on Linux 코드작성 제외 IDE를 쓰지않고 build & 결과물 보는 것은 LINUX 환경에서 볼 것! node.js / python 파일 실행시킬 때 명령어 node [파일명] python [파일명] => build / compile을 해주지 않는다. C++ build하는 것만 다운받아서 코드를 build할 예정 ! 요 경로에 있는 파일들은 존재하는 것인가......... => 있다! 현재 경로에서 작업할 폴더 생성 mkdir workspace // 폴더 생성 cd workspace // 입 장 mkdir helloworld && cd helloworld // 생성 & 입장 code . // -> 비쥬얼스튜디오코드가 뜸 wow 코드는 vs 에서 작성 ! hello.cpp 파일 생성 메세지가 안뜨면 아래 수동 설치..
[블록체인 이더리움] ERC-20 & ERC-721 / dApp / 스마트 컨트랙트란? ERC 란 ? ERC : Ethereum Request for Comment - 뒤에 붙는 숫자는 리퀘스트의 숫자 Ethereum, 이더리움이란? 이더리움이란 자체 블록체인을 기반으로 다양한 탈중앙화 된 애플리케이션들이 작동할 수 있도록 고안된 하나의 플랫폼 네트워크이다. (플랫폼이자 이더리움 코인도 존재) Dapp은 이더리움 플랫폼 상에서 '스마트 계약'을 이용하여 쉽고 빠르게 토큰을 발행할 수 있다. 이더리움 블록체인에서는 ETH 이더가 사용되고 이더리움 블록체인 상의 Dapp에서는 또 다른 다양한 분야에 적용될 수 있는 각각의 솔루션으로 그에 맞는 토큰을 발행한다. ERC-20 - 2017년 당시 가장 많이 쓰였던 토큰 - ERC-20 토큰은 '스마트 계약'을 통해 생성 - 일반 거래소에서 거래하고..
[123일차] 블록체인 공개키 비밀키 만들기 src > wallet.js 파일 생성 secp256k1 - 암호화 알고리즘 위 암호 알고리즘을 사용하기 위해 package 설치 (경로 : src ) npm i elliptic wallet.js 에 가져오기 & console.log 찍어서 elliptic이 무엇인지 보기 const ecdsa = require('elliptic') console.log(ecdsa) 아래 ec 라는 아이를 사용할 것 ! const ecdsa = require('elliptic') console.log(ecdsa) const ec = ecdsa.ec("secp256k1") console.log(ec) const ecdsa = require('elliptic') const ec = ecdsa.ec("secp256k1") //..
[122일차] 블록체인 작업증명 Proof of Work (POW) 오늘 작업증명 공부 예정 ! block.js 을 주로 수정할 예정 -> 블럭 생성할 때 쉽게 생성하지 못하도록 만들기 -> 요청한대로 블록이 바로 생성되는게 아니라 문제를 풀어서 생성하도록 작업증명이란 ? 컴퓨터 연산을 통해 일정한 hash를 찾도록 하는 작업증명(pow)과정을 거치도록 한다. 작업증명을 통해 특정 해시값을 찾기위해 수많은 반복연산을 수행하도록 함으로써 상당한 시간과 비용이 들게 해서 결국 대량 스팸메일을 보낼 수 없도록 하는게 최초 탄생 이유 (이후 비트코인에 적용됨 by 사토시 나카모토) 1. Header 기존 5가지 내용에 + 2 두 가지 추가 - 문제 난이도 설정 - 문제 몇번 풀었는지에 대한 block.js class BlockHeader { constructor(version ..
[121일차] WebSocket ws로 Server 구현 Http 서버 -> 인터페이스 기능을 수행한다 그동안 만든 js 역할 server.js => 인터페이스 기능 (리모콘과 비슷) network.js => 데이터 연결연결 해서 정보 공유, 소통할 수 있는 백앤드 block.js => 나의 블록들을 저장하는 형태 만드는 공간 오랫만에 js 연습 => console.log 찍히는 순서 1 2 45 src2 > network2.js const WebSocket = require('ws') // 내 자신을 websocket server로 만들겠다. function wsInit(){ const server = new WebSocket.Server({port:6005}) // 인자값을 ws로 받겠다. server.on('connection',(ws)=>{ ws.on(..
[120일차] 블록체인 ws WebSocket 서로의 정보를 공유할 수 있도록 만들기 지난 주 금요일 수업 이어서 1. src2 삭제 2. network.js // 20210906 수업 const MessageAction = { // 블록의 마지막 내용 QUERY_LAST:0, // 0 or "0" string도 상관없다! // 모든 블록의 노드 QUERY_ALL:1, // 실질적으로 추가할지 말지 결정하는 msg RESPONSE_BLOCK:2, } // type에 따라 처리 (reducer와 비슷) function initMessageHandler(ws){ ws.on("message",data =>{ const message = JSON.parse(data) switch(data.type){ case MessageAction.QUERY_LAST: ..
[119일차 복습] 블록체인 네트워크 웹소켓 http ws 웹서버 구축 1) Server - Client Server 구축하기 (Node.js / express) 1) 기본 server 구축 블록체인은 탈중앙화이지만 지금 구축하는 웹서버는 중앙 서버가 존재하는 하이브리드형 블록체인 p2p이다. 웹서버를 구축하는 이유 : 블록 가져오기 / peer / 간단한 기록 / 버전 / 중단 기능을 위함 ! p2p에 대한 자세한 포스팅 https://blckchainetc.tistory.com/333 [블록체인] P2P란? Peer-to-Peer Network 비트코인 처음 개발한 사토시 나카모토의 비트코인 논문에 보면 Peer to Peer 를 찾을 수 있다. P2P (Peer-to-Peer network) 란? = 동등 계층간 통신망으로도 불린다. 순수 P@P 파일 전송 네트워크는 ..
[119일차] 블록체인 네트워크 웹소켓 http ws 웹서버 구축 P2P (Peer to Peer) 구현 방법 -> WebSocket -> socket.io = 웹소켓으로 웹으로 구성할 때 필수적인 구성을 미리 만들어 놓은 패키지 이전 node.js chatting을 만들 때 사용함 기본 기능 외 여러가지 기능이 많다. 처음 사용하는 사람이 사용하기 편하다 -> ws (web socket 약자) 접속에 대한 것만 ex) broadcast, to 블록체인은 두 개의 port가 필요 1) 서버 - 클라이언트 2) 노드끼리 통신 오늘 웹서버 구축의 기초작업 / setting 예정 ! 1) server - client http 서버 먼저 만들기 with express express 설치 **** 터미널 경로 src 에서 npm i express src > server.js 파..
[118일차 복습] 블록체인 새 블록 추가, 연결하고 검증하기 src > block.js 1. AddBlock 새로운 block 추가하는 함수 // 새로운 block을 간단히 추가하는 함수 function addBlock(){ const newBlock = nextBlock(data); if(isValieNewBlock(newBlock, getLastBlock())){ Blocks.push(newBlock); return true; } return false; } 2. newBlock 새로운 블록을 생성하는 함수 // 다음 블럭(nextBlock)의 header와 body를 만들어주는 함수 function nextBlock(data){ // 이전 block 가져오기 const prevBlock = getLastBlock(); // Header const versio..
[118일차] 블록체인 새 블록 추가, 연결하고 검증하기 1. Adding block // 요 아이가 다음 블럭의 header와 body를 만들어주는 함수 function nextBlock(){ } // 얘는 단순히 Push만 할 것 ! function addBlock() { // new header 만들어서 => new block(header, body) // 마지막 block 가져오기 } 새로운 블록을 생성할 때 필요한 이전 블록의 정보들 : index, previousHash 및 현재 블록의 정보들 function createGenesisBlock() { // header 만들기 - 5개의 인자값이 필요해! version, index, hash, time, merkle.. const version = getVersion(); const time = get..
[117일차 복습] 블록체인 제네시스 블록 만들기 with JavaScript 블록체인 블록 만들기 첫 블록, = Genesis block 은 개발자가 하드코딩을 해야함 블록의 구성 요소 A block is composed of a header and a body, where a header contains the hash of previous block, a timestamp, Nonce and the Merkle root. The Merkle root is the root hash of a Merkle tree which is stored in the block body. 제네시스 블록, Genesis Block 만들기 1. 기본 세팅 사용할 폴더 안에서 * 경로 주의 (이제 만들 src 폴더의 상위 폴더에 들어가서 npm 실행 ) npm init - src 폴더 생성 > bl..
[116일차 복습] 리눅스/셸Shell script if문, for문, 반복문, break, continue 조건문 if 1. 꼭 숫자 연산이 아니라 명령어도 가능! cd ~ mkdir new // "new" 라는 폴더 새로 생성 cd new // new 폴더에 입장 vi practice1.sh // 파일 생성 아래 코드 작성 sh practice1.sh // 파일 실행 -> ls -l 의 결과물이 있으면 출력됨 2. 숫자 연산 꺽쇠 대신 아래와 같이 쓴다 연산 6가지 == -eq != -ne = -ge 위의 6가지 다 사용해보기 3. if 문으로 폴더를 찾아보기 ! -> 없으면 만들기 * home / new 폴더 안에 log 폴더 현재 없는 상태 현재 경로 : ~/new vi practice3.sh 아래 코드 작성 sh practice3.sh => new / log 가 새로 생김 if 파일 / 폴더..
[117일차] 블록체인 제네시스 블록 만들기 with JavaScript 블롴체인 개념 설명 - 네트워크 (http, socket..) - 분산원장 (데이터를 저장하는 코드) - hash sha 256 -> JWT - 단반향 암호화 ( 자리수는 고정되어 있다.) - 머클 (Merkle) - 작업증명 (pow) = 마이닝 Merkle 사용 이유 : 너무 많은 노드(블록)들을 찾기에 리소스의 낭비가 크고 효율성이 떨어짐 (완전탐색) => merkle 사용으로 연결된 데이터 중 찾고자하는 데이터를 효율적으로 찾을 수 있음. 이제 위의 내용대로 하나하나 만들어보기 1) version 가져오기 src 폴더 생성 src 폴더 cd 들어가기 전, (src의 상위 폴더 경로에서) 아래 명령어 실행 npm init src > block.js 생성 package.json 파일을 불러와서 con..
[116일차] SHELL SCRIPT on Linux 기본 구문 if , for문 / blockChain 개념 조건문 if - js 보다 조금 더 어려울 수도 ! : 직관적이지가 않다. - 조건 비교연산자 : 숫자일 때와, 문자열일 때가 다르다. windowsd terminal 옵흔 cd ~ cd scripts //어제 만든 폴더 vi practice7.sh // 새 파일 열기 아래 코드 입력 , 저장 sh practice7.sh // -> ls -l의 내용이 쭉 나옴 숫자 비교 연산 6가지 == -eq != -ne = -ge -> 요 것들로 연습해보기 => 참 / 거짓 폴더 찾기 조건 걸어보기 vi practice9.sh -d (directory) ~ (home) /scripts/log 'log'라는 폴더가 있는지 확인 log 폴더를 만들어주기 (현재 scripts에 log 폴더 없음 ) 파일 찾기 조건 걸기 ..
[115일차 복습] 리눅스 기초 Ubuntu 입/출력 및 기타 기본 명령어 공부 환경변수란? 우리가 컴퓨터로 특정 OS (운영체계) 안에서 실행하는 게임, 인터넷 서핑, 제어판, 그림판, 메모장 등은 모두 os 프로그램에 의해 실행되는 자식 프로세스이다. 이 때, 해당 프로세스를 실행시키기위해 참조하는 변수가 = 환경변수이다. - os에서 자식프로세스들을 생성할 때 참조하는 '변수들' - 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임 ex. Path 라는 변수 - os가 어떤 프로세스를 실행시킬 때, 경로를 찾는데 이용 - 즉, 환경의 조건을 정하는 것 - 리눅스 환경에서 export 를 붙여서 변수를 지정 = 환경변수를 절대적으로 정하기 * export 는 변수 생성 + 수정 함께 쓰임 ex) 변수 앞에는 $를 붙인다. ↘↘ 전역변수 만드는 법 bash 에..
[115일차] 리눅스 ubuntu 입/출력 windows terminal 로 들어가기 ! (여러 창 띄우기 가능) 환경 변수란 ? Path OS에는 환경변수가 기본적으로 존재 윈도우 - 시스템환경변수 검색 리눅스 - env 입력 -> 환경변수 내용이 쭉 나옴 ! port 쓸 때 환경변수 사용했음! server > server.js 들어가서 아래처럼 변경함 export NODE_ENV=8080 node라는 애는 컴퓨터에 있는 내용을 가져올 수 있구나! node.js != 웹서버 node.js = JS로 컴퓨터를 조작할 뿐.. 진짜 웹서버를 만드는 것은 = express process는 무엇을 가지고 있는지 쳌 (OS에 따라 내용 다를 것) process: 운영체제별로 내가 운영한 ~ 결과물 return vi test console.log(proce..
[114일차] Next Redux - 동적라우팅, infinite스크롤이벤트 1. 기본 npm npm init npm i react react-dom next 2. pages 폴더 - index.jsx import Raact from 'react' const Idex =()=>{ return ( NEXT ! ) } export default Index 3. packages json { "name": "next0827", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dev":"next dev", "build":"next build", "start":"next start" }, "author": "",..
[112-3일차 복습] 운영체제, 커널, 리눅스, 쉘 (Shell)이란? OS, 운영체제란? - 컴퓨터에서 일어나는 모든 동작을 제어 - 다양한 소프트웨어 및 하드웨어와 같은 컴퓨터의 모든 *자원 관리 - 운영체제 : 컴퓨터 내에 있는 시스템 소프트웨어 프로그램의 집합 => 컴퓨터 시스템의 자원들을 효율적으로 관리하여, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 묶음 - 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종 - 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공 - 하드웨어 기능으로는 : 입/출력 및 메모리 공간 할당 - 운영체제 프로그램은 : 응용프로그램과 하드웨어 사이의 중개자 역할 / 일반적으로 하드웨어에 의해 직접 실행되기도 - An Operating System (O..
[113일차] Linux 리눅스/ 커널/ Shell Script 쉘 스크립트 커스터마이징 SHELL 쉘이 커널을 실행시켜 준다 ls , cp, ln, rn, 등등... 쉘로 프로그래밍도 가능하다. => Shell script 종류 : Bash - 화살표 ↑ 누르면 이전 명령어 나오기 / Tab키 누르면 자동완성 기능 등등을 먼저 함 리눅스를 처음 다운하면 Bash로 깔려 있다! Zsh - Apple 커널 : 컴퓨터의 본체와 소프트웨어를 연결하는 1) 메모리 관리 2) 프로세스 관리 3) 장치 드라이브 (마우스, 모니터, 스피커, 등등 호환) 4) 호출 (스피커 소리, 모니터 화면 출력..) SHELL의 종류 확인하는 명령어 echo // console.log같은 env | grep SHELL $ 가 붙으면 변수를 의미 (SHELL 이라는 변수) Microsoft Store - Windows ..
[112일차] 리눅스 명령어 mv(파일명 변경), cat, |, htop, netstat, 방화벽 풀어 Server 열기 - 웹서버 운영체제 (OS, Operating System) - window - Linux - Unix - Mac (Unix 기반) - CLI (Command Line Interface), 명령 줄 인터페이스 = 명령어 인터페이스 : 웬만하면 요 CLI 터미널을 사용하는 것이 컴퓨터의 성능을 최대치로 사용 할 수 있다. - GUI (Graphic User Interface) : 유저에게 보일 UI 을 구성하는데 컴퓨터 공간을 많이 차지함 리눅스란 ? Linux - 무료 오픈소스 운영체제(OS) - 리눅스 커널을 사용하는 운영체제 - 리누스 토르발스가 미닉스에서 발전시키면서 리눅스 탄생 - 역사상 가장 많은 참여자가 관여하고 있는 오픈 소스 프로젝트 정리본 ↓↓↓ https://blckchainetc.tistory...
[111일차] 그동안 배운 내용 개념 정리 (웹통신, 비동기) Before you die 프로젝트 관련 질문 : 채팅 내용 db 에 담기 ? 그리고 ex) 100개 이상은 자동삭제되게 !? - 메모리 어떻게 쓰는건지 1교시 : 모듈 vs 패키지 vs 라이브러리 vs 프레임워크 https://blckchainetc.tistory.com/313 모듈 vs 패키지 vs 라이브러리 vs 프레임워크 모듈 - 프로그램을 구성하는 소스코드가 들어 있음 (ex. function) - 한 번 잘 만들어 놓은 모듈은 불러와서 재사용이 가능 (by import) - 즉, import ~~~ 요렇게 가져오는 파일들은 모두 모듈 EX) 구구단 2단 blckchainetc.tistory.com 2 교시 : 웹통신 같은 언어를 사용해도 구동하는 곳에 따라 결과물이 다름 ex. node.js ..
[호스팅] aws 탄력적 고정 ip 만들기 / 도메인 주소 연결 / http https 변환 (back end server - nginx) 1) 탄력적 고정 ip 만들기 1. aws - 탄력적ip -> 할당 클릭 - >할당 - > 이름 변경 => 할당된 IPv4 주소 나옴 2. 할당된 내용 -> 주소 연결 -> 인스턴스 선택 -> 프라이빗 ip 선택 (자동으로 뜸) -> 확인 => 탄력적 ip 보기에 보면 인스턴스ID, 연결ID 등등이 생김 할당된 IPv4주소 가 나온다 2) 도메인 주소 연결 * aws route53 에서 도메인을 사면 편리하게 도메인 연결 / SSL 인증서 발급할 수 있다! 1. 가비아 도메인 산 곳 들어가서 -> 해당 도메인 관리 -> 네임서버 설정 2. router53 들어감 3. 호스팅 생성 -> 도메인 / info 입력 -> 레코드 생성 -> 레코드 유형 : A-IPv4 / 값에 back or front 고정ip ..
[100일차] Next 배포 방법 / https 도메인 연결 프론트 서버 amazon ec2 사용 올리기 1 대의 pc에서는 똑같은 port no를 사용할 수 없다. ex) server.js 두 파일 모두 port:80 이라면 -> 에러 오늘 올릴려는 환경 : Next.js (React로 만들어진 프레임워크) 우리는 React 배포는 해봤음 React와 Next 다른 점 : Next 사용 이유 : SSR이 가능하기 때문 (express와 같은 서버가 존재 - db접속과 같은 용도가 아닌 코드를 실행시켜주는 서버) 리액트의 경우 배포할 때 server가 필요했었다 -> NginX (웹서버) '/' NginX 가 요청을 받음 -> /home/ubuntu/[git 저장소명]/index.html NginX 가 할 수 있는 기능은 모두 express에서도 가능! 리액트 특..

반응형