2일차

연산자와 제어문

단어

  • 연산자(Operator) : 어떠한 기능을 수행하는 기호
  • 피연산자(Operand) : 연산자의 작업 대상

연산자의 종류

  • 단항 연산자: +, ``, (type), ++, -, ~, !
  • 이항 산술 연산자: +, , , /, %, <<, >>, >>>
  • 이항 비교 연산자: >, <, >=, <=, ==, !=
  • 이항 논리 연산자: &&, ||, &, ^, |
  • 삼항 연산자: ? :
  • 대입 연산자: =, operator=

연산자의 우선순위

  • 괄호의 우선순위가 가장 높음
  • 산술 > 비교 > 논리 > 대입
  • 단항 > 이항 > 삼항
  • 연산자의 연산 진행방향은 왼쪽에서 오른쪽
  • 단항, 대입 연산자는 오른쪽에서 왼쪽

단항 연산자 ++, —

  • ++ : 증가 연산자, 피연산자의 값 +1
  • -- : 감소 연산자, 피연산자의 값 -1
var num1 = 10;
var num2 = num1++;

결과값 : num1 = 11, num2 = 10이 됩니다.

이유 : num1++은 앞의 실행 후 증가한다. 반대로 ++num인 경우 증가 후
실행이 됩니다.

Ex) 
var num1 = 10;
var num2 = ++num1;

결과값 : num1 = 11, num2 = 11이 됩니다.

마이너스도 똑같이 적용하여 증가를 감소로 바꾸기만 하면됩니다!

논리 부정 연산자!

불리언 타입의 피연산자를 반대로 바꾼다.

var str1 = true; // str1은 true라는 값을 가지고 있다.
var str2 = !str1 
// !가 붙으면 값을 반대로 만들어준다.
// 참에 느낌표를 붙여 반대값인 거짓을 str2에 대입하게 됨

결과값 : str1 = true, str2 = false값이 된다

비트 시프트 연산자 (<<, >>)

  1. Left Shift Operator
ex1) var num = 2 // 2는 2진수로 0010
num << 2 // left shift를 2만큼 움직이면 1000으로 바뀌고
결과값 : num = 8이 된다.

2진수 참고 사진

설명 : 숫자 2가 0010인데 << 2를 하면 1을 왼쪽으로 2칸만큼 움직이라는 뜻이다. 그러므로 0010 << 2는 1000이 된다.

  1. Right Shift Operator
var num = 9; // 2진수로 1001이 된다.
num >> 2; // 0010이된다. 

결과값 : num = 2가 된다.

결론 : Left Shift는 늘어나지만 Right Shift는 줄어든다.

비트 연산자( |, &, ^)

피연산자를 비트단위로 연산한다. 실수형을 제외한 모든 기본형에 사용이 가능하다.

  • OR연산자(|) : 피연산자 중 어느 한 쪽이 1이면 1이다.
  • AND연산자(&) : 피연산자 양 쪽이 모두 1이면 1이다.
  • XOR(^) : 피연산자가 서로 다를 떄 1이다.

| x | y | x | y | x & y | x ^ y | | --- | --- | --- | --- | --- | | 1 | 1 | 1 | 1 | 0 | | 1 | 0 | 1 | 0 | 1 | | 0 | 1 | 1 | 0 | 1 | | 0 | 0 | 0 | 0 | 0 |

식2진수10진수

3 5 = 7 0000001100000101
  00000111 7
3 & 5 = 1 0000001100000101 35
  00000001 1
3 ^ 5 = 6 0000001100000101 35
  00000110 6

