최신 콘텐츠
-
[회고] 프론트엔드 개발자 이력서 작성과 수정 방향에 대해일기장 2024.12.04 10:52
고민지원하는 회사에 자체 커리어 페이지나 양식이 있지 않고서는 제네럴 하게 작성한 이력서와 포트폴리오를 제출하고 있다. 요즘 관심이 있는 유지보수와 효율적인 코드 작성면에서 배울 점이 많았던 한 회사의 블로그 글을 보고 채용공고에 지원을 했다. 하지만 결과를 서류에서 바로 탈락.해당 채용공고는 신입 개발자가 아닌 3년 차 이상의 주니어 개발자를 채용을 희망하고 있었기 때문에 당연하다고 생각할 수 있다. 하지만 나는 Yess 팀에서 보낸 서류 탈락 사유를 보고 고민에 빠졌다. ... 도메인에 대한 이해와 경험을 바탕으로React와 TypeScript를 통한 웹 클라이언트 개발을 빠르게 수행하실 수 있는 분을 찾고 있습니다. ... 전달해주신 이력서를 바탕으로 스킬과 경험을 검토하였으나,아쉽게도 저희 팀..
-
[회고] 진짜 개발자가 되기 위한 습관을 들여보자일기장 2024.11.25 16:16
수십 년 동안 한 가지 일을 하면서 전문가가 안 되는 비결이 있다면이 타당성과 피드백이 부족한 환경에서 일하는 겁니다.-김창준, 함께 자라기- 이 글귀는 책 함께 자라기를 읽으면서 충격을 받은 내용이라 가져와 봤다.여담으로 나는 요즘 생활에 피드백을 주기 위해서 매일 밤 10시 회고 모임을 가지고 있다.같이 프론트엔드 직군을 준비하는 개발자들이 모여서 고군분두한 하루의 일과를 이야기하고 격려하는 모임이다. 오늘 쓰고자 하는 내용은 독서한 내용에 대한 회고이다. 그리고 추가된 앞으로의 목표이기도 하다. 진짜 개발자가 되는 습관 중 하나는 최신의 공식 문서(Docs)를 보면서 문제를 해결하는 것이라 생각한다.가장 빨리 찾을 수 있는 블로그나 ChatGPT 구현 예시는 게임의 튜토리얼에 불과하다. 진짜 본 게..
-
[Bug Fix] Next.js 14 App Router 버전, useSearchParams 빌드 Error와 SuspenseFront-end 개발 2024.11.25 00:25
프로젝트를 배포하기 위해서 npm run build 명령어를 수행한 결과 빌드 에러가 뙇! ProblemSuspense 경계 없이 useSearchParams를 통해 매개변수를 읽으면 전체 페이지가 클라이언트 측 렌더링으로 선택된다. 왜냐하면 클라이언트 사이드에서 정적 렌더링 동안에 가장 가까운 Suspense boundary에서 렌더링을 하려고 하고, React는 useSearchParams 사용을 발견하면 가장 가까운 Suspense 경계까지 fallback으로 표시하기 위해 렌더링을 일시 중단한다. Suspense 설정이 없으면 타고타고 올라가서 전체 페이지가 클라이언트 측 렌더더링이 된다. 이로 인해 클라이언트 측 JavaScript가 로르될 때까지 페이지가 비어 있을 수 있기 때문에 빌드 에러가..
-
[Bug Fix] Next.js 14 App Router 버전, 동적 경로에서 데이터가 없는 경우 404 페이지로 redirect 시키기Front-end 개발 2024.11.23 21:58
Problem기본적으로 존재하지 않는 경로는 자동으로 app 폴더 밑에 있는 not-found.tsx 파일인 404 페이지로 redirect 된다.그런데 Next.js 14 App Router 버전에서 동적 경로를 사용하는 Catch All Segment를 사용하는 경우 하위의 모든 경로를 포함하기 때문에 라우팅에서 편리 하지만 데이터가 존재하지 않는 페이지도 보여지게 된다. SolutionnotFound 활용하기기존적인 해법으로 직접 코드 상에서 특정 조건에서 notFound 메서드를 호출하면 된다.내 경우에는 데이터 페칭 결과값이 없을 때, 서버 액션에서 에러를 반환하는 것이 아니라 undefined를 반환하도록 하고, 데이터 페칭의 결과가 존재하지 않을 경우 notFound 를 호출하는 코드로 작성..
-
[Bug Fix] Next.js 14 App Router 버전, 새로고침 react hydration error 해결Front-end 개발 2024.11.22 22:07
Problem렌더링 하이드레이션 과정에서 SSR 값과 CSR 값이 다를 때 발생한다.이 react-hydration-error의 해결방법은 두 가지가 있다. (1) 방법: 클라이언트에서만 렌더링되는 콘텐츠를 useEffect 훅으로 처리 (2) 방법: 특정 컴포넌트에서 SSR을 비활성화하면 불일치를 방지할 수 있다.현재 useEffect를 사용할 수 없는 상황이라 나는 (2) 방법을 선택해서 해결하기로 했다. Solution두번째 방법을 사용하여 'next/dynamic' 패키지로부터 dynamic 메서드를 호출해서 화면에 보여줄 Layout의 SSR을 비화활성화하고 완전한 CSR 컴포넌트로 설정해 렌더링한다. let NoSSRComponent: ComponentType | null = null; ..
프론트엔드
-
[회고] 일찍 쓰는 2024년 상반기 회고
이러다간 안되겠다! 😱 싶어서 위기감을 가지고 쓰는 2024년 상반기 회고.벌써 2024년 상반기가 지나가고 있다. (오늘은 2024.05.28)6개월이 지났지만, 정기적으로 회고를 안해서 내가 잘 성장하고 있는지 점검을 못했다.6개월을 돌아보며 잘한 점은 칭찬하고, 부족한 부분은 하반기에 보완하도록 하자. 오늘 회고해볼 세부 내용은, 1) 목표 달성률 확인하기 2) Localhost에서 벗어날 용기 3) 코딩 테스트 부담감 내려놓기 4) 액션 아이템 오늘 문득 슬퍼서 왜 그럴까 생각을 해봤는데,최근 나에게 평가 받고,지인 들에게 평가 받고,인사 담당자들에게 평가 받았다. 그런데 사람들과 대화하면서 내가 바랬던 건,있는 그대로 '잘하고 있다'라는 인정과 칭찬이 아니었나 싶다.아프지만 나를..
-
[Bug Fix] AWS S3 ACL Error: The bucket does not allow ACLs
AWS S3와 MongDB 그리고 Express을 조합하여 웹 어플리케이션을 만들고 있는 중이다. 그런데 위 이미지와 같은 문제가 발생했다. AWS는 설정할 수 있는 항목도 많고 처음 만져보는 거라, 이런 Error가 발생해서 정말 머리가 아팠다. AWS 관련된 ejs 파일이나 config 파일에서 오타가 났는지 열심히 뒤졌다. IAM 액세스 키에 문제가 있는지 찾아보기도 하고, 에러 문구에 ACL(Access Control List)가 지원되지 않는다고 해서 원인이었던 '객체 소유권'은 못보고 그 아래에 있던 항목들을 어떻게 바꿔야 하는지 찾으며 고생했다. 답을 못찾아서 구글에 검색해봤더니 바로 답이 나왔다... (빨리 검색해볼껄) Problem AccessControlListNotSupported: ..
-
[TS] JavaScript에 없는 튜플 (tuple) 타입
타입스크립트(TypeScript, TS) 튜플(tuple) 타입에 대해 다뤄본다. JavaScript의 타입(Type) JavaScript는 동적 타입 언어(Dynamic Type Language)이기 때문에 정적 언어와 달리 자료형을 정의할 필요가 없다. 즉, 컴파일 과정이 아닌 런타임(코드 실행) 도중에 JavaScript Engine이 자료형을 확인한다. 변수의 경우 변숫값이 할당될 때 해당 값의 타입에 따라 변수 타입이 결정된다. 이런 JavaScript에서는 총 8개의 타입(type) 또는 자료형이 있다. 7개는 불변한 원시 값(Primitive values)으로 문자열(String), 숫자형(Number), 논리형(Boolean), Undefined, Null, Symbol, BigInt 까지..
-
[책집필] 자바스크립트 엔진 V8 코드 해석 과정
일반적으로 Low Level 의 V8 엔진 작동원리의 내용까지 깊게 신경쓸 필요는 없다.그러나 정말 JavaScript 의 최적의 성능을 사용하고 싶다면, V8 엔진에서 어떤 식으로 코드가 해석되고 실행되는 지에 대해 어느 정도 이해가 필요하다. 잘 짜여진 JavaScript 는 인터프리터 언어임에도 불구하고 컴파일 언어인 C++에 근사한 성능을 낼 수 있다고 한다. 1. 크롬 브라우저의 V8 엔진에서 코드를 기계어까지 해석하는 과정 V8 JavaScript 엔진은 JavaScript 를 바이트코드(bytecode)로 컴파일(compile)하고 실행하는 방식을 사용합니다. 특히 적응형 JIT(AJIT : Adaptive Just In Time) 컴파일 방식을 채택하여, 코드가 실행될 때 기계어로 컴파일 ..
인기 글
일반 사용자를 대상으로 서비스를 하는 IT 기업에 지원한다면, 아마도 당신은 GitHub 링크를 이력서에 넣을 것이다. 나 또한 그렇습니다. 저는 프론트엔드 개발자로 IT 기업에 지원할 예정이다. 그런데 GitHub 프로필로 정리하지 않고, 지원했을 때 성의가 없거나 관리가 안되어 있다는 인상을 받을 수 있다. 그래서 제 정리되어 있지 않은 GitHub 프로필을 공개하고 수정 결과를 공유한다. 저는 저의 프로필을 과하게 꾸밀 생각은 없다. 열심히 꾸미고 가꿀 시간도 부족하지만, 프로필을 꾸미는 방법을 공유한 블로그들에서 심심치 않게 보이는 문구가 튜닝의 끝은 순정이라고 한다 🤣 나의 GitHub 레포지토리에 들어가서 볼 수도 있지만, README.md 파일의 코드를 붙여넣는다. 바쁜 사람은 아래 파일에서..