분류 전체보기
-
-
-
[블록체인] Hyperledger Fabric블록체인 2022. 5. 20. 16:06
하이퍼레저 패브릭 전체 구성에 대해 알아보고 이를 예제 코드로 구현해 보도록 한다. 하이퍼레저 패브릭은, 허가형 네트워크 이므로 각 조직을 나타내는 네트워크가 구성돼야 한다. 앞으로 엔도싱 / 커밋 피어 / 오더러 / CA/ 원장/ 블록체인 / 월드 스테이트를 간단히 구현하여 어떻게 상호작용 하는지 알아보도록 한다. 각 구성 요소에 대한 설명은 다음과 같다. 엔도싱 피어 - 클라이언트가 발생시킨 트랜잭션을 계산/보증한 후 리턴 커밋 피어 - 오더러가 보낸 블록을 장부에 기록 오더러 - 보증된 트랜잭션(Read/Write Set)을 받아서 정렬한 후 블록으로 만들어서 커밋 피어에게 전달 카프카 - 오더러가 정렬할 때 사용하는 도구 CA - 피어와 사용자에게 암호화 재료를 만들어 주는 도구 MSP - 허가형..
-
-
[vim] 플러그인 사용하기a 2022. 5. 11. 12:16
쉽게 생각했는데 이런저런 시행착오가 있었다. 단계를 요약하면 다음과 같다. 1. vim Vundle 다운로드 2. vimrc 편집 3. vim 열어서 :PluginInstall로 플러그인 설치 4. 각 플러그인 사용하기 https://vimawesome.com/plugin/cscope-vim Vim Awesome Awesome Vim plugins from across the universe vimawesome.com 위의 사이트는 vim 플러그인들을 정리해 두었다. 원하는 플러그인들을 검색해서 vimrc 파일에 넣으면 된다~! 1. vim Vundle 다운로드 https://github.com/VundleVim/Vundle.vim 1) 깃허브 레포지토리를 클론 git clone https://githu..
-
-
-
[04/25~] C++a 2022. 4. 25. 08:55
04-2 캡슐화 하나의 캡슐로 이뤄진 약이 복용자에게 제공되는 기능은 '재채기, 콧물, 코막힘'의 완화이다. 그런데 이러한 약이 재채기용, 콧물요, 코막힘용으로 나눠져 있다면, 그래서 코감기에 걸렸을 때 세 알의 약을 복용해야 한다면, 이는 캡슐화가 이뤄지지 않은 상황이다. 하나의 목적 하에 둘 이상의 기능이 모여서 하나의 목적을 달성하고 있다. 다시 말해서 캡슐화가 돼 있는 상황이다. #include using namespace std; class SinivelCap{ public : void Take() const { cout
-
-
[그리디알고리즘] 집합 커버 문제 / 강의실 배정 문제a 2022. 4. 17. 11:53
그리디 알고리즘 5. 집합 커버 문제 n개의 원소를 가진 집합이 있고 이 집합의 부분 집합을 원소로 하는 집합이 있을 때, 이 집합의 어떤 원소를 선택하여 합집합을 구하면 원래 집합과 같아지는가? 집합의 부분집합의 합으로 원래 집합을 구하는 문제이다. 예제로 신도시에서 학교르루 배치하는 문제가 나온다. 신도시에 10개의 마을이 만들어진다고 하자. 이 때, 어느 마을에 학교를 세워야 학교의 수를 최소로 하면서 모든 마을이 접근할 수 있는 학교를 세울 수 있을까? 2번, 6번 마을에 학교를 세웠을 때 한 간선으로 모든 노드들이 학교에 갈 수 있음을 확인할 수 있다. 이를 변수로 선언하면 다음과 같다. U={1,2,3,4,5,6,7,8,9,10} //마을(노드) 개수 F={S1,S2,S3,S4,S5,S6,S7..
-
-
[블록체인] 하이퍼레저패브릭 테스트블록체인 2022. 4. 15. 16:37
하이퍼레저 패브릭 환경 구축을 위한 테스트채널을 개설하고 이를 실행해 본다. 환경변수를 설정한다 FABRIC=$GOPATH/src/github.com/hyperledger/fabric 패브릭을 받아 온다. git clone -b release-1.4 https://github.com/hyperledger/fabric $FABRIC cd $FABRIC 경로 지정을 해준다. export PATH=$GOPATH/bin:$PATH make dist-clean all 네트워크를 실행한다. ./network up -끝-
-
[동적계획알고리즘] 플로이드-워셜 알고리즘a 2022. 4. 13. 21:09
그래프의 모든 정점 사이의 최단 거리를 구하는 것이 목표인 알고리즘이다. 다익스트라 알고리즘은 시작 정점에서 모든 정점의 최단 경로를 구하는 알고리즘인데 반해, 플로이드-워셜 알고리즘은 모든 정점에서 모든 정점의 경로르 구하는 알고리즘이다. (와 무슨 소리지) 이렇게 말하면 전혀 알지 못할 알고리즘이다. 그런데 생각해보면 정말 간단하다. 동적계획 알고리즘의 기본 틀을 그래프에 적용한 것이다. 우리가 찾고자 하는 것은 모든 노드를 잇는 최단 경로이다. 그런데 노드에서 노드로 가는 경로는 여러 개의 노드를 거쳐 갈 수도 있다. 당연함. 그렇게 생긴 그래프임. 그렇다면 경유해서 가는 게 비용이 적은지, 직행으로 가는 게 비용이 적은지 고려하면 비교가 가능하다. 알고리즘) allPairShortest input..
-
[동적계획알고리즘] 0/1 배낭 문제 (knapsack)a 2022. 4. 13. 20:54
동적 계획 알고리즘에서 5번째로 나온 알고리즘, 배낭이 일정한 크기로 주어지고, 가방에 들어갈 아이템들이 있다. 각 아이템은 크기가 다양하고 각각의 가치를 갖고 있다. 배낭에 아이템을 담을 때, 아이템을 어떤 걸 넣어야 가장 가치와 크기가 최대인 배낭이 될 수 있을까? 배낭에 넣을 때, 아이템은 크기를 쪼갤 수 없다. 그래서 넣거나(1), 넣지 않거나(0) 해서 0 또는 1의 값만 갖게 된다. 넣을지 말지를 결정하는 것이니, 모든 경우의 수를 세서 그 중 가치와 크기가 최적인 결과를 출력하면 어떨까? 만일 아이템이 n 개가 있다면, n개의 아이템이 넣/ 안넣, 이 두가지 경우의 수를 모두 세는 것이니 2의 n제곱의 수행시간이 소요된다. 그러니까 O(2^n)이다. 그런데 이건 시간이 너무 오래 걸린다. 동..
-
-
[GPU] Accel-sim gpu-app-collection 빌드a 2022. 4. 11. 12:11
1. dependencies sudo apt-get install -y wget build-essential xutils-dev bison zlib1g-dev flex \ libglu1-mesa-dev git g++ libssl-dev libxml2-dev libboost-all-dev git g++ \ libxml2-dev vim python-setuptools python-dev build-essential python-pip 여기서 pip가 install 이 안되는 경우가 있는데, 따로 pip3를 설치한 다음 위의 명령어에서 'python-pip'를 빼면 된다. 그리고 python은 3.x 이상으로 설치돼야 함 pip3 install pyyaml plotly psutil 물론 cuda 툴킷 설치돼 ..
-
-
[블록체인] 프라이빗네트워크 생성a 2022. 4. 8. 20:58
노트북에서 하는 것도 좋은데 일단 구글 크롬 깔아서 메타마스크 구글 익스텐션을 설치해야 한다. 귀찮다. [설치] 1. VM 설치 2. 우분투 설치 3. git 설치 4. go 설치 5. 메타마스크 / 크롬 설치 1. go-ethereum 레포지토리 git clone 3. golang 설치 를 해야하는데 맥에서는 apt 가 안되고 brew로 **해야 한다고 해서 brew install build-essential golang 이걸로 설치해 준다. -- brew 설치하는 법은 여기에 https://stackoverflow.com/questions/66267454/jdk-is-installed-on-mac-but-im-getting-the-operation-couldn-t-be-completed-un
-
-
-
AES on GPGPU-Sima 2022. 4. 4. 19:05
캐플러로 실행해봐도 안됨 이건 안되는 거다 c++ 라이브러리인데, 랜덤 넘버 생성하려고 필요한 듯하다. 파일질라로 서버에 옮겨 주었다. 그 다음 docker cp 로 파일을 docker 로 옮겨주기 docker cp boost_1_78_0.tar eun_ispass:/ 굿굿 tar의 압축을 풀어준다. tar -xvf [filename] 그 다음 bootstrap 으로 이동해서 ./bootstrap.sh ./b2 install boost 설치 끝 boost를 해결했고 나온 에러, #가보자고 얘네는 뭘까 std::를 없애고 난 다음의 에러 std::string으로 수정했다. std::rotate라고 해준다. 정말 다 해결이 되는 걸까?! 두근댄다... 왜 헤더 파일이 없다고 뜨지? #include "aesE..
-
[JS] Node.js 란a 2022. 4. 4. 17:10
백엔드, 백엔드 하면 노드라고. 많이 이야기 한다. 하지만 정확히 백엔드와 Node.js가 무엇인지 잘 알지 못한다. 원래 JS 코드들은 웹에서 실행을 할 경우, HTML을 통했다. 순서는 역방향일 수도 있다. 웹에 있는 요소를 처리하기 위해 JS가 필요했고, JS는 요소들을 getElement 하면서 데리고 와서 처리를 하는 역할을 했다. 그런데 백엔드는 사용자와 상호작용하는 요소에 대해 다루지 않는다. 데이터의 처리를 상대한다. node.js는 이제 html을 통해서 실행하던 js를 node로 실행하게 된다. 터미널을 열고 node [파일이름] 하게 되면 Node.js 상에서 js를 실행하는 것이 가능하다.
-
[04/04 ~] C++a 2022. 4. 4. 09:22
03-1. C++에서의 구조체 1. 구조체의 등장배경은 무엇인가> 연관있는 데이터를 하나로 묶으면, 프로그램의 구현 및 관리가 용이하다. 소프트웨어를 단순히 표현하면 다음과 같다. " 소프트웨어 = 데이터의 표현 + 데이터의 처리 " 그런데 '표현해야 하는 데이터'는 항상 부류를 형성하기 마련이다. 그리고 이렇게 부류를 형성하는 데이터들은 함께 생성, 이동 및 소멸된다는 특성이 있다. 그래서 구조체는 연관 있는 데이터를 묶을 수 있는 문법적 장치로 데이터의 표현에 매우 큰 도움을 준다. 예를 들어서 레이싱게임의 캐릭터로 등장하는 '자동차'를 표현한다고 가정해 보자. 다음과 같은 정보가 모여서 게임 상의 자동차가 표현돼야 한다. - 소유주 - 연료량 - 현재 속도 - 취득 점수 - 취득 아이템 게임 사용자..