제어문

  • if(조건식)문
    var num = 2; // num에 2를 대입
    
    if(num === 2){ 
    // 조건문에 num이 2랑 같은지 비교 true면 실행 false면 밖에 return이 실행
    	return document.write("num은 2이다.");
    }
    
    return document.write("num은 2가 아니다.");
    
    결과 : num은 2이다.
    
  • 정의 : 만약 조건식이 참이면 실행해라. 거짓이면 밖에 걸 실행한다.
  • if(조건문) ~else문
    var num = 2; // num에 2를 대입
    
    if(num === 2){ 
    // 조건문에 num이 2랑 같은지 비교 true면 실행 false면 else의 return이 실행
    	return document.write("num은 2이다.");
    }else {
    	return document.write("num은 2가 아니다.");
    }
    
    결과 : num은 2이다.
    
  • 정의 : 만약 조건식이 참이면 실행해라. 거짓이면 else를 실행한다.
  • switch(조건변수) ~case 값 : 실행문
    예제1)
    
    var num = 2;
    
    switch(num){
    	case 1 : return document.write("num은 1이다.");
    		break;
    	case 2 : return document.write("num은 2이다.");
    		break;
    	default : return document.write("모르겠다");
    }
    
    결과값 : num은 2이다.
    
    설명 : 조건변수가 num이고 num의 값은 2이다. 그래서 case중 같은 값을 가지고 있는 
    			case의 값이 2를 가지는 case 2가 실행된다.
    추가설명 : break문이 없으면 멈추지 않아서 실행이 되고 default는 위의 case가 다
    				넘어가면 실행이 된다.
    
  • 정의 : 조건변수가 case의 값과 같으면 실행문이 실행된다!
  • for(초기화 변수; 조건식; 증감식)문
    for( 초기화 변수; 조건식; 증감식 ){
    	실행문
    }
    
    예제1) *****를 만들기
    
    var str = "*";
    var str2 = "";
    
    for(var i = 1; i < 6; i++){
    // i는 1이고 i가 6보다 작으면 1씩 커지면서 반복해라
    	str2 += str; 
    // str2 += str 은 str2 = str2 + str과 같은 뜻을 의미한다.  
    }
    
    결과값 : '*****'
    
    설명 : i가 1일때 한번 실행되고 i = i +1(=> i++)한뒤 i는 2인데 i가 6보다 작기때문에
    			실행문이 실행된다. 이 것을 6보다 같거나 클때까지 반복한다.
    
    예제2) *****
    			*****
    			***** 를 만들기
    
    var str = "*";
    
    for( var j = 1; j < 4; j++ ) {
    	var str2 = "";
    	for( var i = 1; i < 6; i++ ){ 
    
    		str2 += str; 
    
    	}
    	document.write(str2 + "<br>");
    }
    
    결과값 : 
    				'*****'
    			  '*****'
    				'*****' 이 된다.
    설명 : 첫번째 반복문이 실행이 된다.
    			=> str2는 빈문자열을 준다.  // 1번 루트
    			=> 두번째 반복문이 실행이 된다.
          => str2 = str2 + str이 실행
    			=> document.write문이 실행이된다.
    			=> j = j+1을 한 후 j값이 4보다 작은지 확인하고 작으면 다시 1번 루트로 돌아가
    				 반복한다.
    
  • 정의 : for는 반복문입니다. 특정 조건만큼 변수를 증감하고 실행문을 반복합니다.
  • while(조건식){ 실행문 }
    ex) 
    var num = 2;
    
    while(num < 4){
    	document.write(num + " ");
    	num++;
    }
    
    결과문 : 2 3
    
    설명 
     
    num은 2이다.
    => num이 4보다 작냐 true
    => document.write문 실행 화면에 2출력
    => num = num + 1 
    => 다시 조건문으로 돌아간다. 이 조건문이 false일 때 까지 반복한다.
    => ... num이 증가하여 4가되니 false가 되고 반복문은 종료
    => 화면에 나온 결과 : 2 3
    
  • while문 정의 : 조건식이 참이면 실행문이 실행되고 거짓이면 실행문이 실행이 안된다.
  • do ~while문
    ex1) 
    var num = 2;
    
    do{
    	document.write(num + " ");
    	num++;
    } while(num < 4);
    
    결과문 : 2 3
    
    설명 
     
    num은 2이다.
    => document.write문 실행 화면에 2출력
    => num = num + 1 
    => num이 4보다 작냐 true
    => 이 조건문이 false일 때 까지 반복한다.
    => ... num이 증가하여 4가되니 false가 되고 반복문은 종료
    => 화면에 나온 결과 : 2 3
    
    ex2)
    
    var num = 1;
    
    do{
    	document.write(num + " ");
    	num++;
    } while(num < 1);
    
    결과물 : 1
    
    이유 : 최초 1회는 무조건 실행
    
  • 정의 : while문과 같지만 do ~while은 무조건 최초 1회는 실행한다.

출처

https://noritersand.github.io/java/java-연산자-operator/

https://cofs.tistory.com/136

2일차

저번 주 요약

  1. 블록체인 기술 ⇒ 블록체인 트릴레마 : 탈중앙화, 보안, 확장성) ⇒ 이더리움(PoW(작업증명) → PoS(지분증명)) + Layer2 체인
  • DA
  • Consensus
  • Settlement
  • Execution L2 → 아비트럼, ZKSync, 옵티미즘 등등 Ex) 자동차 튜닝

4가지 요소를 한번에 처리하는 블록체인 ⇒ 모노리틱 블록체인 (대표적으로 비트코인)
⇒ 모듈러 블록체인 (대표적으로 이더리움)

1. 디파이 역사
- DeFi (Decentralized Finance, 탈중앙화 금융)
- 중앙화 금융의반대
- 디파이 어떤 상품?
(1) 예치 Deposit ⇒ 이자 (Yield, Real)
(2) 환전 Swap
(3) 대출 Lend
(4) 파밍 Farm (유동성 공급 대가로 보상 수취)
      - MakerDAO, Compound, Aave, Uniswap)

