[노개북] It 5분 잡학사전#9 - ep. 35~38

📌 오늘 TIL 3줄 요약

  • 비밀번호는 해시 함수, 솔트를 통해 되돌릴 수 없는 랜덤 문자열로 저장

  • 함수형 프로그래밍은 결과 중심의 선언으로 실수를 줄이고 가독성을 높임

  • 함수형 프로그래밍은 명령형 프로그래밍 위에 쓴다고 할 수 있음

📆 TIL (Today I Learned) 날짜

2023-12-19

📚 오늘 읽은 범위

에피소드 35~38

📝 책에서 기억하고 싶은 내용

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

  • 비밀번호를 데이터베이스에 그대로 저장하면 운영자, 개발자가 접근하여 볼 수 있어서 안됨

  • 해시 함수를 사용해서 입력 받은 값을 무작위 값으로 변화시켜서 저장해야 함

    • 해시 함수는 동일한 입력값에 대해 동일한 출력값을 가짐

    • 입력값이 살짝만 바뀌어도 출력값은 완전히 바뀜

    • 출력값을 입력한다고 해도 입력값으로 복원할 수가 없음

  • 해시 함수의 취약점 - 레인보우 테이블

    • 입력, 출력 쌍이 저장되어 있는 테이블

    • 레인보우 테이블이 있으면 비밀번호를 복원해서 볼 수 있음

  • 솔트

    • 아주 작은 무작위 텍스트를 비밀번호에 추가하여 해시 테이블에 통과시킴

    • 레인보우 테이블이 있어도 원래 비밀번호를 찾을 수 없게됨

에피소드 36~37 객체 지향 프로그래밍이 뭐죠?

  • 프로그래밍 패러다임은 프로그래밍할 때의 관점, 방식을 말함

    • 객체 지향 프로그래밍

    • 함수형 프로그래밍

    • 절차 지향 프로그래밍

  • 하나의 언어가 여러가지 프로그래밍 패러다임을 지원하기도 함

    • Java는 객체 지향 프로그래밍과 함수형 프로그래밍을 지원함
  • 클래스

    • 공통된 속성을 가지고 있지만 데이터는 다른 객체들을 생산하는 공장 같은 역할

    • [Pasted image 20231220015746.png]

  • 상속을 통해서 클래스의 속성, 함수 등을 자식 클래스에게 물려줄 수 있음

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

  • 객체 지향 프로그래밍과 마찬가지로 프로그래밍 패러다임 중 하나

  • 함수형 프로그래밍은 '버그가 발생하기 어려운 구조'여서 개발자에게 매우 유용함

샌드위치 만들기 예시로 보는 선언형, 명령형 프로그래밍

  • 선언형 프로그래밍에서는 'BLT 샌드위치를 만들어줘!'하고 원하는 결과값을 선언

  • 명령형 프로그래밍에서는 결과값에 어떻게 도달하는지 선언

    1. 토스트 빵 2개를 꺼내서 구워라

    2. 양상추 2~3장을 씻고, 토마토를 얇게 썰어서 2조각 준비하라 (...)

    3. (1)의 토스트 빵 1개 위에 (2)의 재료를 쌓은 다음, 나머지 토스트 빵 1개로 덮어라.

  • 대표적인 선언형 프로그래밍으로는 CSS가 있다.

    • 배경색을 바꿀 때 바꿀 배경색을 선언하지 바꾸는 방법을 선언하지 않는다.

자바스크립트로 보는 선연형, 명령형 프로그래밍

  • 명령형 프로그래밍에서는 비교하는 방법, 교체하는 방법까지 자세히 선언

    • 세세하게 컨트롤할 수 있지만 실수가 발생하기 쉬움

    • 작성한 코드를 동료가 이해하기 어려울 수 있음

  • 선언형 프로그래밍에서는 replaceAll 함수 호출

    • replaceAll은 어딘가에 명령형 프로그래밍으로 작성되어 있음

    • 선언형 프로그래밍은 명령형 프로그래밍 위에 쓴다고 말할 수 있음

    • 결과 중심으로 코드를 작성하니 실수도 적고, 동료가 이해하기도 쉬움

      [Pasted image 20231220020842.png]

보너스 - 개발자 번아웃 대처법

  1. 휴식 시간 갖기 - 컴퓨터에서 잠깐 멀어져서 휴식을 취해볼 필요가 있음

  2. 일하는 시간 제한하기 - 컴퓨터만 있으면 일할 수 있으니까 일과 삶의 경계가 모호

  3. 몸을 움직이고 건강한 음식으로 활력 찾기

😀 오늘 읽은 소감 및 떠오르는 생각

  • 함수형 프로그래밍이 왜 유용한지 정말 간단하게 잘 설명한 것 같아서 굉장히 재밌게 읽었다. 짧은 글이었지만 여러가지 유익한 내용들이 많이 담긴 것 같아서 가볍지만 재밌게 읽을 수 있는 것 같다.

  • 개발자 번아웃 대처법에서 일하는 시간을 제한하는 방법에 대해서 너무 공감이 갔다. 노트북 분리불안이 살짝 있는 것 같은데 일하는 시간을 제한함으로써 이 문제도 어느 정도 해결이 될 것 같다. 또 실제로 일하는 시간이 제한되어 있어야지 더 집중해서 빠르게 끝낼 수 있는 것 같다.