오늘은 가벼운 잡담없이 바로 수업을 진행하셨다. 이전에 배웠던 부분에 대해 전체적인 복습 개념으로 시작을 하셨고, 중점적인 부분에 대해서만 확인하고 기초암호학을 넘어갔다.
전체적인 내용 복습.
동시에 Hash가 만들어지는 경우
- 이전 BlockHash 확인.
- 체인의 길이.
( 보통은 이전 BlockHash에서 이미 구분이 되는데 만약 이전 BlockHash가
같다면 체인의 길이로 확인하게 된다.)
- 암호화 : 원문을 암호화하는 과정.
- 복호화 : 암호문을 원문으로 만드는 과정.
- 단방향성 : 암호화만 가능한것.
- 양방향성 : 암호화와 복호화가 둘다 가능한것.
- 대칭키 : 말그대로 대칭이 되는 키다. 암호화와 복호화에 같은 키를 사용하는 암호화 방식이다. 대칭키가 "비공개키"로 불리는 이유는 암호화와 복호화가 같은 키를 사용하기 때문에 공개가 되었을떄 암호화,복호화가 모두 가능하기 때문에 비공개키라고 불린다.
- 비대칭키 : 비대칭키는 암호화와 복호화에 서로 다른 키를 사용한다. 다른 키를 사용하기 때문에 비대칭키는 "공개키"라고도 불리우는데 암호화에는 A키, 복호화에는 B키를 사용하기 때문에 A키가 공개되어도 B키가 없으면 복호화를 할 수없다. 심지어 B키가 아닌 또다른 C키를 이용하여도 열수없다. 무조건 B키 여야만 복호화를 할 수 있다.
- 내가 뭘 가지고 있는지는 알려주지 않아도 어떤 결과값을 만들어내고 싶으면 단방향성을 사용.
- 특정사이트를 통해 복호화를 시도하고 그 결과값이 간단하게 도출된다고해서 복호화가 가능한것은 아니다. (저장된 값이 나올뿐이다.)
- 복호화가 가능해 평문을 볼수있다는것 자체가 양방향성을 보여주는것이다.
- 원본 ( 보통 평문으로 불리고, 원문이라고도 불린다.)
- 이미지를 512px / 512px로 바꾸고 강사님께 드렸다. 강사님이 가스비를 써가며 일일이 사람들의 NFT를 만들어주셨다.. 어찌나 감사하던지.. 성현강사님 진짜 착하신분 같다.
const result = divide(2, 3);
console.log(result);
- 함수(Function)을 통해 원하는 값을 원하는 방식으로 도출해낼 수 있다.
console을 통해 선언을 한다.
function add(a, b) {
return a + b;
}
function addNoReturn(a, b) {
console.log(a + b);
}
const addAndSubtractTwo = add(2, 3) - 2;
console.log(addAndSubtractTwo);
addNoReturn(2, 3);
- return은 식을 응요해서 다양하게 사용할 수 있다.
const BLOCK = "블";
const BBLE = "쁠";
const CHAIN = "체";
const SCHOOL = "스";
const rightWord = BLOCK + CHAIN + SCHOOL;
if (rightWord === "블체스") {
console.log("블체스 화이팅!");
}
const 나는프로그래머다 = true;
const 나는천개의비트코인이있다 = false;
const 내가제일좋아하는음료는제로콜라다 = true;
// 나머지 변수도 사용해보세요.
let trueOrFalse = 나는프로그래머다;
if (trueOrFalse) {
console.log("당신은 거짓을 말하지 않는 선량한 사람입니다 😇");
} else {
console.log("당신은 거짓말쟁이에 나쁜 사람입니다 🤬");
}
const BLOCKCHAIN_SCORE = 10;
const FRONTEND_SCORE = 10;
let TOTAL_SCORE = BLOCKCHAIN_SCORE + FRONTEND_SCORE;
if (TOTAL_SCORE > 78) {
console.log("Great 😎");
} else if (TOTAL_SCORE > 50) {
console.log("Good 😀");
} else if (TOTAL_SCORE > 30) {
console.log("Try harder 🙂");
} else {
console.log("Sad ,.,.., 🥹");
}
if (TOTAL_SCORE < 0) {
console.log("??? 💀");
}
- else if를 사용하여 좀 더 다양하게 식을 활용할 수 있다.
// for (let i = ; [조건문]; [증감문]) {
// }
// i++;
// i = i + 1;
// i += 1;
// for (let i = 0; i < 10; i++) {
// console.log(i, "블체스 만세");
// }
i = 0 , j = 0
for (let i = 0; i < 15; i++) {
let star = ""; //별이란 변수에는 아무것도 없음
for (let j = 0; j < 15; j++) {
if (j < i) {
star += "*";
}
}
console.log(star);
}
- 왜 코드가 저렇게 짜였는지에 대해 코드를 보며 고민해보고 구조를 파악하는게 중요하다.
- add 부분을 넣어야 실행이 된다. console로 선언을 하더라도 add를 넣지 않으면 실행되지 않는다.
- 위 이미지처럼 식이 만들어져있지 않으면 다른 대입을 하여 계산을 해내지 못하고 단일 계산만 가능하다. 구성을 만들어 놓아야 그 안에 대입하여 결과값을 도출해낼 수 있다.
- = 과 ==과 ===의 차이 :
- 프로그래밍에서 =은 담기다. ex)let a = 2 (오른쪽값은 왼쪽에 담는다)
- ==은 왼쪽과 오른쪽이 같느냐를 확인한다.(type 기준.)
- ===은 값은 같지만 type이 다르면 성립하지 않는다. 비교하기 위해서는 ===를 쓰는게 좋다. (===은 값과 type을 둘다 비교를한다.)
- function = 함수
- object : ?
- 자바스크립트의 대부분은 object로 만들어져있다고 봐도 무방하다.
- ""안에 숫자를 넣던 어떤것을 넣어도 문자가 된다.
성현강사님이 드디어 개인 프로젝트를 주신다고 하셨다. 개인프로젝트를 진행하기에 앞서 어떤게 구현시킬지에 대해 기술적인 부분을 알아야하기 때문에 오늘부터 우리가 구현해낼 홈페이지에 대한 코드들을 하나씩 배우기 시작했다. 개인프로젝트 리뷰에 대한 내용은 내일부터 차근차근 해보도록 하겠다.
오늘도 하루가 끝났다. 오늘은 기초암호학 강의도 너무 재밌었고, 어제 복습을 해서인지 scss와 개인프로젝트 부분을 따라가는것도 그렇게 어렵게 느껴지지는 않았다. 여전히 어렵지만 그 상황속에서도 조금씩은 성장해 나가고 있다는 생각이 든다. 코딩에 코자도 모르던 내가 하나씩 코드를 짜고있는 모습을 보면 어딘가 모르게 대견한 마음이 들기도 한다. 아직 산입구 초입에 들어온 기분이지만 이렇게 하루하루 버텨내다보면 좋은날이 올거라고 생각한다. 부디 내일도 순탄한 하루가 되기를.....