- 디파이 일드(Farming Yield)는 어떻게 구성되는가?
   ⇒ 금리 === 수익률 (복리오 단리 ARP)
       일드 === 거래수수료 + 프로토콜 거버넌스 토큰
       거래수수료 : 0.3% ⇒ 0.25% ⇒ 유동성 공급자
       시장 일드 ⇒ 100% ⇒ 거래수수료 1% , 거버넌스토큰 99% 
       ⇒ 부체(토큰을 발행하는 방식으로 수수료를 만들어서 줘서 결국은 회사의 부채가 된다.)
       ⇒ 망함

은행이 제공하는 이자는?
기업(개인) 대출, 국공채, 사채 ⇒ 이자 제공
기업 ⇒ 서비스 제공해서 대가 ⇒ 수익 ⇒ 이자비용 (Real Yield 디파이가 가지고 있지 않는 방식 )

- 디파이 일드는 어디서부터 오는가?
   (1) 초기 : 찍어낸 토큰에서 기인
   (2) 현재 : Real Yield 창출을 위한 노력 경주. 
         이더리움
        PoW ⇒ PoS ⇒ 누구나 32ETH와 네트워크 운영 능력. 
        ⇒ 이더리운 재단이 제공하는 약 4.9% 이자를 수취

32ETH(고비용), 네트워크 운영(요건)

LSD(Liquid Staking Derivatives) = 이더리움 조각투자 플랫폼
디파이 현재 금리 ~4.9% + 알파 = 10% 내외

- 디파이의 일드는 어떤 기준으로 만들어 지는가?
   이더리움 네트워크 인플레이션 보상 대가로 지급되는 4.9% 기준 
   ⇒ 은행(스테이블 코인, 디파이 프로토콜 MakerDAO ⇒ 국채)
  1. 지갑 설치
  • 메타마스크 (유니스왑 연결, 스왑)
  • 유니스왑 대표적인 탈중앙화 거래소
  • AMM (Automated Market Maker)
  • 호가방식x ⇒ 유동성 풀 방식 Ex) 사과와 바나나를 담고 있는 바구니

디파이의 역사

21년 2월

  • 테슬라 비트코인 매수 5월
  • 테슬라, 결제중단 중지
  • 디파이 아버지 안드레 개발 중단 선언
  • 디파이 해킹 전성시대! 러그풀인가 해킹인가?(Belt Finance, PancakeBunny 등) 그 이후
  • NET, 메타버스, 웹3 열풍
  • 샌드박스, 디센트럴랜드
  • Play to Earn
  • Experience to Earn 행운의 11월~12월
  • NFT.NYC

디파이 수익 ⇒ 거래수수료(0.3%, 0.25%)와 거버넌스 토큰 (디파이 서비스를 제공하는 회사가 발행한 토큰의 합) ⇒ 디파이 이자로 제공 수익률 ~500% ⇒ 1%, 99% ⇒ 시자에 너무 많은 거버넌스 토큰 ⇒ 해결하기 위해서는 중앙화된 기구가 있어야한다. Fed

블록체인 데이터를 활용해서 루나 폭락사태 이유 찾아 보기 & 폭락 전 시그널을 발견해보기 루나코인의 떨어지는 조짐을 찾아보는 법 키워드 : 테라 루나 Cruve Finance 트위터(Dokwon, Your mom, Algod)

블록체인 자료를 볼 때에는 디파이라마 NFT자료를 볼 때에는 NFTgo

  1. 디파이 2.0이후?
  2. 2022년 거버넌스 토큰 재정의 ⇒ 22년 전, 거버넌스 토큰(보통주) : 프로토콜의 사업 방향성 결정에 참여할 수 있다. 자신이 원하는 대로 프로젝트를 이끌어 갈 수 있다. ⇒ 폭락, 거버넌스 토큰 의사결정 ⇒ 재단 ⇒ 프로토콜의 가치를 반영하는 거버넌스 토큰이 필요하다. ⇒ 배당해라 X (STO 증권성 토큰은 불법이여서 안했었다.) ⇒ 배당해라 O ⇒ 프로토콜의 수익을 토큰 예치자들한테 돌려주는 프로젝트

Ex) 아비트럼 GMX (탈중앙화 거래소 + 바이낸스 선물거래) ⇒ 거버넌스 토큰 GMX 예치하면 70% 예치자 돌려주고 30%는 다른 목적으로 만들어냄 지노스 네트워크, dydx 큰 인기 ⇒ 프로토콜의 가치 ⇒ 토큰 가치로 연결(증권법 위반)

 

22년 5월 루나 폭락사태(도권 5위) 22년 11월 FTX 파산 사태(쌤 2위)

⇒ 중앙화된 기관을 더 이상은 못 믿게됨

