본문 바로가기

반응형

Welcome !

(441)
[DB] MongoDB Index 개념과 설계 전략 인덱스, Index 란? 책의 마지막 쪽에 있는 '인덱스', '찾아보기' 와 비슷하다. 책의 '인덱스'에 적힌 페이지 번호는 해당 데이터의 주소에 비유할 수 있다. DBMS도 사람이 책의 인덱스를 보고 해당 페이지를 찾는 것처럼 데이터를 찾는다. 데이터와 저장된 위치를 키와 값의 쌍 (key-value pair)으로 관리한다. DB의 검색을 신속하게 하기 위해 데이터의 순서를 미리 정해두는 과정이다. 특정 데이터 필드를 인덱스로 지정하여 검색 결과를 빠르게 얻을 수 있다. DBMS에서 인덱스는 데이터의 저장성능을 희생해서 상대적으로 데이터의 읽기 속도를 향상시키는 존재 -> 테이블에 인덱스 하나를 더 추가할지 말지는 데이터의 저장 속도를 얼마나 더 희생할 수 있는지, 읽기(조회) 속도를 얼마나 더 빠르게..
[MongoDB] DAS, NAS, SAN, HDD, SSD, 인덱스란? 저장매체의 종류와 특성 저장매체의 종류와 특성 내장디스크 (Internal Disk) PC 본체에 장착된 디스크, 장착 가능 개수가 적고, 용량도 부족한 경우가 많음 DAS (Direct Attached Storage) 스토리지의 한 종류로써 서버와 직접 연결되는 하드웨어, 서버와 하드웨어를 1:1로 연결, "서버의 외장하드" 와 비슷 내장디스크의 용량 문제 해결을 위해 주로 사용, 독자적으로 사용할 수 없으며 본체에 연결해서 사용 반드시 하나의 본체에만 연결해야하며 동시 공유는 불가 장점 : 확장이 용이하다. (계속 사서 붙이기) 단점 : 계속 확장하다 보면 서버 효율 저하 NAS (Network Attached Storage) 네트워크가 연결된 DAS, 여러 컴퓨터에서 동시 사용 가능, TCP/IP를..
[TEST CODE with mocha, should, sinon] stub mock spy before beforeEach after afterEach mocha - 테스트 주도 개발을 할 수 있는 대표적인 JavaScript 테스트 프레임워크 should.js - mocha에서 사용할 수 있는 assertion모듈 - node.js에서 사용할 수 있는 표현적인, 가독성 높은 단언문(assertion) 라이브러리 - 테스트 프레임워크에 의존적이지 않음 sinon - standalone test spies, stubs and mocks for js - works with any unit testing framework Test doubles ⊃ stubs mocks spies Test doubles ? -> We usually don't want anything external (such as database calls) to influence the o..
macOS 개발 환경 구축 2021.12.08ƒ m1으로 교체 / 개발환경 재구축 0. chrome 설치 1. web storm 다운로드 - email로 계정 로그인 - plugin 설치 * git flow integration - ??? 안나오는데 url타고 들어가서 다운하면 컴퓨터 손상 경고가 뜸 ! -> m1은 아직 지원 안할 수도 (?) * quokka - ??? 라이센스 등록 방법 * upsource integration - ssh 등록 을 어떻게 하는건지 (?) -> git clone은 일단 access token으로 진행함 - ssh 등록 방법 : https://rfriend.tistory.com/603 ssh 생성 및 등록 방법 1. terminal 에서 ssh 키 생성 $ ssh-keygen -t rsa -C "y..
[Git Flow] git flow 사용법 (feat. 생활코딩) git flow vs github-flow 개념 이해 git-flow : 5가지의 Branches 를 이용/운영하는 브랜치 전략 한달 이상의 긴 호흡으로 개발하여 주기적으로 배포 , QA, hotfix 수행할 수 있는 여력이 있는 팀의 경우 적합 github-flow : master 브랜치와 Pull request를 활용한 단순한 브랜치 전략 항상 릴리즈되어야 할 필요가 있는 서비스와 지속적으로 테스트하고 배포하는 팀이라면 github-flow와 같은 간단한 workflow가 적합 Git Flow model Main Branches = long-running branches : they remain in your project during its whole lifetime. 1) Master - 제품으로..
[MongoDB] Node.js express CRUD with mongoDB Node.js, express with mongoDB로 application 만들기 1. vsc 기본 세팅 - MONGODB_CRUD 폴더 > server.js 파일 생성 - 터미널 경로 MONGODB_CRUD에서 npm init npm init - 필요한 packages 다운 npm install express morgan nodemon ejs body-parser dotenv mongoose axios express : morgan : HTTP request logger middleware for node.js (It logs requests.) nodemon : 변경 사항있을 때 자동으로 server on (오직 js 파일 변경 시에만 ! html X ) ejs : 템플릿 엔진 (템플릿을 읽어 엔진..
[MongoDB] 몽고디비란? 기본 개념, 장점 단점 / CRUD MongoDB 출현 배경 알아보기 클라우드, 빅데이터 출현함으로써 이를 효율적으로 처리할 빅데이터 솔루션이 필요해짐 -> NoSQL(Not Only SQL) 의 등장 -> 대량의 데이터를 빠른 속도로 처리가능 (SQL의 부족한 점을 돕는 기능, 완벽하게 대체는 X) -> NoSQL의 종류 중 하나인 document key/value Store 의 대표 케이스가 MongoDB이다. 클라우드 - 클라우드 컴퓨팅 : 인터넷 기반 컴퓨팅 기술, 개인 단말기는 주로 입/출력만 이루어지고 정보 분석 및 처리, 저장, 관리, 유통 등은 클라우드 공간에서 이루어지는 컴퓨팅 시스템 - 인터넷 상의 유틸리티 데이터 서버에 프로그램을 두고 그때 그때 컴퓨터, 휴대폰 등에 불러와서 사용하는 웹 기반 소프트웨어 서비스 클라우드..
NoSQL 이란 ? NoSQL 장점 단점 / 데이터 모델링 기법 정리 NoSQL (Not Only SQL) 이란? - 기존 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미함 - NoSQL(원래 의미: non SQL 또는 non relational) 데이터베이스는 전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공한다. NoSQL 등장 배경 2000년대 인터넷 발전과 함께 SNS 서비스 활성화 -> SNS 서비스 시스템은 전세계 사용자 대상의 서비스로 발전 -> 기존 기업 시스템에서 볼 수 없었던 대규모 데이터 생산 -> 이러한 대규모 데이터들은 기존 기업 데이터에 비해 매우 단순한 형태를 가짐 데이터의 패러다임이 한정된 규모의 복잡성 높은 데이터에서 단순한 대량의 데이터로 넘..
[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++ ..
HTTP/0.9 HTTP/1.0 HTTP/1.1 HTTP/2 차이 HTTP (HyperText Transfer Protocol Version) TCP 연결 기반 위에서 동작하는 프로토콜 비연결성 프로토콜 - 한 번 연결로 한 번의 요청과 응답만 -> 연결을 끊어버림 1. HTTP/0.9 - in 1991 - 단순한 GET 통신 가능 - 초기 버전에는 '버전 정보가 없었다. (나중에 구분을 위해 0.9라고 불리게됨) - http header가 없어서 HTML 문서만 가능 (다른 유형은 전송 불가) - 상태 or 오류 코드가 없음 - 문제 상황 시 해당 파일 내부에 문제에 대한 설명을 추가하여 보냄 2. HTTP/1.0 - in 1996 - POST, HEAD 추가됨 - 상태코드가 응답 첫 줄에 포함되어 요청에대한 성공 / 실패를 바로 확인할 수 있음 - http head..
[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") //..
[React Native Expo ERROR] expo start 보안 오류: (:) [], PSSecurityException UnauthorizedAccess expo start 명령어에서 처음 보는 오류 발생 + CategoryInfo : 보안 오류: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess 해결 방법 1. Windows PoweShell 열고 아래 명령어 입력 Set-ExecutionPolicy RemoteSigned ↓↓↓ 이제 잘 된다 !!
CPU vs GPU CPU & GPU 공통점 - 중요한 컴퓨팅 엔진 - 실리콘 기반 마이크로프로세서 - 데이터 처리 => 다른점 : 아키텍처와 만들어진 용도가 다름 CPU, Central Processing Unit (중앙처리장치) - CPU, 중앙처리장치 = 컴퓨터의 뇌 (컴퓨터의 성능에 있어 가장 결정적임, IQ 같은..) - 우리가 명령하는 모든 작업을 처리하고 연산 - 연산 - 제어부 & 레지스터(메모리)로 구성 - CPU는 연산 속도가 빨라 복잡한 명령을 처리하는 용도 - 수백만 개의 트렌지스터로 구축되어 있음 - 현대 컴퓨팅 시스템에 필수적인 요소 - 웹 서핑에서 스프레드 제작에 이르는 프로그램의 실행 속도 결정하는 중요한 역할 - 다양한 워크로드, 특히 대기 시간, 코어당 성능이 중요한 워크로드에 적합 - CP..
[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 파일 전송 네트워크는 ..
[블록체인] P2P란? Peer-to-Peer Network 비트코인 처음 개발한 사토시 나카모토의 비트코인 논문에 보면 Peer to Peer 를 찾을 수 있다. P2P (Peer-to-Peer network) 란? = 동등 계층간 통신망으로도 불린다. 순수 P@P 파일 전송 네트워크는 Client or Server의 역할을 동시에 수행한다. 보통 중앙 서버를 중심으로 통신하는 Client-Server 모델과 다르다. * 일반적인 중앙 서버 시스템 : ex. 인터넷에서 정보 검색하기 위해서는 '검색 웹사이트' = 중간에서 연결해주는 Server 가 필요 우리에게 일반적으로 익숙한 중앙 집중식 관리 시스템을 사용하지 않고 상호 연결된 Node(=peer = 사용자) 들이 서로 간에 자원을 공유할 수 있는 네트워크. 서버없이 동일/관련 프로그램에 접속한 사람들끼리 ..
[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..

반응형