메모이제이션(Memoization)의 원리와 함수 구현해보기, 적용 프로그래밍을 하다 보면, 같은 연산을 반복해서 수행하는 상황을 자주 만납니다. 이런 경우, 이미 계산한 결과를 저장해 두었다가 재활용하면 성능을 크게 개선할 수 있는데요. 이 기법이 바로 메모이제이션(Memoization) 입니다.리액트에서의 useMemo 말고 직접 함수 구현은 처음이라 하나씩 공부하면서 정리해둔 내용입니다. 단순히 갖다 쓰기만 할줄 알았는데, 내부 로직을 직접 짜보니 흥미롭네요. 이번 글에서는 메모이제이션의 원리에서 시작하여 구현하며 비교해본 다양한 방법들, 그리고 적용까지 정리해 보겠습니다.1. 메모이제이션의 기본 원리메모이제이션은 간단히 말해 “입력 → 출력 결과”를 캐시에 저장해 두고, 같은 입력이 다시 들어왔을 때는 계산하지 않고 캐시에서 꺼내 쓰는 방식입니다.ex, 피보나치..
당근 프론트엔드 엔지니어 인턴 12-13주차 마지막 회고 (안녕!) 마지막 2주는, 독기가 올라서 (ㅋㅋ) 당근에서 할 수 있는 건 다 해보자는 마인드로.. 일하기로 했다. 안그래도 열심히 일하려 했건만,, 의도치않게 나오기 직전에 일이 많이 몰리는 바람에 야근을 매일하게 되었다. 일 원 없이 하고 간다!!! 12, 13주차는 매일까진 회고를 하지도 못했다. (너무 피곤해서 집가면 잠만 잠..), 마무리인만큼 오늘은 키워드 회고가 아니라 짧은 글과 사진을 놓고 가려한다. 와중에 추억용 사진도 몇장 남겨둬서, 평소 한두장 올릴 게 있던 반면 올릴 사진들이 좀 있다. 마지막 날, 세어보니 3개월동안 개인 피쳐 배포만 40건을 했다. 이중 1/3은 마지막 2주동안 한 것 같다. 내게 주어지는 테스크를 돌아보니 나는 운이 좋았고, 앞으로 개발자로 성장하기에 좋은 토대가 되는 인..
당근 프론트엔드 엔지니어 인턴 11주차 키워드 회고 린트 룰 제안과 팀 기여의 확장이번 주에는 용기 내어 린트 룰 추가를 제안했고, 프론트엔드 싱크 미팅 안건으로 직접 올렸다. 점진적으로 5개부터 적용하는 걸로 합의가 되었고, 하루 만에 적용 PR도 올렸다. 처음 인턴 때 인턴선배님이 린트 룰을 추가했던 걸 보고 놀랐었는데, 이제는 내가 팀에 기여할 수 있다는 게 새삼 신기하기도 했다. Fear Zone을 벗어나며중간 평가 이후 돌아보니, 처음의 Fear Zone은 확실히 벗어난 것 같다. figma 링크 추가, 린트 룰 제안, 계산 로직 픽스 같은 테스크들을 하면서 팀에 기여할 수 있는게 하나씩 늘어나다보니 내가 할 수 있는게 많아져서 좋았다.... 무지의 고통과 배움의 즐거움을 동시에 느끼면서 성장하고 있다는 확신이 생긴듯하다. 개인 루틴도 유지하..
당근 프론트엔드 엔지니어 인턴 10주차 키워드 회고 훅의 의존성 고민 이번 주엔 리뷰 반영 과정에서 훅의 의존성을 어디까지 둘 것인지 꽤 고민했다. 다른 파일들을 보며 파악해보니, 훅 안에서 formik 필드를 직접 관여시키는 건 조금 아닌 것 같아서, 결국 밖에서 주입해주는 방식으로 바꿨다. 기존 코드 스타일을 참고하면서 리뷰에 반영하고, 그 근거를 코멘트로 달아두니 마음이 한결 편해졌다. 오랜만에 센트리 에러 대응이 아니라 리뷰 반영을 하니까 진짜 좀 살 것 같았다. 개발을 하다보면 훅 뿐만 아니라 컴포넌트나 파일 단위의 관심사 분리에 대해서도 고민할 일이 많다. 이번에 훅을 정리하면서 고민한 결과로.. 결국 중요한 건 내가 만든 구조가 이후 이 파일을 건들 사람에게 직관적으로 보이느냐는 거라는 걸 조금씩 배우는 중이다.아직은 답이 딱 떨어지지 않지..
당근 프론트엔드 엔지니어 인턴 9주차 키워드 회고 일 없는 순간이 주는 불안가끔은 내가 할 일을 다 끝내거나 팀이 다른 일로 바빠서 내게 새로운 일이 오지 않는 시간이 생긴다. 그런데 이 순간이 참 견디기 힘들다. 오늘도 리뷰를 부탁드렸지만 받지 못했고, 결국 하루 종일 찝찝함을 안은 채 퇴근했다. 나는 분명 책임감 있게 하루를 보냈고, 리뷰가 밀린 건 내 탓이 아니다. 그럼에도 ‘눈치 보인다’는 기분을 떨치기 어려웠다. EMU 레포지토리로의 전사 마이그레이션당근 깃헙이 이사를 했다! EMU 로의 마이그레이션을 했는데, 이후엔 다양한 문제가 터졌다. CI/CD 파이프라인에서의 예상치 못한 에러, 권한 문제 등 작은 문제들이 2-3일정도 계속 이어졌다. 그 과정에서 내가 아직 제대로 이해하지 못한 영역이 많다는 걸 절실히 느꼈다. 내가 할 수 있는 부분..
당근 프론트엔드 엔지니어 인턴 8주차 키워드 회고 체력 관리를 위한 PT 시작 워크룸 수민님과 PT 를 시작했었다. 집-회사-집-회사 만 반복하다보니, 체력이 떨어지는게 느껴져서, 그야말로 살려고 운동하기 시작했다.일주일에 두번, 아침 7시로 일정을 잡았는데, 회사생활 때문에 시간을 이렇게 무리해서 잡을 수밖에 없었다. (수민님 감사해요 🙇🏻‍♀️)아침에 운동을 가는건 단조로운 일상에 생각보다 큰 힘이 되었다. 둘이 있으면 보통 웃게 되다보니 에너지를 나눌 수 있었던 것 같다. Graphql 에서의 range_delete와 connectionHandler지난 주 고생했던 graphql mutation 처리의 후속 테스크를 받았다. 이전부터 range delete가 너무 헷깔렸는데, 이는 deleteEdge의 구버전이라고 한다. connectionHa..
당근 프론트엔드 엔지니어 인턴 중간회고 (~7주차) 8주차 월요일에는 중간평가가 있었다. 중간회고를 하면서 개인적으로 1-7주차 회고도 다시 쭉 읽어보고, 정리해서 버디와 공유한 뒤에 피드백과 조언을 많이 들을 수 있었다. 1. 전반 목표초반에 설정한 인턴십 핵심 목표 두가지를 바탕으로 피드백 및 조언을 주셨다. (1) 팀에서 신뢰받을 수 있는 프론트엔드 엔지니어로 성장할 것 → 실력이 많이 올라옴. 가장 큰 부분은 QA 를 빡세게하고, 스펙 분석 디테일, PR 디테일 하게 올리는게 장점.→ 기술적으로도 믿을 수 있는 미들맨이 되어야함. 뭘 줘도 시간이 오래걸릴 뿐, 본인이 해결할 수 있겠다는 믿음을 만들어야 함. (2) 당근 알바팀의 프로덕트와 일하는 방식에 깊이 싱크할 것 → 어느정도까지 잘 올라옴, 일하는 방식에 대한 싱크는 빠르게 잘 돌아감 물어보..
당근 프론트엔드 엔지니어 인턴 7주차 키워드 회고 7주차는 문화의 날이 있었고, 금요일엔 첫 인턴 회식이 있었다. 인턴들끼리 뭉쳐 이야기하는 것도 재밌었고, 회사에서보다 가까워진 느낌이라 조금 유대감이 생긴듯하다. 그리고 업무적인 부분에 있어선 잘 모르는 부분에서 필요한 부분의 학습 + 문제를 좁혀나가는 연습을 많이 할 수 있었던 한 주였다. 무지의 고통이번주에 뮤테이션 관련 테스크 하나에서 너무 오랜 시간을 썼다. 특히나 더 잘 모르는 부분의 테스크를 맡으면 모든 코드가 의심스럽게 보이고, 당장 하나씩 공부하지 않으면 진행 자체가 안될 때가 있다. 이번 테스크가 그랬는데, relay 지식이 부족해서 스펙문서 쓸 때부터 처음에 감이 아예 안왔었다. 그렇게 둘째날도 삽질을 많이 하고, 많이 공부했다.. 두번째 문화의 날퍼스널 컬러를 검사하고 양재 쪽에..
당근 프론트엔드 엔지니어 인턴 6주차 키워드 회고 성장하기 좋은 환경요즘 출퇴근 길에 틈틈히 보는 굿피플은 법무법인에서 8명의 인턴생활을 그린 프로그램이다. 패널로 나오는 도진기 변호사는 성장의 3대 요소를 경쟁, 실수, 피드백이라고 한다.이 내용을 보며 내가 당근에서 잘 성장하고 있음을 한번 더 실감했고, 나에게 지금 가장 필요한 환경이지 않나 싶었다. 실수가 없다면, 뉘우치는게 없고, 피드백 받을 필요도 없다는 말을 듣고, 내 지난날의 바보같이 느껴지던 실수에 고마움이 느껴지기도 했다. 그런 의미에서 실수는 성장에 있어서 가장 중요한 요소이지 않나 싶다. 꾸준히 떨어지는 체력 고등학생 때부터 지금까지, 쭉 체력이 안좋아지고 있는데, 이 주에 심각성을 깨달았다. 수요일 아침에 눈을 떴는데 열이 나는 것도 아니고, 어디가 심하게 아프지도 않은데, 몸이..