⇒ GMX 떡상!

⇒ 탈중앙화 거래소 큰 가치를 얻게 됩니다.

⇒ 23년 현재도 이어오고 있다.

 

경제 인플레이션 곤욕

⇒ 실리콘밸리 은행이 기업회생

⇒ 중앙화된 기관을 불신

⇒ 비트코인, 탈중앙화 거래소의 가치가 높아짐으로써 가격 반영

 

23~24년 어떻게 변할까? 디파이

(1)LSD 시장의 성장으로 제2의 디파이 시장 열리게 될 예정

(2)Web3 Social Graph를 활용한 사업이 커질것이다.

 

LSD(Liquid Staking Derivatives)?

이더리움이 PoW

⇒ PoS로 전환(Merge) PoS가 초기에 잘 작동되는지 테스트 하기 위해 시장에서 벨리데이터를 모집

⇒ 32ETH 예치하면 참여할 권할

⇒ 20~21년

⇒ 22년 말 ~ 23년 Merge 락업되어 있던 32ETH를 풀어주는 업그레이드

⇒ 상하이(샤펠라) 업그레이드

⇒ 10조원 이상 락업

⇒ 어디로 갈까? 시장 매각, 벨리데이터 재예치?

⇒ 벨리데이터 재예치로 큰 자금이 이동

⇒ Liquid Staking 서비스

⇒ LSD ⇒ Real Yield! 왜? ⇒ 이더리움 네트워크가 4.9% 보상 주닌깐

 

디파이 거래소 일드 구성

 

4.9%의 비밀?

ETH 2.0 APR = Consensus Layer(3.8%) + Execution Layer 보상(성과 보수)의 합 ⇒ 4.9% ⇒ 10%미만

 

ETH → Lido → stETH (= 1 ETH) → 4.9% APR 이더리움 → stETH → stETH 활용해서 DeFi 상품 투자( 디파이 1.0 처럼 자신의 토큰을 추가로 인센티브 제공) → 아이건레이어

 

온체인 ( 블록체인 위에서 발생되는 데이터 )

오프체인 ( 날씨, 경기 결과등 )

 

오프체인데이터를 온체인으로 올려주는 프로그램 ( 오라클 (맞는데이터인지 확인) )

합의 매커니즘

자체 노드, 즉 100명의 확인자 (탈 중앙화가 덜 된것)

한국 일본 친선경기 결과를 51%이상 동의 → 온체인

웹 프로그랭이란?

  • 웹에 관련되 프로그램을 만드는 행위
  • 웹 브라우저와 관련된 프로그램을 작성하는 것

 

Back-end

  • 서버에서 사용자의 요청을 처리하거나 데이터를 관리

 

Front-end

  • 서버에서 받아 온 정보를 웹 브라우저에 어떻게 보여줄 것 인지 프로그래밍

 

자바스크립트로 무엇을 할 수 있을까?

  • 웹 사이트를 동적으로 만든다.
    * Ex) 메뉴에 마우스 포인터를 올렸을 때 하위 메뉴
    * 영화 사이트 < > 모양 화살표 클릭 시 영화 포스터 좌우로 움직임
  • 웹 브라우저에서 실행되는 프로그램을 만들 수 있다.
    * Ex) 버스 노선, 정류장 정보 등을 보여주는 웹 사이트
  • 서버를 구성하는 서버용 프로그램을 만들 수 있다.
    * Ex) Node.js 프레임워크로 서버 프로그램 개발

 

자바스크립트의 특징으 무엇일까?

  • 모든 웹 브라우저에서 작동
    * 웹 초창기 시절부터 사용한 언어
    * 대부분의 웹 브라우저에서 작동
    * 그러나 최신 문법을 웹 브라우저에 즉시 사용할 수 있는 것은 아님!
  • 웹 브라우저에서 실행 결과를 즉시 확인
  • 풀스택 웹 개발 뿐 아니라 다양한 용도의 프로그램을 만들 수 있다.
  • 다양한 자바스크립트 공개 API를 사용할 수 있다.
  • 다양한 라이브러리와 프레임워크를 사용할 수 있다.
    * 라이브러리 : 자바스크립트로 미리 구현해 놓은 기능을 묶어 놓은 것 Ex) JQuery
    * 프레임워크 : 프레임워크에서 기본으로 제공하는 소스를 수정하거나 추가하는 방법으로 웹 프로그램을 만들 수 있게 미리 준비한 일종의 룰
       Ex) React, Angulat, Vue 등

