기술 기록
-
소스코드로 react hook 동작 원리 살펴보기
이 글은 react 19를 기반으로 쓰여졌습니다. 목차react hook은 어디서 구현되고 있을까?useState는 진짜 useReducer로 이루어져 있을까?훅 객체 생성하고 linked list로 연결하기circular queue를 이용해 상태 update하기느낀점 책을 읽던 중, useState는 useReducer로 구현되었다고 하기에 진짜인지 궁금해서 소스코드를 찾아보기 시작했다.react hook은 어디서 구현되고 있을까?react/packages/react/src/ReactHooks.js at main · facebook/react · GitHubReactHooks 파일 뜯어보기react hook이니 ReactHooks.js 파일에 있을 것이라 예상했고, 다음과 같은 코드를 찾을 수 있었다...
2025.06.15
-
Next.js의 fetch API로 캐싱된 데이터는 어디에 저장될까?
고민의 시작Next.js로 프로젝트를 하던 중, fetch를 사용할 것인지 axios를 사용할 것인지에 대한 고민이 있었다.fetch 함수를 사용하면 Next.js의 캐싱 기능을 활용할 수 있지만, axios의 interceptor 등 인증을 위한 편리한 기능을 사용할 수 없었다. 어차피 캐싱을 하려면 React Query나 SWR을 사용하면 되지 않나? 라는 생각을 했는데, React Query의 캐시는 클라이언트의 인메모리에 저장되기 때문에, SSR에 적합하지 않을 수 있다는 사실을 알게 됐다. (Next.js의 SSR을 활용하려면 서버에서 렌더링해야하는데, React Query는 데이터를 클라이언트에 저장하므로 SSR을 하기에 제약이 생길 것 같았다.) 그러던 중, fetch로 캐싱된 데이터는 정확..
2025.04.29
-
개발자도구를 켰을 때만 실행되는 코드가 있다…? (batch update, 이벤트루프)
📌 상황드래그를 할 때 updatePosition()으로 컴포넌트의 위치를 업데이트하고, updateWorkTime()으로 해당 데이터의 시간을 업데이트를 하여 드래그 시 컴포넌트 내의 시간이 함께 변경되는 코드를 작성했다.그런데 개발자도구를 켜면 코드가 실행되고, 개발자도구를 끄면 코드가 실행되지 않았다. 📌 분석나의 가설updatePosition()과 updateWorkTime() 두 함수 모두 내부에서 useState로 선언한 workBlock을 기반으로 데이터를 가공한 후, setWorkBlock()을 실행한다.setState가 비동기로 실행되어 updatePosition()이 실행되기 전 updateWorkTIme이 실행되어 updateWorkTime이 실행되지 않는 것 처럼 보인다.o..
2025.10.25
최신 글
-
5개월
9월이 됐다. 본적은 플랫폼 개발을 하는 팀이지만, 겸직으로 발령된 팀에서는 프로덕트 개발을 하고 있다. 프로덕트이긴 하지만 플랫폼 성향을 가지고 있는 프로덕트라고 해야할까? 플랫폼도 재밌고 프로덕트도 재밌다. 그런데 플랫폼도 어렵고 프로덕트도 어렵다...요즘은 사용자 마음도 잘 모르겠고 내 마음도 잘 모르겠다. 어느 게 문제인지 정의하는 것도 어렵다. 그런데 구현은 쉽다... 프로덕트 자체가 어려운 문제를 마주한 것 같다. 나는 자존심이 강해서 내가 잘하고 싶은 것은 무엇이든 잘하고 싶다. 내가 만들고 내 팀이 만든 제품이 제일 잘됐으면 좋겠다. 그런데 현실적으로는 어렵다. 머리 속으로는 잘하고 싶은데 몸이 안따라오는 경우도 종종 있다. 최근에 일하면서 즐거웠던 일 오픈소스 버그 찾을 때가 재미있..
2026.09.06
-
입사 3개월차 단상
임시저장 해둔 글인데, 늦었지만 올려본다. 지금과 같은 생각도 있고 다른 생각도 있고... 벌써 3개월이 지났다니! 나도 이제 반년차 개발자다.근 한두달 간, 내가 무엇을 좋아하고 무엇을 싫어하고 무엇을 개발해야하는지에 대한 생각을 많이 했다.나는 어렵고 불가능해보이는 목표에 도전하는 것이 좋다.가능성 중독이라고 할 수도 있지만, 영원히 꿈꾸며 살고 싶다.그 중 하나는 lynx를 성공시키는 것이다.요즘은 인생을 즐겨보려 노력한다. 안하던 짓을 하려 부던히 노력하고 있다...본래 내향적이고 사람이 많은 곳을 어려워하는데디제잉 파티를 가본다던가 회사의 보드게임 팟에 낀다던가 휴가를 쓰고 여행을 간다던가 하는 것이 그러하다.남들이 하는 행동은 나도 해봐야겠다는 생각이 들었던 것 같다.아무튼 나는 제품을 만드는..
2026.09.06
-
입사 1.5개월차 기록
기록과 회고의 차이는 무엇일까? 왠지 회고라 하긴 낯부끄럽고 기록이라 하긴 얕아서 무엇이라 표현해야할 지 모르겠다. 토니가 지나는 글을 잘 쓰니 입사 초기부터 어떤 생각을 했고 어떻게 성장했는지를 연재하면 재밌을 것 같다는 이야기를 해주었어서 주기적으로 글을 써보기로 했다. 한 달에 한 번 정도 쓰고 싶었는데 한 달이 눈코 뜰 새 없이 지나가 두 달에 가까워진 지금 글을 올리게 되었다. 정규직 전환재입사를 4월 6일에 했으므로 한달 반이 지났다. (쓸 때는 한달 반이었는데 업로드를 미루다 보니 지금은 두달 가까이 되었다...) 인턴 기간이 끝나 한량처럼 백수의 삶을 살다 컬쳐핏 면접을 보고 전환이 되어 재입사를 했다. 컬쳐핏 면접은... 긴장을 너무 많이 했던 기억만 난다. 면접을 마치고 친구와 저녁을 ..
2026.06.01
-
비개발자를 위한 Claude Code 개발 환경 구성 가이드
이 문서는 개발 환경이 하나도 없는 맥북에서 시작해서, 이 프로젝트의 디자인을 Claude Code로 직접 고칠 수 있는 상태까지 만드는 걸 목표로 해요.💡 읽는 분께처음 ~9단계(Claude Code 로그인)까지는 직접 손으로 따라 해주세요. 명령어는 거의 다 복사 → 붙여넣기 → Enter예요. (귀찮으면 그냥 클로드한테 해달라고 해도 해주긴 할 듯)Claude Code가 켜진 뒤부터는, 막히는 게 생기면 이 문서를 Claude한테 그대로 보여주고 "여기 멈췄어, 도와줘" 라고 하면 돼요.한 단계 끝낼 때마다 "확인하는 법" 이 있어요. 거기서 기대한 결과가 안 나오면 다음으로 넘어가지 말고 멈춰주세요.모르겠으면 화면에 뜬 글자를 그대로 복사해서 Claude한테 물어보여주세요. 0. 설치할 도구 목..
2026.05.31
-
3개월 간의 당근 인턴 회고 🥕
회고를 쓴다면 '개발자는 글이 아니라 코드로 말한다'며 github 링크 한 줄만 올리는 상상을 했는데, 역시 그러기엔 할 말이 많다. 쓰다보면 너무 길어질 것 같아서 공백 포함 만자 내외로 맞추겠다는 다짐을 하며 글을 시작해본다. 무엇을 했는가?당근에서 프론트엔드코어팀이자 Lynx tf로써 lynx 개발을 했다. Lynx란?아마 이 글을 읽는 대부분의 사람은 Lynx가 무엇인지 모를 것이다. 간단하게 말하자면, 틱톡을 만든 회사인 ByteDance가 만든 React 기반 모바일 앱 개발 프레임워크이다. (더 자세한 정보를 알고 싶다면, 이전에 업로드한 Lynx란 무엇인가? 게시글을 참고하길 바란다.) 긱뉴스 링크도 첨부https://news.hada.io/topic?id=19688 Lynx - 웹 기술..
2026.03.29
-
Lynx란 무엇인가? 새로운 세상의 크로스플랫폼 프레임워크
Write once, Render anywhere. https://lynxjs.org/ LynxEmpower the web community and invite more to build cross-platform appslynxjs.org 당근에서 윈터테크 인턴으로 근무하며 3개월 간 Lynx 개발을 했다. 굉장히 즐겁게 개발했는데, 대부분의 사람은 Lynx가 무엇인지도 모를 것이다. Lynx가 무엇인지, Lynx 개발이 왜 재밌었는지 정리해봤다.Lynx란?2025년 3월, ByteDance(TikTok의 모회사)가 오랫동안 내부에서만 사용하던 크로스플랫폼 UI 프레임워크 Lynx를 오픈소스로 공개했다. Lynx는 웹 개발자가 기존의 CSS와 React 지식을 그대로 활용해 iOS, Android, H..
2026.03.28
-
2025 연말 회고
2025년. 내게 어땠나 묻는다면, 정말 재밌는 1년이었다고 대답할 수 있다. 2024년 하반기, 혼자 리액트 공부만 하다가 운좋게 들어간 현장실습으로 처음 협업을 하게 되었다. 인턴을 마치며 내겐 협업, 개발 경험이 많이 부족하다는 것을 느꼈고, 2025년에는 다양한 사람을 만나서 다양한 경험을 하고 싶다는 생각을 했다. 그래서 2024년 말에 세웠던 2025년의 목표는 아래와 같았다.기획자와 디자이너가 있는 환경에서 개발하기팀원들과 좋은 코드에 대한 논의(코드 리뷰)를 활발히 할 수 있는 환경에서 개발하기개발 좋아하는 친구들 많이 사귀기인턴을 하든 취업을 하든 실무 경험을 쌓기개발자랑 디자이너가 있으면 프로세스가 어떻게 달라질까? 코드 품질에 대해 엄격한 기준을 가지고 있는 사람과 함께 개발하면 어떤..
2026.01.05
-
개발자도구를 켰을 때만 실행되는 코드가 있다…? (batch update, 이벤트루프)
📌 상황드래그를 할 때 updatePosition()으로 컴포넌트의 위치를 업데이트하고, updateWorkTime()으로 해당 데이터의 시간을 업데이트를 하여 드래그 시 컴포넌트 내의 시간이 함께 변경되는 코드를 작성했다.그런데 개발자도구를 켜면 코드가 실행되고, 개발자도구를 끄면 코드가 실행되지 않았다. 📌 분석나의 가설updatePosition()과 updateWorkTime() 두 함수 모두 내부에서 useState로 선언한 workBlock을 기반으로 데이터를 가공한 후, setWorkBlock()을 실행한다.setState가 비동기로 실행되어 updatePosition()이 실행되기 전 updateWorkTIme이 실행되어 updateWorkTime이 실행되지 않는 것 처럼 보인다.o..
2025.10.25
-
인생의 타임라인
자소서를 쓰다 갑자기 내 생을 되돌아보아야겠다는 생각이 들었다.누군가 내게 자소서를 쓰기 전에 인생의 타임라인을 되짚어보라는 이야기를 했었는데... 한번 적어보려 한다.19살고3. 학업 스트레스로 게임 중독자가 되다.코딩을 좋아하고 게임을 좋아했으므로 자연스럽게 게임 개발자를 꿈꾸게 되었다.그때 한창 '로보토미 코퍼레이션'이라는 게임을 좋아했는데, 그 게임이 아주대 미디어학과의 게임 동아리에서 시작되었다는 이야기를 듣고 아주대 미디어학과에 가고 싶다는 꿈을 꾸게 되었다. 대학에 가면 마음 잘맞는 팀원들과 함께 인디게임을 개발하고 창업하고 대박을 치고 싶었다. 자소서에 진정성이 담겨 있어서 그런지 전액 장학금을 받고 입학했다. (현재 8학기 다녔는데 3학년 때 한번 성적 모자랐던 적 빼면 7학기 내내 등록..
2025.09.23
-
소스코드로 react hook 동작 원리 살펴보기
이 글은 react 19를 기반으로 쓰여졌습니다. 목차react hook은 어디서 구현되고 있을까?useState는 진짜 useReducer로 이루어져 있을까?훅 객체 생성하고 linked list로 연결하기circular queue를 이용해 상태 update하기느낀점 책을 읽던 중, useState는 useReducer로 구현되었다고 하기에 진짜인지 궁금해서 소스코드를 찾아보기 시작했다.react hook은 어디서 구현되고 있을까?react/packages/react/src/ReactHooks.js at main · facebook/react · GitHubReactHooks 파일 뜯어보기react hook이니 ReactHooks.js 파일에 있을 것이라 예상했고, 다음과 같은 코드를 찾을 수 있었다...
2025.06.15