TIL 221207 마크업 관련 / useSelector, useDispatch(별 거 없음) / big o가 왜 필요할까

Chae·2022년 12월 7일

TIL 2212

목록 보기
7/22
post-thumbnail

🎆 오늘 한 것

  • 수업 들은 거 정리 복습
  • 테일윈드 스터디
  • 과제1 환경 설정
  • deep dive 23장 실행 컨텍스트 복습
  • 리덕스 강의 보기
  • 알고리즘 강의 보기

🙄 오늘 하려고 했는데 못한 것

  • 타입스크립트 책 읽기



✨ 오늘 배운 것 관련

🎇 웹 접근성 마크업

이 사이트를 봤을 때 나는 '스타벅스를 가까이에서 경험해보세요'를 헤드2로 잡았을 것 같은데, 선생님은 숨김 텍스트로 h2 '관련 제목' 을 만드는 게 낫다고 제안..?이라고 해야되나? 암튼 그걸 하셨다. 생각지도 못했던 것이라 넘 신기했다... 나도 이런 사고가 자연스럽게 되는 날이 왔으면 좋겠음...



✨ 리덕스 찍먹 useSelector / useDispatch

import { useDispatch, useSelector } from "react-redux";
import classes from "./Counter.module.css";

const Counter = () => {
  const dispatch = useDispatch();

  const counter = useSelector((state) => state.counter);
  // 함수를 보내고 그 함수를 리덕스가 실행
  // 그럼 그 함수가 어떤 데이터를 스토어에서 추출할지 결정
  // state.counter를 가져오겠다고 함수를 보낸 것임
  // 그걸 상수에 저장해서 리덕스가 관리하는 카운터를 가져옴
  // useSelector를 쓰면 리덕스가 자동으로 subscription을 설정

  // useSelector를 쓰면 스토어의 데이터가 바뀔 때마다 자동으로 최신의 상태를 가져올 것임

  const incrementHandler = () => {
    dispatch({ type: "increment" });
    // useDispatch hook 사용해서 함수 호출
  };
  const decrementHandler = () => {
    dispatch({ type: "decrement" });
  };

  const toggleCounterHandler = () => {};

  return (
    <main className={classes.counter}>
      <h1>Redux Counter</h1>
      <div className={classes.value}>{counter}</div>
      <button onClick={incrementHandler}>Increment</button>
      <button onClick={decrementHandler}>Decrement</button>
      <button onClick={toggleCounterHandler}>Toggle Counter</button>
    </main>
  );
};

export default Counter;

재밌다 재밌다!!🙄...! 재..밌다!!



✨ [알고리즘] Big O 표기법을 왜 써야돼?

1에서 N값의 사이에 있는 모든 숫자를 더하는 펑션을 만든다고 생각하자

function addUpTo(n) {
  let total = 0;
  for (let i = 1; i <= n; i++) {
    total += i;
  }
  return total;
}

var t1 = performance.now();
addUpTo(1000000000);
var t2 = performance.now();
console.log(`Time Elapsed: ${(t2 - t1) / 1000} seconds.`)


// Time Elapsed: 0.6657086999416352 seconds.

이 해결방법부터 생각남

그리고, 수학을 잘한다면 이것도 생각날 것임...난 수학 못해서 생각 못함🙄
그걸 공부하려고 이러고 있는 거니까...흠흠

function addUpTo(n) {
  return (n * (n + 1)) / 2;
}

var time1 = performance.now();
addUpTo(1000000000);
var time2 = performance.now();
console.log(`Time Elapsed: ${(time2 - time1) / 1000} seconds.`);


// Time Elapsed: 0.000020600080490112306 seconds.

등차수열의 합으로 검색하면 공식이 대충 나온다...🙄🙄

위의 결과값을 보면 반복문을 돌리는 것보다 등차수열의 합 공식을 사용해 값을 구하는 게 훨씬 빠르다는 걸 알 수 있음

