개발 이야기/개발 도서

IT 5분 잡학사전 #8

sonoa 2023. 2. 22. 08:48
반응형

생각 정리 

해시 함수는 대충 알고 있었는데, 솔트는 처음 들었다. 보안이 필요한 데이터를 안전하게 관리할 수 있다는 점이 좋았다

객체지향에 대한 관련 질문이 많았지만, 정확한 개념을 확립하지 못 하고 있었는데, 적절한 예시로 이해할 수 있어서 좋았다. 그러나 아직 클래스에 대한 개념이 부족해서 보충학습이 필요하다

어떤 직업을 가지든 오랫동안 하기 위해서는 체력 관리가 중요하다고 생각한다. 한 자세로 오랫동안 있는다는거 자체가 몸에 무리를 주기 때문이다. 요즘 라운드숄더때문에 어깨가 조금씩 아프기 시작했다. 체력에 조금 더 신경을 써야겠다.

 

읽은 범위 

Ep.35 : 비밀번호는 어떻게 저장될까?

Ep.36 : 객체 지향 프로그램이 뭐죠? ①

Ep.37 : 객체 지향 프로그램이 뭐죠? ②

Ep.38 : 함수형 프로그램이 뭐죠?

에피소드 35 : 비밀번호는 어떻게 저장할까 ?

number ID password
1 nico nico1234
2 lynn lynn0920
3 beadori !doridori123

비밀번호를 그대로 데이터 베이스에 저장하면 운영자, 개발자 모두 볼 수 있고, 시스템을 구축한 사람도 볼 수 있기 때문에 위험하다

해시함수 를 사용하면 비밀번호 시스템을 안전하게 구현할 수 있다

해시함수

해시 함수의 규칙 

  1. 동일한 입력값에 대해 동이란 출력값을 가진다
  2. 입력값이 아주 살짝만 바뀌어도 출력값은 엄청나게 크게 바뀐다
  3. 반대로 입력한다고 해서 원래 값이 나오지 않는다 (한쪽 방향으로만 설계된 함수!)

해시 함수

솔트 : 비밀번호와 무작위 텍스트를 합쳐서 해시함수를 통과시키는 방법

솔트

에피소드 36 : 객체 지향 프로그래밍이 뭐죠 ? <1> : 클래스

프로그래밍 패러다임: 프로그래머가 프로그래밍을 할 때의 관점, 방식 이런 것, 프로그래밍을 하는 사고의 틀
(종류: 절차지향 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍 등)
프로그래밍 언어: 이런 프로그래밍 패러다임을 하나 또는 하나 이상을 지원하는 언어
(예: 자바-객체 지향 프로그래밍, 함수형 프로그래밍)
// 게임속 플레이어를 만들어보자! 
const player = {
  name:'빌게이츠',
  health:85,
  skill:'프로그래머'
}
// 플레이어가 3명이라면?
const player_1= {
  name:'빌게이츠',
  health:85,
  skill:'프로그래머'
}
const player_2= {
  name:'일론머스크',
  health:90,
  skill:'테슬라'
}
const player_3= {
  name:'니꼬',
  health:100,
  skill:'선생님'
}

모두 name, health, skill 이라는 같은 속성을 가졌기 때문에, 플레이어의 틀을 만들어줄 수 있는 공장을 만들 수 있어

//  플레이어 공장, 클래스 
class Player {
  constructor(name, health, skill) {
    this.name = name;
    this.health = health;
    this.skill = skill;
    this.xp = 0;
  }
}
// 플레이어 생성
const bill = new Player('빌게이츠', 85, '프로그래머')
const elon = new Player('일론머스크', 90, '테슬라')
const nico = new Player('니꼬', 100, '선생님')

에피소드 37 : 객체 지향 프로그래밍이 뭐죠? <2> : 상속

class Human {
  constructor(name) {
    this.name = name;
    this.arms = 2;
    this.legs = 2;
  }
}
class Teenager {
  constructor(name) {
    this.name = name;
    this.arms = 2;
    this.legs = 2;
    this.emotional = true;
  }
  curse() {
  	return '$%^@#%!#$#';
  }
}
class Baby {
  constructor(name) {
    this.name = name;
    this.arms = 2;
    this.legs = 2;
    this.cute = true;
  }
  cry() {
  	return 'waa waa!';
  }
}

코드에서 중복되는 부분을 볼 수 있을거야 

이렇게 중복되는 걸 해결할 수 있는 것이 상속 이야

class Human {
  constructor(name) {
    this.name = name;
    this.arms = 2;
    this.legs = 2;
  }
}

// 상속 
class Teenager extends Human {
  constructor(name) {
    this.emotional = true;
  }
  curse() {
  	return '$%^@#%!#$#';
  }
}
class Baby extends Human {
  constructor(name) {
    this.cute = true;
  }
  cry() {
  	return 'waa waa!';
  }
}

에피소드 38 : 함수형 프로그래밍이 뭐죠 ?

함수형 프로그랭은 프로그램 패러다임중 하나야

 

// 명령형 프로그래밍 - 공백을 ♥ 로 바꾸기
// 명령을 내리는 것 처럼 어떻게 하는지 하나씩 알려줘
function spaceToHeart(text) {
  let result = "";
  for(let i = 0; i < text.length; i++) {
    if(text[i] === "") {
      result += "♥️";
    } else {
      result += text[i];
    }
  }
  return result;
}


// 선언형 프로그래밍 - 공백을 ♥ 로 바꾸기
function spaceToHeart(text) {
  return text.replaceAll("","♥");
}

 

함수형 프로그래밍
구분 선언형 프로그래밍 명령형 프로그래밍
의미 원하는 결괏값을 선언 (결과중심) 원하는 결곽값에 어떻게 도달하는 지 선언
예시 "BLT 샌드위치를 만들어줘!" BLT 샌드위치를 만드는 방법 (1,2,3 단계별로 설명)
대표 CSS  
장점 실수가 적다, 동료가 코드를 이해하기 쉽다 할 일을 세세하게 지시할 수 있다
단점   실수하기 쉽다, 동료가 코드를 이해하기 어렵다

 

개발자의 번아웃, 이렇게 대체해 봐!

  1. 휴식 시간을 가져라
    • 코딩이 항상 흥미진진하고 즐겁지 않을 수도 있어
    • 개발자도 컴퓨터 앞에서 잠시 멀어져서 제대로 휴식을 취할 수 있어야 해일하는 시간을 제한하라
  2. 일하는 시간을 제한라 
  3. 몸을 움직이고 건강한 음식으로 활력을 찾아라
번아웃을 예방하는 가장 좋은 방법은 스스로 건강을 챙기는 거라고 생각해

 

 

 

반응형

'개발 이야기 > 개발 도서' 카테고리의 다른 글

제로초 자바스크립트 입문 #01  (0) 2024.03.05
IT 5분 잡학사전 #9  (2) 2023.02.23
IT 5분 잡학사전 #7  (0) 2023.02.21
IT 5분 잡학사전 #6  (0) 2023.02.20
IT 5분 잡학사전 #5  (0) 2023.02.17