분류 전체보기
eth-lightwallet을 사용한 니모닉 지갑 개발
니모닉 지갑 🔎 Goal eth-lightwallet 모듈에 내장되어 있는 함수를 사용하여 개발 랜덤한 니모닉 코드를 생성 니모닉을 시드로 키스토어를 생성 Postman을 사용하여 결과 확인 fs 모듈을 이용한 키스토어 로컬 저장 Advanced - 파생된 주소 생성 💻 Implementation Main Functions - express.js를 활용한 API POST - 랜덤한 니모닉 코드 생성 http://localhost:3000/wallet/newMnemonic // lightwallet 모듈을 사용한 랜덤한 니모닉 코드 생성 API router.post('/newMnemonic', async (req, res) => { // 니모닉 변수 생성 let mnemonic; try { // mnemo..
[Python Algorithm Interview] 03. 리스트, 딕셔너리
리스트, 딕셔너리 리스트 C++에서는 std::vector, JAVA에서는 ArrayList에 해당합니다. 파이썬에서 리스트의 마지막 요소의 .append(), pop()에 대해서는 O(1)의 시간 복잡도를 갖습니다. 반면, 첫 번째 요소를 추출하는 pop(0)은 O(1)의 시간 복잡도라고 생각할 수 있으나, O(n)의 시간 복잡도를 갖습니다. 이 경우, Deque와 같은 자료형을 사용하여 성능을 높일 수 있습니다. 리스트의 주요 연산 시간 복잡도 연산 시간 복잡도 비고 len(a) O(1) a[i] O(1) a[i:j] O(k) i부터 j까지 슬라이싱한 길이인 k만큼 element in a O(n) 순차 탐색이라 n만큼 시간 소요 a.count(element) O(n) a.index(element) O..
[Python Algorithm Interview] 02. 빅오, 자료형
빅오, 자료형 빅오 빅오는 입력값이 무한대로 향할때 함수의 상한을 설명하는 수학적 표기 방법 빅오 표기법의 종류 O(1) 실행 시간 일정한 최고의 알고리즘 O(log n) 로그는 매우 큰 입력값에도 크게 영향을 받지 않는 편 대표적으로 이진 검색 O(n) 입력값과 수행 시간이 비례 이 시간복잡도를 가지는 알고리즘을 선형 시간 알고리즘이라고 함 정렬되지 않은 리스트에서 최댓값 또는 최솟값을 찾는 경우에 해당 O(n log n) 병합 정렬을 비롯한 대부분의 효율 좋은 정렬 알고리즘에 해당 모든 수에 대해 한 번 이상은 비교해야 하는 비교 기반 정렬 알고리즘의 최선의 시간 복잡도 Timesor와 같이 모든 비교를 건너뛸 경우, O(n) 이 될 수 있음 O(n^2) 버블 정렬과 같은 비효율적인 정렬 알고리즘에 ..
[Python Algorithm Interview] 01. 파이썬 언어
파이썬 언어 파이썬은 독립적인 인터프리터식, 객체지향적, 동적 타이핑 대화형 언어입니다. 파이썬 특징 Indent 코드를 여러 줄로 나눠서 쓰는 경우 다음 행과 구분되도록 공백 4칸의 Indent를 추가합니다. Naming Convention 파이썬은 자바와 달리 각 단어를 밑줄(_)로 구분하여 표기하는 Snake Case를 사용합니다. List Comprehension 파이썬의 기존 리스트를 기반으로 새로운 리스르를 만들어내는 구문입니다. result = [n * n for i in range(1, 100) if n % 2 == 0] Generator 제너레이터(Generator)는 루프의 반복 동작을 제어할 수 있는 루틴의 형태입니다. 필요할 때 언제든 값을 생성할 수 있으며, yield와 next(..
[FBI Project] 00. 프로젝트 기획
FBI Personal Project 🐝 프로젝트 주제 스팀잇스타그램(Steemit + Instagram) ⏰ 프로젝트 기간 2022년 6월 2일 ~ 2022년 6월 16일 ( 2주 ) 🔍 프로젝트 배경 및 목표 소셜부분에서 최초의 dApp인 스팀잇(SteemIt)에 관심을 갖게 되었습니다. 게시글과 댓글을 작성하고, 대표적인 인스타그램이나 트위터와 같은 Social에서 좋아요 기능과 유사한 기능을 통해 보상을 받습니다. 이러한 탈중앙 소셜을 DeSo(Decentralized Social)라고 합니다. DoSo가 어떻게 동작하는지 전체적인 구조와 원리를 학습하고 최초의 DeSo dApp인 SteemIt을 클론코딩하는 프로젝트를 기획했습니다. 그러나, 스팀잇의 UI는 개인적으로 좋지 못하다고 생각이 들었습..
GICT INNOVATION SQUARE - BLOCKCHAIN
광주 ICT 이노베이션 - 블록체인 기본과정 회고 이 교육을 수강한 계기 및 목표 수강한 이유가 무엇인가? 블록체인에 대한 기본적인 개념을 정리하고 싶어 수강하게 되었습니다. 이전에도 블록체인 관련 교육과 개인적인 공부를 진행했었습니다. 그러나 블록체인에 대한 전체적인 관심이 증가하다가 크게 감소하면서 저 개인적으로도 관심이 줄어들었습니다. 이번에 제대로 개념부터 개발까지 해보고 싶다는 생각으로 다시 초심으로 돌아가서 처음부터 학습해보자는 생각으로 교육에 참여하게 되었습니다. 이 교육에서의 목표는 무엇이었나? 사실 이 교육과정이 기본 과정이었고, 하루 4시간씩 평일에만 진행했기 때문에 많은 기대와 목표를 잡지 않았습니다. 하지만 두 가지는 꼭 가져가고 싶었습니다. 이전에 공부했던 내용들을 머릿속에서 살려..
[CodeStates's 블록체인 부트캠프] Section 02: 웹 개발 심화 회고
블록체인 부트캠프 섹션 02 - 웹 개발 심화 회고 3월 30일을 시작으로 약 한달 간 백엔드에 대한 기본적인 교육을 수강했습니다. 백엔드는 어떠셨나요? 백엔드에 대한 교육은 CS 지식을 많이 요구했습니다. 기본적인 자료 구조, 네트워크, 데이터베이스 등 학사 수준의 대학 전공자가 4년간 배우는 내용을 한달이라는 짧은 시간에 학습해야 했습니다. 짧은 시간이라 각 부분을 자세히 다루지는 못했지만 취업을 하기위해 가장 필요한 부분들을 학습할 수 있었습니다. Section 02는 크게 4 가지로 나누어서 학습했습니다. 첫째, 네트워크입니다. 웹 풀스택 개발자는 네트워크가 없었다면 탄생하지 못했을 것입니다. web 서버를 구축하고 HTTP API를 통해 통신했습니다. 서버는 express.js를 통해 구축했으며..
이더리움 Ropsten 네트워크 가스비 폭발 현상
리믹스에서 컨트랙트 배포를 하는 과정에서 아무리 가스비를 높여도 다음과 같은 팝업창이 나타난다. 이유를 찾아보니... 현재 이더리움 개발팀에서 이더리움 2.0 관련하여 이더리움 메인 테스트넷인 Ropsten에서 이 병합 업그레이드(일명 The Merge)를 테스트로 인한 현상으로 보인다. 참조 https://news.coincu.com/92397-beacon-chain-experiencing-reorg/
[CodeStates's 블록체인 부트캠프] Section 01: 웹 개발 기초 회고
블록체인 부트캠프 섹션 01 회고 2월 28일 OT를 시작으로 3월 29일인 오늘, Section 01이 마무리 되었습니다. 시간이 너무 빠르게 지나가서 무엇을 학습했는지에 대한 정리가 필요함을 느꼈습니다. 자기주도적 교육방식 코드스테이츠의 교육방식은 자기주도적인 학습을 유도했습니다. UrClass라는 교육 플랫폼을 제공하여 학습할 수 있었습니다. 그러나, 모든 내용을 다 담지 않고 궁금한 부분을 유도하여 직접 검색해보면서 자신의 지식으로 습득해야 했습니다. 직접 자신의 지식으로 만들지 않는다면 같은 기수의 교육생 중 랜덤하게 매칭되어 과제를 수행하는 Pair 프로그램 진행이 어려울 수 있었습니다. 또한, 섹션 1의 마무리인 HA 시험에서 학습한 내용에서 추가적인 문제가 나오면서 자기주도적으로 복습과 추..
[JavaScript] 고차함수(Higher-Order Function)
고차함수 목표 first-class citizen의 세 가지 특징 higher-order functiond의 이해 내장 고차함수에 대한 이해 forEach find filter map reduce sort some every 추상화(Abstraction)에 대한 이해 추상화 관점에서 고차 함수가 갖는 이점 First-class citizen JS에서는 특별한 대우를 받는 first-class citizen가 있습니다. 이 중 하나가 데이터를 다루듯이 사용할 수 있는 함수 입니다. 따라서 함수는 변수에 저장할 수 있습니다. console.log(a(2)); const a = function (num) { return num * 2; } /* * 오류가 발생 - 변수에 함수를 할당한 경우 Hoisting이 ..