| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- Javascript
- 개발자
- 1931 node.js
- 11399 node.js
- 노개북
- 21313 nodejs
- 11047 node.js
- 모던자바스크립트 딥다이브
- 1026 node.js
- 자바스크립트 일급객체
- 자바스크립트 딥다이브
- 백준1789
- 백준1026
- CSS flex
- const
- 1789 node.js
- 개인프로젝트
- 2217 node.js
- 코딩
- flex box
- 모던자바스크립트
- 모던자바스크립트DeepDive
- 1541 node.js
- 자바스크립트 함수
- 14655 nodejs
- 노마드북클럽
- 노마드스터디
- 백준25176
- 백준21313
- IT5분잡학사전
- Today
- Total
캐또's coding
#10. IT 5분 잡학사전 - 오류 없는 프로그램, 오류 없는 프로그래머 본문
- Day.10
- 오늘 읽은 범위: 챕터 35~ 챕터 38
- 오늘의 TIL 3줄 요약
- 암호를 암호답게, 해시와 솔트를 활용한 보안성능 향상!
- 함수형 프로그래밍으로 오류 가능성을 줄이자
- 건강 관리 -> 번아웃 안 옴 -> 프로그래밍 집중 -> 성장
책에서 기억하고 싶은 내용을 써보자
- 함수형 프로그래밍을 배운다면 여러분의 인생은 아주 크게 달라질 거야(217p)
- 번아웃을 예방하는 가장 좋은 방법은 스스로 건강을 챙기는 거(223p)
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적기
[ 오류 없는 프로그램, 오류 없는 프로그래머 ]
프로그래밍 패러다임에서 객체지향 프로그래밍이 선택되는 이유가 무엇일까? 결국은 똑같은 일을 반복하다 보면 인간은 실수를 할 수밖에 없지만, 컴퓨터는 적어도 똑같은 반복 작업을 하면서는 실수를 잘 하지 않기 때문이다.
함수형 프로그래밍이 선택되는 이유가 무엇일까? 명령형과 달리 선언형의 특징을 가지면서 오류가 발생하기 어려운 구조를 가지고 오류가 발생했을 때도 오류 지점을 찾기 쉽기 때문이다.
프로그래밍에서 오류가 없기 위해서는 결국 실수하지 않는 것, 안정성을 가지는 것이 아닐까 싶다.
오류 없는 프로그래머는? 번아웃이 오고 지치지 않는 프로그래머가 오류 없는 프로그래머라고 생각한다. 번아웃이 오고 셧다운되고, 그대로 멈춰버리는 프로그래머는 오류가 생긴 프로그래머다. 오류가 생기지 않기 위해서는 객체지향 프로그래밍이 그렇듯, 함수형 프로그래밍이 그러하듯 오류가 발생하지 않는 안정성을 가져가야 한다. 정해진 시간에 일하고, 건강함을 찾아서 효율적으로 일하는 몸을 만드는 것으로 인간이라는 프로그램의 오류를 줄일 수 있다.
=> 오류 없는 프로그램 == 오류 없는 프로그래머
ep35. 비밀번호는 어떻게 저장될까?
여러 웹사이트에서 로그인하는 일상이 매일 반복 & 자동저장 기능도 활용! 어떻게?
비밀번호 시스템 구현.
잘못된 예시: 비밀번호를 데이터베이스에 그대로 저장하는 것
=> 데이터베이스에 접근할 수 있는 운영자, 개발자 모두 볼 수 있음.
=> 데이터베이스 자체를 암호화 하기도 함.
괜찮은 예시: 해시함수
=> 비밀번호 -> 해시함수 -> 무작위값으로 둔갑!
해시함수 규칙 1: 동일한 입력값에 대해 동일한 출력값을 가진다
해시함수 규칙 2: 입력값이 아주 살짝만 바뀌어도 출력값은 엄청나게 바뀐다
해시함수 규칙 3: 반대로 입력해도 원래 값이 나오지 않는다
레인보우테이블rainbow table: 해시함수도 완벽하지 않다!!
=> 해시함수가 변경한 값을 원래의 값과 연결한 표임.
=> 해시함수 통과한 값을 레인보우테이블에서 찾으면 원래 값을 알 수 있음
최종병기 솔트salt: 무작위 테스트 최종병기
=> 해시함수 + 솔트 ? 환상~
ep36. 객체 지향 프로그래밍이 뭐죠? 1
프로그래밍 방식에는 패러다임programming paradigm은 프로그래머가 프로그래밍 할 때의 관점, 방식.
프로그래밍 언어는 하나 혹은 하나 이상의 프로그래밍 패러다임을 지원함
예) 자바: 객체지향프로그래밍, 함수형프로그래밍 지원함
프로그래밍 패러다임 종류: 절차 지향 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍
- 객체 지향 프로그래밍: 게임 만든다고 생각하고, 게임 캐릭터의 데이터는?
const player = {
이름: "미식스",
체력: 500,
스킬: 사냥,
};
하나만 만들거라면 위에 작성한 것처럼 그냥 작성하면 되겠지? 그런데 2명이라면? 1000명이라면?
혹시 경험치라는 것을 추가하고 싶다면?
이러한 사태를 피하기 위해서 등장하는 class!!
class player {
constructor(name, health, skill) {
this.name = name;
this.health = health;
this.skill = skill;
}
}
//위처럼 클래스를 만들고
const samuel = new player("samuel", 534, "shoot");
const paul = new player("paul", 65, "angry");
//이렇게 클래스를 이용해서 값만 다른 플레이어들 양산 가능함
기본 틀을 맞춰놓고 작성하면 코드를 하나하나 작성하는 게 아니라 공장처럼 찍어낼 수 있는 거!
ep37. 객체 지향 프로그래밍이 뭐죠? 2
상속에 대해서 얘기해보자. 상속이 뭐냐? 상속하는 거임
class 클래스이름 extends 상속시킬클래스이름 {
constructor(name) {
this.aijgreo = aorigj;
}
}
중복되는 값들이 있다면 클래스를 상속시키면 원래 상속받은 클래스가 가진 것들은 다 가지면서 자신만의 새로운 속성을 추가할 수 있음.
=> 알겠음? 의미도 명확해지고 코드도 줄어서 객체지향이 유행할 수 있었지!
ep38. 함수형 프로그래밍이 뭐죠?
개발자라면 반드시 배워야 하는 함수형 프로그래밍.
=> 왜? 버그가 발생하기 어려운 구조라서
기존 프로그래밍과 비교해보자
- 선언형, 명령형 프로그래밍의 차이
선언형 프로그래밍: 원하는 결괏값를 선언한다
=> 실수 적고 동료가 코드 이해도 쉬움
명령형 프로그래밍: 원하는 결괏값에 어떻게 도달하는지 선언한다. 예) css
=> 할 일을 세세하게 지시 가능 but 개발자가 실수하기 십상
함수형 프로그래밍은 함수의 인자로 함수를 보내는 방식 등, 함수 중심으로 코드를 적어 선언형 프로그래밍 콘셉트 유지
개발자의 번아웃
팁1. 휴식 시간을 가져라
팁2. 일하는 시간을 제한하라
팁3. 몸을 움직이고 건강한 음식으로 활력을 찾아라
궁금한 내용, 잘 이해되지 않는 내용
- 없음
'완료페이지 > IT 잡학사전' 카테고리의 다른 글
| #11. IT 5분 잡학사전 - 채신기술 (0) | 2023.01.25 |
|---|---|
| #9. IT 5분 잡학사전 - 혼돈 상태 해제 '~가 아니다!' (0) | 2023.01.22 |
| #8. IT 5분 잡학사전 - 캐치 (0) | 2023.01.21 |
| #6. IT 5분 잡학사전 - 자료구조와 알고리즘 필요성과 이해 (0) | 2023.01.19 |
| #5. IT 5분 잡학사전 - 백엔드가 뭐죠 (0) | 2023.01.18 |