JIGGAG

2월 한달동안 로그

2026년 3월 5일

그린란드를 왜 탐내는가?

AI 코드와 소프트웨어 장인정신

  • 가장 크게 접하고 있는 것은 유튜브
    • 절반 이상이 AI 로 만들어진 영상인 것 같다
    • 비슷한 것들이 많아져서 오히려 쉽게 소비하게 되는데
  • 코드에 대한 느낌도 비슷하지 않을까
    • AI 가 작성한 코드가 많아지게 되면서
    • 이걸 한번 리뷰하고 사용하는지 바로 사용하는지에 따라 느끼게 되는 피로도
  • AI 와 협업하는 것 자체가 나쁘지 않다
    • 도움을 받을 수 있다는 점에서
    • 직접 고민하던 것들이 줄어들면서 무지성으로 입력-출력 하게 되는 것을 지양한다면
  • 띄우고 버리는 (Pump & Dump) 소프트웨어의 시대
    • AI 도움을 받아 많은 소프트웨어들이 나오고 있다
    • 쉽게 만들 수 있게 되면서 스토어에서는 까다로운 심사 조건이 추가되고 있다고 느낀다
    • AI 가 만들어낸 마케팅으로 많은 사용자에게 다가가게 된다
  • 누구나 접근할 수 있고 시도할 수 있고 내보낼 수 있다는 점에서
    • 엄청난 장점이 있다고 생각하는데
    • 이런 것들에 대한 가치를 판별하는 능력이
    • 스스로에게 더 부가되는 것 같다
  • 깊이 생각하던 시절이 그리워요
    • 계속 비슷한 느낌의 글이 올라오고 보이는걸 보면
    • 비슷한 경험을 하고 있는 사람들이 많은듯
    • 설마 이것도 AI일지도 모른다
    • 동작하는 솔루션을 주었을때 이것을 스스로 다시 고민해보는 비율이 어느정도일까?
    • 나의 생각하는 시간에 함께 생각하는 이가 추가된 것으로 보면 어떨까

[번역] 장애허용성

  • 어디선가 예상치 못한 장애가 발생하더라도 정상적으로 동작을 계속 할 수 있도록 해주는 것
    • 에러 바운더리 🥊
  • 그럼 이 바운더리를 어느 정도로 설정하면 되는걸까?
    • 가능한 큰 단위?
      • 하나의 장애가 발생하더라도 전체를 사용하지 못한다
    • 가장 작은 동작하는 단위?
      • 각각의 너무 많은 바운더리가 설정되어 과하다고 느껴진다
      • 오히려 혼란스럽다
  • 장애의 영향을 최소화 하는 것 != 장애허용성
    • 많은 바운더리를 설정하는 것은 가장 좋은 선택이 아닐 수 있다
  • 그럼 적절한 바운더리는 어느 정도인가?
    • 이 컴포넌트에서 발생한 에러가 형제 컴포넌트에 어떤 영향을 미쳐야 하는가?
  • 서로 유의미한 관계로 얽혀있다면 같은 바운더리로 설정하는 것이 좋다
    • 영향력, 의존 범위에 따른 바운더리 설정
  • 의도적으로 무언가를 망가뜨려 보고, 어떤 일이 일어나는지 직접 확인해 보아야 합니다.

[번역] 리액트가 마침내 가장 큰 문제를 해결했습니다 - useEffectEvent의 묘미

  • 리액네 19 올라가면서 나온 useEffectEvent
    • 의존성을 완전히 제거할 수 있도록 구현된 것
    • 리액트 19에서 메모이제이션을 알아서 처리해줄게 하는 흐름과 동일한 느낌인데
  • const callback = useEffectEvent(() => ...);
  • 이 콜백은 어디서든 의존성 배열에 추가하지 않고서도 항상 최신의 값으로 접근할 수 있다는 점
    • 기존에는 useRef 를 이용해 같은 기대 구현을 했었다
    • 의존성 배열을 누락하여 발생할 수 있는 문제는 린트 룰을 설정해서 어느정도 보완하고 있고
    • 의도적으로 조절해야할때를 제외하고는 코드를 읽고 사용하는 과정에서 문제를 해결할 수 있긴한데
    • 루프로 걸려있는 경우는 문제가 될 수 있었겠다 🤔
  • useEffectEvent를 이용하면 메모이제이션 의존성 문제가 있었던 useCurring 을 다시 해볼 수 있을까?
    • 이름이 useEffect 라는 사실을 잊으면 안된다… 🚨
    • useEffect를 위한 Event이다
      • 참고: 리액트 문서
      • Effect Events are specifically designed to be used in Effects local to the component they’re defined in. If you need a callback for event handlers or to pass to children, use a regular function or useCallback instead.
    • 다른 목적으로 사용되는 것이 아니다는 사실!
    • 정말 useRef로 정리했던 의존 관계만 해결해준 모양이다
  • (추가)