[노개북] It 5분 잡학사전#9 - ep. 35~38
📌 오늘 TIL 3줄 요약
비밀번호는 해시 함수, 솔트를 통해 되돌릴 수 없는 랜덤 문자열로 저장
함수형 프로그래밍은 결과 중심의 선언으로 실수를 줄이고 가독성을 높임
함수형 프로그래밍은 명령형 프로그래밍 위에 쓴다고 할 수 있음
📆 TIL (Today I Learned) 날짜
2023-12-19
📚 오늘 읽은 범위
에피소드 35~38
📝 책에서 기억하고 싶은 내용
에피소드 35 비밀번호는 어떻게 저장될까?
비밀번호를 데이터베이스에 그대로 저장하면 운영자, 개발자가 접근하여 볼 수 있어서 안됨
해시 함수를 사용해서 입력 받은 값을 무작위 값으로 변화시켜서 저장해야 함
해시 함수는 동일한 입력값에 대해 동일한 출력값을 가짐
입력값이 살짝만 바뀌어도 출력값은 완전히 바뀜
출력값을 입력한다고 해도 입력값으로 복원할 수가 없음
해시 함수의 취약점 - 레인보우 테이블
입력, 출력 쌍이 저장되어 있는 테이블
레인보우 테이블이 있으면 비밀번호를 복원해서 볼 수 있음
솔트
아주 작은 무작위 텍스트를 비밀번호에 추가하여 해시 테이블에 통과시킴
레인보우 테이블이 있어도 원래 비밀번호를 찾을 수 없게됨
에피소드 36~37 객체 지향 프로그래밍이 뭐죠?
프로그래밍 패러다임은 프로그래밍할 때의 관점, 방식을 말함
객체 지향 프로그래밍
함수형 프로그래밍
절차 지향 프로그래밍
하나의 언어가 여러가지 프로그래밍 패러다임을 지원하기도 함
- Java는 객체 지향 프로그래밍과 함수형 프로그래밍을 지원함
클래스
공통된 속성을 가지고 있지만 데이터는 다른 객체들을 생산하는 공장 같은 역할
상속을 통해서 클래스의 속성, 함수 등을 자식 클래스에게 물려줄 수 있음
에피소드 38 함수형 프로그래밍이 뭐죠?
객체 지향 프로그래밍과 마찬가지로 프로그래밍 패러다임 중 하나
함수형 프로그래밍은 '버그가 발생하기 어려운 구조'여서 개발자에게 매우 유용함
샌드위치 만들기 예시로 보는 선언형, 명령형 프로그래밍
선언형 프로그래밍에서는 'BLT 샌드위치를 만들어줘!'하고 원하는 결과값을 선언함
명령형 프로그래밍에서는 결과값에 어떻게 도달하는지 선언함
토스트 빵 2개를 꺼내서 구워라
양상추 2~3장을 씻고, 토마토를 얇게 썰어서 2조각 준비하라 (...)
(1)의 토스트 빵 1개 위에 (2)의 재료를 쌓은 다음, 나머지 토스트 빵 1개로 덮어라.
대표적인 선언형 프로그래밍으로는 CSS가 있다.
- 배경색을 바꿀 때 바꿀 배경색을 선언하지 바꾸는 방법을 선언하지 않는다.
자바스크립트로 보는 선연형, 명령형 프로그래밍
명령형 프로그래밍에서는 비교하는 방법, 교체하는 방법까지 자세히 선언
세세하게 컨트롤할 수 있지만 실수가 발생하기 쉬움
작성한 코드를 동료가 이해하기 어려울 수 있음
선언형 프로그래밍에서는
replaceAll
함수 호출replaceAll
은 어딘가에 명령형 프로그래밍으로 작성되어 있음선언형 프로그래밍은 명령형 프로그래밍 위에 쓴다고 말할 수 있음
결과 중심으로 코드를 작성하니 실수도 적고, 동료가 이해하기도 쉬움
보너스 - 개발자 번아웃 대처법
휴식 시간 갖기 - 컴퓨터에서 잠깐 멀어져서 휴식을 취해볼 필요가 있음
일하는 시간 제한하기 - 컴퓨터만 있으면 일할 수 있으니까 일과 삶의 경계가 모호
몸을 움직이고 건강한 음식으로 활력 찾기
😀 오늘 읽은 소감 및 떠오르는 생각
함수형 프로그래밍이 왜 유용한지 정말 간단하게 잘 설명한 것 같아서 굉장히 재밌게 읽었다. 짧은 글이었지만 여러가지 유익한 내용들이 많이 담긴 것 같아서 가볍지만 재밌게 읽을 수 있는 것 같다.
개발자 번아웃 대처법에서 일하는 시간을 제한하는 방법에 대해서 너무 공감이 갔다. 노트북 분리불안이 살짝 있는 것 같은데 일하는 시간을 제한함으로써 이 문제도 어느 정도 해결이 될 것 같다. 또 실제로 일하는 시간이 제한되어 있어야지 더 집중해서 빠르게 끝낼 수 있는 것 같다.