자바스크립트 소스 작성시 지켜야할 6가지 규칙

  1. 대소문자를 구별하여 소스 작성
    Ex) sum, Sum, SUM => 모두 다르게 인식한다.
  2. 읽기 쉽게 들여쓰기 하는 습관을 들여야 한다.
    - Tab키를 눌러서 들여쓰기
  3. 세미클론(;)으로 문장을 구분
    - 문장 끝에 세미클론을 붙이는게 좋다
    - 자바스크립트는 세미클론을 안붙여도 실행은 된다 하지만 코드 구분하기 위해서 붙이는 것을 추천한다.
  4. 주석
    - 한 줄 주석 => // 한 줄 주석
    - 여러줄 주석 => /*  */
  5. 식별자
    - 변수, 함수, 속성..등을 구별하기 위해 이름을 붙여주는 특정 단어
    - 식별자 첫 글자는 반드시 문자, _, $ 기호로 시작한다. Ex) num, _num, $num
    - 두 단어를 연결해서 단어를 만들때에는 첫글자는 소문자 다음 단어 시작은 대문자 Ex) checkPoint, CheckPoint
    - 예약어는 사용이 불가능하다. Ex) if, return, null

 

변수와 자료형

  • 변수(Variable) : 상황에 따라 다른 값을 입력 받아야 할 때 사용
  • 상수(Constant) : 변하지 않는 값

 

변수를 선언하는 규칙 3가지 

  • 이름은 의미 있게 짓는다.
  • 여러 단어를 연결할 변수 이름은 낙타 모양(Camel Case)으로 만들어 준다
    * 첫 번째 단어는 소문자로, 두 번쨰 단어부터는 대문자로 시작하는 방법 => Camel Case
    * 단어별로 밑줄(_)을 사용하여 짓는 방식도 있음
  • 선언할 수 없는 이름도 있다.
    * 첫 들자는 반드시 문자나 밑줄(_)또는 달러 기호($)로 시작해야 하며 그후에는 문자나 밑줄, 달러 기호, 숫자를 사용할 수 있음

 

변수란 무엇일까?

  • 변수에 값이나 저장하기
    *
    변수를 선언하면서 저장하는 방법
    *
    변수를 선언한 다음에 값을 저장하는 방법
    *
    기호는 할당 연산자라고 부름

자료형 이해하기

  • typeof 연산자 : 자료형을 확인하는 방법
    Ex) var a = 10; typeof a; => ‘number’
  • undefined와 null의 차이
  • undefined : 처음부터 변수에 값이 할당되지 않음
  • null : 처음에 할당된 값이 더는 유효하지 않음
  • 배열(Array) : 하나의 변수에 여러 값을 저장할 수 있는 유형
  • 인덱스로 배열의 값을 불러옴. 0부터 시작.
    Ex) 선언방식 : var season = ["봄", "여름", "가을", "겨울”], 불러오는 방식 : season => ['봄', '여름', '가을', '겨울’], season[0] => ‘봄’
  • 객체(Object) : 여러 자료를 중괄호({})로 묶을 수 있음
  • 키(Key)와 값(Value)을 클론(;)을 사용하여 저장
    Ex) 선언방식 : var kim = { firstname : "John", lastname : "kim", age : 35, address : "seoul", } 불러오는 방식 : kim.firstname => 'John'
  • 자바스크립트 자료형의 특징
  • 미리 변수의 자료형을 지정하지 않음 => 느슨한 자료형 체크(Weak Date Type Check)

블록체인이란 무엇인가?

 

블록체인이란 P2P(Peer to Peer) 네트워크를 통해서 관리되는 분산 데이터베이스의 형태로, 거래 정보를 담은 장부를 중앙 서버 한 곳에 저장하는 것이 아니라 블록체인 네트워크 연결된 여러 컴퓨터에 저장 및 보관하는 기술로 다양한 분야에 활용이 가능한 기술이다

 

블록체인의 장점?

  • 분산처리와 암호화 기술을 동시에 적용하여 높은 보안성을 확보하는 한편 거래과정의 신속성과 투명성을 특징으로한다.

 

블록체인의 단점?

  • 잃어버리면 책임은 본인한테 있다.
  • 해킹에 대한 보상을 안해준다.

 

블록체인 합의와 검증

 

블록체인 합의 / 검증 방식 

  • poW( 작업증명 ) 및 PoS( 지분증명 = 주식유사 )

 

블록체인 어떻게 작동

 

PoW : 멤풀 -> 채굴자

 

PoS: 멤풀 -> 서처 -> 빌더 -> 릴레이어 -> 벨리데이터 (검증자)

 

블록체인 종류 : 모노리틱스, 모듈러 체인

 

(모노리틱스 -> 비트코인, 모듈러 -> 이더리움)

 

블록체인 방향성 : 모듈러 블록체인

 

왜? 블록체인 트릴레마 해결하기 위해서

 

트릴레마는 무엇? 탈중앙화, 확정성, 보안성이 공존할 수 없다.

 

모듈러 블록체인은 어떻게 트릴레마를 극복?

 