근데 이렇게 수동으로 속도를 재는 게 가장 좋은 방법은 아님...
기기사양에 따라 계산 값이 다를 수도 있고, 다른 뭔가를 실행 중이라서도 달라질 수 있음.

그리고 개빨리 계산 되는 것은 속도 측정 정확도가 떨어짐. 개빨라서 비교가 잘 안되는 것임. 그래도 그 중에서 제일 빠른 코드가 있긴 할 것 아님

그럼 그걸 어케 평가?

이럴 때 쓰는 게 빅오(Big O) 표기법이라는 것...

🎇 막간 수학 상식 : 점화식

  • 점화식(재귀식)이란 수열에서 이웃하는 두 개의 항 사이에 성립하는 관계를 나타낸 관계식
  • 대표적인 점화식
    .. 등차 수열 : F(n) = F(n - 1) + a           a: 고정된 상수
    .. 등비 수열 : F(n) = F(n - 1)*a
    .. 팩토리얼 : F(n) = F(n - 1) + F(n - 2)
    .. 피보나치 수열 : F(n) = F(n - 1) + F(n - 2)



🎆 내일 할 것

  • 수업 들은 거 정리하고 복습
  • 수업 들으면서 여유 있으면 과제1 조금씩 진행해보기
  • 테일윈드 관련 궁금한 거 정리해서 디엠 드려보기?(전역에 transition / base, components, utilities 활용 방법 등등...)
  • 이듬 강의
  • 리덕스 강의 보기
  • 알고리즘 강의 보기
  • deep dive 24장 클로저

이거 다 지키자는 것이 아님 최대한 지켜보자!!

📌 킵해놓은 todo

  • preload / modulepreload / prefetch 공부... 언제하지?
  • deep dive 19장 프로토 타입

📚 이번 주 개인 목표

  • 일요일까지 과제 1은 테일윈드 2는 퓨어 css로 완성하기. 완성 후 궁금한 점 질문하기
  • 야무쌤 강의 html 파트 다 보기 / 여유되면 css 파트도 최대한 보기
  • 리덕스 지금 보는 파트 다 보기
  • 알고리즘 빅오 표기법 공부

다 지킬 수 있을 자신은 없지만 일단 잡아놓고 안되면 다음 주에 하는 걸로...



📝 오늘의 일기

완전 노베이스인 분들 이 수업 진도 다 따라가고 있는게 너무 대단...리스펙...

나 html css에 대한 애착이 좀 커서(애초에 이게 재밌어서 퍼블리셔 일을 한거지 나는 재미없으면 절대 안 한다) 요즘 수업 너무 재밌고 어렵고 괴롭고 뿌듯하고 다 하고있다...
강사님 노베이스 대상이라 유...하게 수업하시는 거지 원랜 완전 호랑이 선생님이신 것 같은데 진심 오프라인 강의 들어보고 싶음ㅠㅠ 엄청 유익할 것 같은딩.. 그치만 나는 코테 문제를 잘 못 푸니까........................ 에혀혀😞 공부 열심히 해야징

테일윈드 스터디
재밌었다! 슬슬 이 부캠에 적응하고 있는 것 같음. 아직 디코에서 낯선 분들 앞에서 마이크 켜는 건 어색하고 힘들지만 다행히 지금 회고조도, 스터디조도 다들 둥글둥글하시고 분위기 괜찮다.

이거 맞나... 했던 부분들 오늘 조원분들한테 여쭤봤는데 다들 비슷한 고민을 하신 것 같다. 정리해서 토요일에 선생님께 가이드 부탁드려야징...


📌 오늘자 참고하면 좋을 링크

BFC

async defer
모던자스 async defer

profile
TIL(거의 일기)위주. 공부한 것들은 정리해서 깃허브에 올리고 있습니다. 개인적으로 공부 중인 내용들이기 때문에 틀린 정보가 있을 수 있습니다.

0개의 댓글