Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
[TIL] IT 5분 잡학사전 DAY 12
#book_club
1년 전
457
1

오늘 TIL 3줄 요약

  • 일주일에 하루정도 코딩 안하고 쉬는거에 죄책감 들 필요 없다

  • 비밀번호도 개발자가 알 수 없도록 해주는 시스템이 있다

  • 나는 개발의 세계 0.01%도 아는 것 같지 않다

TIL (Today I Learned) 날짜

2023.09.05 (화)

오늘 읽은 범위

Episode 35 ~ 38

책에서 기억하고 싶은 내용을 써보세요.

  • 비밀번호 시스템

    • 해시 함수

      • 데이터베이스 앞에 입력한 값을 무작위 값으로 둔갑 시켜 줌

        • ex) 12345 -> 3!@axE

        • 동작 규칙:

          1. 동일한 입력값에 대해 동일한 출력값을 가짐

            • 1:1 대응 관계 지속

          2. 입력값이 아주 살짝만 바뀌어도 출력값은 엄청 크게 바뀜

            • 12346 -> c0#acS

            • 해시 함수는 엄청난 무작위성을 지님

          3. 반대로 입력한다고해서 원래 값이 나오지 않음

            • c0#acS -> 12346 X

        • 비밀번호가 해시 함수에 통과하여 얻은 무작위 결괏값을 데이터베이스에 저장

        • BUT 완벽하지 않음 -> Why? 레인보우 테이블 (rainbow table) 때문에

          • 해시 함수가 변경한 값을 원래 값으로 연결한 표

          • 레인보우 테이블로 원래 비밀번호를 알 수 있음

      • 최종병기 = 솔트 (salt)

        • 아주 작은 무작위 테스트

        • 비밀번호를 무작위 테스트 솔트와 합쳐서 해시 함수에 통과

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

  • 프로그래밍 패러다임 (programming paradigm)

    • 프로그래머가 프로그래밍을 할 때의 관점, 방식, 등 (프로그래밍을 하는 사고의 틀)

    • 대표적인 프로그래밍 패러다임: 절차 지향 프로그래밍, 객체 지향, 프로그래밍, 함수형 프로그래밍

      • 객체 지향: 자바

      • 함수형 프로그래밍: 자바, 자바스크립트, 파이썬, 등

  • 객체 지향 프로그래밍

    • 클래스: 속성은 같지만 데이터는 다른 재료를 위한 공장

    • 상속: 기본이 되는 클래스를 나머지 클래에 상속 시킴

  • 함수형 프로그래밍

    • 버그가 발생하기 어려운 구조

    • 선언형 프로그래밍

      • 원하는 결괏값을 선언

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

        • 자바스크립트: replaceAll("공백", "하트");

          • 모든 공백을 하트로 바꿔줘

    • 명령형 프로그래밍

      • 원하는 결괏값에 어떻게 도달하는지 선언

      • 할 일을 세세하게 지시할 수 있지만 개발자가 실수하기 쉽고 동료가 이해하기 어려움

        • 자바스크립트: for (let i = 0; i <text. lenght; i++) {if (text[i] === "공백") {result += "하트";} else {result += text[i];}}

          • 글자를 1개씩 다 비교해서 공백이면 하트로 교체하고 공백이 아니면 패스해

    • 함수 중심으로 코드를 적는 방식으로 선언형 프로그래밍 콘셉트를 유지

      • 홀수를 제거하는 코드: function checkForOdd(item) {return item % 2 === 0;} function removeOdd(item) {return items.filter(checkForOdd);}

        • filter의 인자로 checkforOdd라는 함수를 보냄

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 함수형 프로그래밍은 꼭 배워야한다

  • 주로 번아웃이 왔다고 느끼면 잠시 휴식을 취했지만 (근데 휴식을 취하면서 우울했다) 이건 이미 늦은거였다. 번아웃은 미리 예방해야 한다.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • 선언형 프로그래밍 혹은 명령형 프로그래밍을 반드시 사용해야하는 경우가 있을까?

오늘 읽은 다른사람의 TIL

  • X

1 comment