분업화! 생산성 향상! 즉, 이더리움 기능 개선

 

어떤 기능을 개선중? 

DA, Consensus, Settlement, Execution

 

누가 ? 제 3자들이 (아비트럼 옵티미즘, 폴리곤 등등)

 

 

디파이란 무엇인가?

중앙화 금융과 반대. 탈중앙화 금융(Decentralized Finance)

-> DeFi

 

디파이는 왜 필요한가?
후진국, 개발도상국의 국가 신용도가 낮기 때문에 그들의 은행보다 블록체인 기술을 활용한 금융체계가 안전할 수 있다.

예) 터키 라리화 폭락 -> 비트코인 프리미엄 30%, 러시아 전쟁 -> 두 국가의 시민들이 유입되었다.

 

디파이 내 금융 서비스를 제공하는 사람들은 누구인가?

(1) MakerDAO: 블록체인 기술을 활용해서 처음 탈중앙화 금융 내 머니마켓을 개척한 프로토콜.(단기 상품을 거래하는 시장), DAI(=$1 스테이블코인, but 디지털자산을 담보로)

(2) Compound: 은행과 같은 수신업을 제공하고 대출을 제공해주는 프로토콜이다. 이더리움, DAI를 수신하고, 대출해주는 중간자 역할을 하는 곳. DeFi 유동성을 높이는데 큰 역할.(코인베이스 벤처스, a16z 등등)

(3) Aave(아베): 다수의 거래를 1개의 거래로 만들어서 수수료 절감해주고 빠르게 거래 처리

 

금융체계 구색을 갖추기 시작했다.(은행, 대출기관)

Uniswap(환전소): 2종 토큰/코인을 교환, 은행과 다르게 개인들이 환전소의 금고에 여러가지 토큰을 예치하고, 예치된 토큰 거래에서 나오는 수수료를 유동성 공급자, 즉 개인들이 가져가는 구조. 예) 인천공항 은행들 (수수료 -> 은행)

 

디파이 상품

  • Stake 예치 : 토큰을 예치하여 이자를 받는 행위
  • Swap 스왑 : 서로 다른 이종토큰을 교환(ETH->BHC) 
  • Lend 대출 : 예치된 토큰을 남에게 빌려주는 것 (예금 대출사이에서 마진을 본다 => 예대마진)
  • Farm 파밍 : 유동성을 공급한 대가로 수수료를 받는 것

 

디파이 썸머 (2020년 하반기 ~ 2021년 상반기)

 Farm 대가로 배분한 이자가 높았다 왜?

 - 99% 자기들이 만든 토큰 + 1% 거래수수료 (Real Yield)

 

브릿지 (다리)

  • 서로 다른 체인에 있는 유동성을 옮기는 역할 (A -> Box -> B) 로닌체인 해킹 사건이 벌어짐

 

 

탈중앙화 지갑 (보안성 높고, 프라이버시가 지켜짐) => 책임은 본인한테 있다, 해킹당해도 보상을 안해준다. 

=> Non-Custodial(비수탁)

메타마스크

서비스 요구사항 (User requirement) 작성하기

1. 기능적 요구사항 (Functional requirements)

  • 소프트웨어의 기능에 대한 요구사항들
    • 사용자의 관점에서 필요한 기능

2. 비기능적 요구사항 (Non-functional requirements)

  • a.k.a. Software quality requirements
  • 소프트웨어의 품질을 높이기 위한 요구사항. 시스템 운영을 판단하기 위한 기준을 정의하는 과정
    • 성능(Performance)
      • 예) 지출 내역 조회 API는 아무리 못해도 1초 내에는 응답을 줘야 함
    • 보안(Security)
      • 예) 비밀번호는 SHA-256 알고리즘으로 암호화 되서 저장
    • 가용성(Availability) - 기간 동안 소프트웨어가 정상 동작하는 비율(%)
      • 예) 99.999% 1y availablity = downtime은 약 5분

요구사항 작성법

1. User story에서 시작

철저히 사용자의 관점에서 소프트웨어를 통해 어떤 것을 하고 싶은지 생각한다.

  • Role - 소프트웨어를 사용/관리하는 주체 (e.g. 로그인 하지 않은 사용자, 관리자, 일반 사용자 등)
  • Goal - 하고 싶은 것
  • Benefit - 이 것이 필요한 목적/이점

⇒ {Role}로서, 나는 {Benefit}을 위해 {Goal}을 이루고 싶다/가지고 싶다.

2. Software requirement 정의

User story를 만족시키기 위해 시스템에서 어떤 것들을 해야 할지, 기능적 요구사항(functional requirements)와 비기능적 요구사항(non-functional requirements)을 이용하여 정의한다.

 

 

지금 듣고 있는 강의 : https://fastcampus.co.kr/dev_online_spdutch

 

