본문 바로가기

전체 글323

블록체인 기술사업 교육 10일차 (JavaScript) async ~ await - callback 함수처럼 비동기화를 동기화시키는 방법 중 하나 - 함수명 앞에 async를 입력함으로써 적용 - async의 리턴값은 항상 프로미스 객체 - await = 프로미스 객체의 수행상태가 완벽히 종료될 때까지 대기하다 그 결과를 반환하는 키워드 (await은 프로미스 객체 앞에 입력함) - await는 async 내부에서만 사용 가능 JavaScript로 KAS(Klaytn API Service) 이용 - npm install caver-js-ext-kas로 작업 폴더 위치에서 패키지 사전 설치 - KAS를 이용하면 기존 방식보다 Klaytn을 더 쉽게 다룰 수 있음 const CaverExtKAS = require("caver-js-ext-kas"); const .. 2023. 4. 14.
블록체인 기술사업 교육 8&9일차 솔리디티(Solidity) 정의 - 블록체인 플랫폼에서 Smart Contract 작성과 구현에 사용되는 계약 지향 프로그래밍 언어 특징 - 정적 타입 언어(Statically Typed) = 컴파일 시 변수의 타입이 결정되는 언어 => 프로그래머가 변수에 들어갈 값의 형태에 따라 직접 타입을 명시 - EVM(Ethereum Virtual Machine) = 이더리움 블록체인 네트워크의 참여자(노드)가 공유하는 하나의 가상 머신이자 이더리움 전체를 작동하는 엔진 - 튜링 완전성 = 가능한 모든 형태의 거래를 코드로 작성할 수 있음 + 컴퓨터 코드 작업마다 수수료인 가스(Gas)를 부과해 악의적인 공격을 방어함 Smart Contract 기본 구조 // SPDX-License-Identifier: GPL-.. 2023. 4. 12.
블록체인 기술사업 교육 7일차 조건문 - if(조건문) {실행문} else if {실행문} else {실행문} - if의 조건문에 bool 형태가 아닌 데이터가 들어오면 해당 데이터가 강제로 bool 형태로 변경하여 데이터의 값이 있으면 true, 없으면 false로 인식 - switch(변수){case 상수: 실행문 break; case 상수: 실행문 break; default: 실행문} - if는 앞선 조건이 만족되면 뒷 조건들은 무시하지만 switch는 break를 설정하지 않으면 뒷 조건들도 실행 기본 출력 메소드 - console.log() = 웹 브라우저의 콘솔창에 출력 ※ console.log()로 콘솔창에 데이터를 출력할 때 ``과 ${}을 이용하면 반복문, 조건문, 함수에서 이용되는 요소들을 간편하게 호출하여 텍스트 .. 2023. 4. 11.
블록체인 기술사업 교육 6일차 PBFT (Practical Byzantine Fault Tolerance) - BFT(Byzantine Fault Tolerance, 비잔틴 장애 허용) = 장애(배신자 노드)가 있더라도 전체의 3분의 1을 넘지 않는다면, 시스템이 정상 작동하도록 허용하는 합의 알고리즘 - PBFT(Practical Byzantine Fault Tolerance, 프렉티컬 비잔틴 장애 허용) = 비동기 네트워크에서 배신자 노드가 f개 있을 때, 총 노드 개수가 3f+1개 이상이면 해당 네트워크에서 이루어지는 합의는 신뢰할 수 있다는 것을 수학적으로 증명한 합의 알고리즘 블록체인 기술 세대 구분 - 1세대(도입기, 2009~2014) = 분산장부 공유 기술, 디지털 통화 발행&유통&거래용으로 사용 => 비트코인 - 2세.. 2023. 4. 10.
블록체인 기술사업 교육 5일차 웹 브라우저와 node.js 차이 - JavaScript는 웹 브라우저가 이해하는 언어가 있고 서버에서 이해하는 언어(node.js)가 서로 다르게 존재 ※ node.js에서는 document가 정의되어 있지 않음 - 웹 브라우저는 웹 페이지를 화면에 띄우는 것이 목적, node.js는 서버 개발 환경 제공이 목적 - 같은 엔진을 공유하지만 다른 런타임 환경을 가짐 변수 선언 규칙 - 식별자는 문자 or 밑줄 or $로 시작해야 함 - 대소문자 구별 - 예약어 사용 불가 - camelCase 장려 - 세미콜론(;)을 입력하지 않아도 오류가 발생하지 않지만 사용하는 것이 장려됨 종류 - var = 기본적인 선언 방식 (처음에 선언한 후 다음에 또 다른 줄에서 같은 변수를 재선언하면 재선언한 변수가 적용) .. 2023. 4. 7.
블록체인 기술사업 교육 4일차 블록체인 시장의 흐름 2015년도 - 비트코인 = 싸이월드의 도토리 같은 것이라는 인식이 대부분 - 코인 송금 및 원화로 출금 가능 - 카드 포인트 비트코인 전환이 가능했었음 - 비트코인 거래소의 거래량이 매우 적었음 2016년도 - 블록체인이란 용어가 퍼지기 시작하고 금융권에서 관심을 갖기 시작 - 프라이빗 블록체인 관심 증가 - 비트코인의 거래량이 적다 보니 블록체인에 집중하는 회사들이 등장함 - 하지만 여전히 '블록체인', '비트코인'은 블랙박스로 여겨졌음 ※ 블록체인에는 시세가 없음 - 코인이 없는 블록체인 비즈니스 출현 => 문서인증, 개인인증, 정품인증 (활성화는 실패) - IOT와 블록체인 융합 ※ 해외 송금 방식 - Push Transaction(즉시 청산, 현금 거래 방식), Pull T.. 2023. 4. 6.
블록체인 기술사업 교육 3일차 SHA256 - 블록체인에서 주로 사용되는 해쉬 알고리즘으로 어떤 값을 입력해도 16진수를 사용하여 256비트의 고정된 64자리 결과값을 출력함 - 단방향 알고리즘 (암호화하면 복호화 불가능) - 0~9, A~F(10~15)까지 사용 => 1A = 16 + 10 = 26 (10진수 기준) - 16진수 기준으로 아스키 코드로 A = 41, a = 61 블록체인 기술 구조 - 블록체인은 P2P 네트워크에서 일정 시간마다 새로운 거래내역을 담은 신규 블록이 형성되어 기존 블록에 계속 연결되는 DB 구조를 가짐 => 원천적으로 이중지불을 방지하고 이체 불가역성을 가짐 - 거래서비스 요청시 많은 자원을 소모하는 작업을 함께 수행할 것을 요구 (PoW) => 네트워크에 대한 공격 예방 및 거래 위변조 방지 - 블록.. 2023. 4. 5.
블록체인 기술사업 교육 2일차 블록체인 기반 암호경제 출현 - 원본 증명 => 암호화 증명으로 원본과 가짜 구별 (위변조 해킹 방지, 개인정보 및 저작권 보호) - 신뢰 매개 => 디지털 세상에서 초신뢰 거래 매개, 유통 수단 (암호화폐, 디지털 자산 등) - 보상 체계 => 디지털 통화로서 탈중앙 발행과 유통 관리, 생성과 거래에 참여자 인센티브(토큰) 제공 블록체인 관련 용어 포크 - 포크(Fork) = 하나의 소프트웨어 소스코드를 통째로 복사하여 독립적인 새로운 소프트웨어를 개발하는 것 - 하드포크(Hard Fork) = 블록체인의 기본 기능 자체를 수정하는 포크 => 기존 문제를 해결하고 이전 블록체인과 전혀 다른 프로토콜을 가지도록 함 - 소프트포크(Soft Fork) = 기존 블록체인의 기능을 일부만 수정하는 포크 코인과 .. 2023. 4. 4.
블록체인 기술사업 교육 1일차 메타버스(Metaverse) 정의 - 가상과 현실이 융합되어 그 경계가 사라진 공간에서 세계관을 공유하는 다양한 주체들이 상호작용하여 경제*사회*문화적 활동을 통해 새로운 가치를 창출하는 세계 유형 - 증강현실(Augmented Reality) = 가상현실(VR)의 한 분야로 실제로 존재하는 환경에 가상 물체를 겹쳐서 보여주는 기술 ex) 포켓몬고 - 라이프로깅(Lifelogging) = 일상적인 경험과 정보를 캡처 및 저장하고 묘사하는 기술 ex) SNS - 거울세계(Mirror Worlds) = 실제 세계를 디지털 형식으로 표현하는 기술 ex) 네이버 지도 - 가상세계(Virtual Worlds) = 디지털 데이터로 가상의 세계를 구축하는 기술 ex) 메이플스토리 블록체인(Blockchain) 정의 .. 2023. 4. 3.
java.util.Deque - java.util 패키지로 deque를 다루기 위한 다양한 메소드들이 포함되어 있음 ※ Deque = Double-Ended Queue의 줄임말로 큐의 양쪽에서 데이터를 삽입과 삭제를 할 수 있는 자료구조 원소 추가 메소드 - add() = 맨 뒤에 원소 추가 (용량 초과 시 Exception 발생) - offerLast() = 맨 뒤에 원소 추가 (용량 초과 시 false 반환) - addFirst() = 맨 앞에 원소 추가 (용량 초과 시 Exception 발생) - offerFirst() = 맨 앞에 원소 추가 (용량 초과 시 false 반환) 원소 삭제 메소드 - remove() = 맨 앞 원소 삭제 (비어있을 경우 Exception 발생) - poll() = 맨 앞 원소 삭제 (비어있을 경우.. 2023. 2. 27.
Java Stream 주요 메소드 - Java의 Collection에는 stream()이 정의되어 있기 때문에 List, Set, Map 등에 .steam()를 통해 스트림 생성 가능 ※ Collection 이외에도 Arrays에도 스트림 생성 가능 - steam() 메소드를 사용하면 반환 데이터 타입이 stream이기 때문에 마지막에 목적에 맞는 타입으로 변환하는 메소드를 입력해야 함 - 단순 for문이 stream 보다 코드는 복잡하지만 속도는 훨씬 빠름 => for문이 더 나온지 오래되어 최적화가 더 잘 되어있음 변환 메소드 - toArray() = 배열로 변환 ※ Stream을 배열로 변환하려면 별도의 메소드 없이 .toArray()로 가능하지만 Collection(List, Map, Set)으로 변환하려면 .collect(Col.. 2023. 2. 27.
java.util.ArrayList - java.util 패키지로 list를 다루기 위한 다양한 메소드들이 포함되어 있음 CRUD 메소드 - ArrayList.add() = 원소 하나 추가 - ArrayList.addAll() = 모든 원소 추가 - ArrayList.clear() = 모든 원소 삭제 - ArrayList.remove() = 해당 원소 삭제 - ArrayList.removeAll(배열) = 해당 배열에 있는 원소들을 지정한 ArrayList에서 삭제 - ArrayList.removeIf(조건) = 해당 조건(람다식)을 만족하는 원소 삭제 - ArrayList.set(인덱스, b) = 해당 인덱스에 있는 원소를 지정한 원소(b)로 교체 - ArrayList.clone() = 지정한 ArrayList 복사 - ArrayList.. 2023. 2. 23.
java.lang.Integer - java.lang 패키지로 숫자 데이터(int)를 다루기 위한 다양한 메소드 제공 ※ Integer = int의 래퍼 클래스 변환 메소드 - Integer.toString(숫자) = 해당 데이터를 String으로 변환 - Integer.parseInt(문자) = 해당 데이터를 int로 변환 - Integer.valueOf() = 해당 데이터를 Integer로 변환 - Integer.intValue() = Integer -> int 변환 수학 관련 메소드 - Integer.max(a, b) = 더 큰 숫자 반환 - Integer.min(a, b) = 더 작은 숫자 반환 - Integer.bitCount() = 2진수로 변환 후 1의 개수 반환 - Integer.compareTo() = 숫자의 크기가 같.. 2023. 2. 23.
Array vs ArrayList - Array(고정 길이)와 ArrayList(가변 길이)는 명백히 다른 데이터 타입 ※ 메소드 반환타입이 int[]이고 answer가 ArrayList 타입일 때 answer.toArray()를 통해 ArrayList를 Array로 타입을 변환해야 함 ※ 반대는 Arrays.asList()를 통해 ArrayList로 변환 가 - Array는 (제네릭) 사용 불가능, ArrayList는 사용 가능 (제네릭에는 primitive 타입이 아닌 wrapper class 입력) - Array에는 int, Integer와 같은 primitive type과 wrapper class 모두 담을 수 있지만 ArrayList는 wrapper class만 가능 ※ wrapper class = primitive type을 .. 2023. 2. 23.
java.lang.String - java.lang 패키지로 문자열 데이터(String)를 다루기 위한 다양한 메소드 제공 변환 메소드 - String.charAt() = 지정 인덱스 위치 문자를 반환 (String -> char 변환) - String.concat(문자) = 지정한 문자를 뒤에 추가로 붙여서 반환 - String.valueOf() = 해당 데이터를 String으로 변환 (데이터 타입이 int일 때 많이 사용) - String.toUpperCase(문자) = 대문자로 출력 - String.toLowerCase(문자) = 소문자로 출력 - String.toCharArray() = 해당 문자를 쪼개서 char[]로 변환 ※ new String(arr[]) = 주어진 char 배열 원소를 모두 합쳐서 하나 String으로 .. 2023. 2. 23.