사이드 프로젝트 : 10개 기술스택으로 구현하는 풀스택 서버리스 프로젝트 with React | 패스트캠퍼

언어와 프레임워크만 배운다고, 완성된 프로젝트만 따라한다고 내가 원하는 서비스를 개발할 수 있을까요? 서비스 구현 외에도 기획과 유지 보수, 적정 기술을 선택하여 문제를 해결하는 방법

fastcampus.co.kr

 

소프트웨어 개발 주기

  • 소프트웨어를 개발하고 관리하는 데에 있어 가장 근간이 되는 프로세스이자 프레임워크
  • 실무에서도 소프트웨어 개발 주기를 기반으로 프로젝트를 진행
  • 사이드 프로젝트도 이 개발 주기를 기반으로 진행해야 체계적으로 진행하고 더 좋은 품질의 제품을 개발할 수 있다

SDLC (Software Development Life Cycle)

계획 => 분석 => 디자인 => 구현 => 테스팅 및 배포 => 유지 보수

1. 기획

  • 요구사항을 수집하고 프로젝트를 기획하는 단계
    • 사용자 설문, 마케팅 요구사항 등 다양한 채널을 통해 데이터를 모으는 과정으로 가장 중요하면서도 기초가 되는 단계
  • QA (Quality Assurance)를 위한 요구사항과 프로젝트가 가질 수 있는 리스크 판단

2. 분석

  • 제품의 요구사항을 정의하는 단계
  • SRS (Software Requirement Specification)에 기록

3. 디자인

  • 시스템을 디자인하고 설계하는 단계

4. 구현

  • 디자인을 기반으로 개발자가 코드로 기능을 구현하는 단계

5. 테스팅 및 배포

  • 구현 내용이 요구 사항을 충족 하는지 검증하는 단계
  • 프로젝트/비지니스 성격에 따라 베타 오픈, 특정 시간에 오픈 하기도 함

6. 유지 보수

  • 제품을 마켓에 배포하고 서비스를 모니터링 하면서 유지보수 하는 단계

 

SDLC 방법론

소프트웨어 개발에는 여러 접근 방식이 있으며, 기업에서 하나의 접근 방식으로 요구 사항을 충족할 수 있을 만큼 접근 방식마다 차이가 있습니다.

Waterfall

Waterfall 모델이 선형 방식으로 이동하는 것처럼 Waterfall SDLC는 소프트웨어 개발 초기부터 시작하여 각 프로세스 단계를 진행하는 선형 모델이지만, 이전 단계가 완전히 끝날 때까지는 다음 단계를 시작할 수 없습니다. Waterfall SDLC는 기업이 프로세스 각 단계에 대한 연속성과 실행 가능성을 분석하는 데 도움이 되어 병목 현상이나 사일로를 제거하는 데 유용합니다.

Agile

Agile 방법론은 사용자 입력과 경험을 핵심적으로 강조하므로 이전에 사용하기 더 번거로웠던 애플리케이션에서 발생하는 많은 문제를 해결할 수 있습니다. 소프트웨어는 Agile 프로세스를 거치면서 피드백에 매우 민감하게 반응하며, 급변하는 시장에 적응하기 위해 더 빠른 주기로 소프트웨어가 출시되도록 운용합니다.

반복

소프트웨어 개발자는 소프트웨어의 초기 버전을 신속하게 구축한 후 간단한 반복 과정을 거쳐 개선합니다. 이는 애플리케이션을 시작하고 실행할 수 있는 대규모 애플리케이션에서 일반적으로 사용되는 접근 방식으로, 비즈니스 요구를 보다 빠르게 충족합니다.

DevOps

Agile과 매우 유사한 DevOps는 설계 및 구현 단계에서 소프트웨어 사용자로부터 피드백을 수집하여 개발된 애플리케이션의 사용성과 관련성을 개선하면서, 구성된 팀원 간의 적극적인 공동 작업 및 커뮤니케이션을 활용하여 제품에 관한 모든 측면을 다룹니다. 이러한 팀에는 개발, 테스트 및 보안은 물론 정보 기술 운영 역할을 맡는 담당자가 참여합니다.

Spiral

Spiral 모델은 Waterfall에서와 같이 순차 프로세스와 함께 다른 모델의 반복 접근 방식을 사용합니다. 따라서 개발 과정에서 프로세스의 각 단계를 반복적으로 거치면서 Spiral 단계마다 점진적으로 출시하고 개선할 수 있습니다.

V 모델

검증 및 확인 모델이라고도 하는 V 모델은 순차적으로 단계에 접근하지만 "v"자 형태로 단일 단계에서의 테스트가 아닌 각 개발 단계와 직접 연결된 테스트를 포함하는 Waterfall 접근 방식으로 확장합니다.

빅뱅

빅뱅 모델에는 계획 사안이 거의 없으며 프로세스도 없는 경우가 대부분입니다. 이 프로세스는 필요한 자금과 리소스로 시작한 후 고객 요구 사항을 따르는 소프트웨어를 출력합니다. 이 모델은 일반적으로 정형화된 구조와 프로세스가 많이 필요하지 않은 소규모 팀이 추진하는 매우 간단한 프로젝트에 사용됩니다.

 

출처 : https://www.servicenow.com/kr/products/devops/what-is-sdlc.html

지금 듣고 있는 강의 : https://fastcampus.co.kr/dev_online_spdutch

 

사이드 프로젝트 : 10개 기술스택으로 구현하는 풀스택 서버리스 프로젝트 with React | 패스트캠퍼

언어와 프레임워크만 배운다고, 완성된 프로젝트만 따라한다고 내가 원하는 서비스를 개발할 수 있을까요? 서비스 구현 외에도 기획과 유지 보수, 적정 기술을 선택하여 문제를 해결하는 방법

fastcampus.co.kr

 

1인 개발 VS. 팀 개발, 어떤 것이 좋을까?

1인 개발의 장점

  • 모든 것의 주도권은 내가 가지고있다.
  • 일정관리가 원활하다.
  • 부족한 부분을 외부적 요소로 채울 수 있다.

1인 개발의 단점

  • 혼자하다보니 더 많이하고 심적으로 힘들어진다.
  • 체계적으로 하기가 힘들다.
  • 프로젝트 관리보다는 기술적으로 접근할 가능성이 높다.
  • 피드백을 받기 힘들고 모든일의 책임은 본인에게 있다.

팀 개발의 장점

  • 다양한 사람들과 의사소통을 하며 소프트 스킬을 레벨 업 할 수 있다.
  • 많은 사람들의 의견으로 인해서 제품이 다른방향으로 갈 가능성이 낮다.
  • 서로가 멘토 멘티가 되어 성장의 촉진제가 된다.
  • 실무와 가장 유사한 환경

팀 개발의 단점

  • 서로가 안 맞으면 혼자하는 것 보다 느릴 수 있다.
  • 팀원과 소통이 잘 안되고 최악의 경우 팀이 폭파되어 유지보수의 어려움을 겪을 수 있다.
  • 팀 미팅 일정 잡기가 쉽지 않다.

팀원을 구하는게 쉽지 않아요..

  • 우선 혼자서라도 시작 하기!!     
    (아이디어를 구체화 => 목적과 목표를 계속 생각 =>  내가 만들고 싶은 제품의 방향을 잡기)
  • 혼자 어느정도 진행 하면서 나와 맞는 팀원을 천천히 찾기
  • 같이 일하고 싶은 팀원을 찾았다면, 구체화 된 아이디어와 제품의 방향성과 고민했던 점들을 공유하고 제안하면서 설득하세요.

지금 듣고 있는 강의 : https://fastcampus.co.kr/dev_online_spdutch

 
 

1. Day 1 계획하기

  • 나의 취업목표 작성
  • 블로깅하기(아무거나)
  • 밀린강의 듣기 | - 미니잡서칭
  • 섹션마다 회고 | - 구직활동 전체적인 준비 | - 잡서칭 1일 미션만큼은 완벽하게 수행 후 제출하기 |
오늘 나의 학습 목표는? 오늘 학습할 내용중 이미 알고 있는 내용은 무엇인가? 오늘 학습할 내용중 처음 학습하는 내용은 무엇인가? 오늘 하루의 다짐!
- 잡서칭 과정 이해
- 나의 취업목표 작성
- 블로깅하기(아무거나)
- 밀린강의 듣기
- 미니잡서칭
- 섹션마다 회고
- 구직활동 전체적인 준비 - 잡서칭 1일 미션만큼은 완벽하게 수행 후 제출하기

 

미션. 잡서칭 Final Goal

1. 나의 Final Goal(최종 목표)은?

  • 예시. 이력서는 꼭 완성합니다!
  • 이력서는 꼭 완성하기
  • 기술면접 연습하기
  • 취업하기
  •  

2. 나는 ~ OOO하는 SW 개발자!

  • 나는 끝없이 성장하는 웹개발자!
  • 나는 일할때는 일하고 쉴때는 쉴줄아는 개발자
  • 나는 한 분야의 달인이 되는 개발자

 

'코드스테이츠' 카테고리의 다른 글

메인 프로젝트 회고  (0) 2022.12.07
기술면접 준  (2) 2022.10.19
CORS 에러를 해결하는 방법 및 proxy 기능  (0) 2022.10.13
[Deploy] CI/CD  (0) 2022.10.12
Lighthouse  (0) 2022.10.07

+ Recent posts