![[AWS Amplfiy Gen2/Next.js] NextAuth.js 구글 로그인 구현기 (feat. Cognito)](https://blog.kakaocdn.net/dn/bP37CA/btsKOqz06MB/T3k2cylgHRCfuE2tgpPGI1/img.png)
![[AWS Amplify Gen2] Cognito, AWS SDK를 활용한 유저 기능 구현](https://blog.kakaocdn.net/dn/Xi0F9/btsKwq8NpJU/EMaC4qkvmeFkEFC7U0IIk1/img.png)
![[Jotai/Tailwind CSS] Toast 컴포넌트 직접 구현 (feat. Next.js App Router)](https://blog.kakaocdn.net/dn/9t7cJ/btsJEGwCuNE/UNQM9VTgXXe5xpN78xkaT0/img.png)
![[TanStack Query] 옵티미스틱 업데이트 사용하여 좋아요 구현](https://blog.kakaocdn.net/dn/cd2sVv/btsJFKrvggF/Df9dk9nvYHTWU20llovaMK/img.png)
![[Next.js] Lighthouse 웹 사이트 성능 개선 (100으로 만들기)](https://blog.kakaocdn.net/dn/GQhG4/btsJwpWnpSa/y1bQTQ2K6WuMDUIcffdIsK/img.png)
![[Next.js / TanStack query] useInfiniteQuery 사용하여 무한 스크롤 구현 (feat. cursor 방식)](https://blog.kakaocdn.net/dn/LkM7j/btsJvUVk2E5/9xFPeWOeDJMTSvJLNV7JKK/img.png)
![[Next.js] 세션 스토리지, 이전 페이지 저장해서 뒤로 가기 구현 (feat. app router)](https://blog.kakaocdn.net/dn/Iox1h/btsJpJNaF0H/XSLX31Bh1S9MWN0SNmKkL1/img.png)
![[Next.js] 무한 캐러셀 컴포넌트 직접 구현하기 (feat. Tailwind CSS)](https://blog.kakaocdn.net/dn/lRPdj/btsJmff85Bz/gk2tmL4yRvhxMIACaSTmu1/img.png)
![[GitHub Action / Chromatic] 스토리북 PR 미리보기 배포 (feat. yarn)](https://blog.kakaocdn.net/dn/sr67M/btsI0zywHah/pY81Ov2aFMvymIHFZKRDN0/img.png)


시작하며...사실 AWS에 대한 두려움이 있었다ㅋㅋㅋㅋ😨전에 1년 프리티어 기간이 끝나고 나서 생성해 둔 EC2, RDS 때문에 금액에 부과되었다... 다행히 고객센터를 통해 일부분 환불 받을 수 있었지만, 이런 경험 때문에 AWS를 사용하는 게 무섭다ㅠㅠ! 라는 편견이 생겼다. 하지만 최근(?)에 AWS Amplify로 풀스택 개발을 하게 되었으며, AWS의 다양한 자원인 DynamoDB, Cognito, CloudWatch 등을 사용하게 되면서 그 두려움과 편견을 극복할 수 있게 되었다. 어려워 보이는 UI 때문에 진입장벽이 있었으나 막상 사용해 보니 생각보다 유용한 기능들이 많았고 이를 이해하고 나니 매우 편리하였다. 그러다 문득..! React 웹 어플리케이션을 Vercel이 아닌 AWS를 사용..
![[코어자바스크립트] 05. 클로저](https://blog.kakaocdn.net/dn/lhC3l/btsL5MVArBz/xqLkdfEbiPKkUaCQdSNhbK/img.jpg)
1. 클로저의 의미 및 원리 이해클로저란? "어떤 함수에서 선언한 변수를 참조하는 내부함수에서만 발생하는 현상"을 의미한다. var outer = function () { var a = 1; var inner = function () { console.log(++a); }; inner();};outer();위 코드는 outer 함수의 실행 컨텍스트가 종료되면 LexicalEnvironment에 저장된 식별자들(a, inner)에 대한 참조를 지우게 된다. 그러면 참조하는 변수가 하나도 없게 되므로 가비지 컬렉터의 수집 대상이 된다. var outer = function () { var a = 1; var inner = function () { return ++a; }; retur..
![[코어자바스크립트] 04. 콜백 함수](https://blog.kakaocdn.net/dn/cdkOTj/btsLPQbYqa9/oyqR9fu5DAanob1IAwsLik/img.jpg)
1. 콜백 함수란?콜백 함수는 다른 코드의 인자로 넘겨주는 함수이다. 콜백 함수를 넘겨받은 코드는 이 콜백 함수를 필요에 따라 적절한 시점에 실행할 것이다. callback은 '부르다', '호출하다'는 의미인 call과, '되돌다'는 의미인 back의 합성어로, '되돌아 호출해 달라'는 명령이다. 즉, 어떤 함수 X를 호출하면서 '특정 조건일 때 함수 Y를 실행해서 나에게 알려달라'는 요청을 함께 보내는 것이다. 이. 요청을 받은 함수 X의 입장에서는 해당 조건이 갖춰졌는지 여부를 스스로 판단하고 Y를 직접 호출합니다. 결론적으로, 콜백 함수는 다른 코드(함수 또는 메서드)에게 인자로 넘겨줌으로써 그 제어권도 함께 위임한 함수이다. 콜백 함수를 위임받은 코드는 자체적인 내부 로직에 의해 이 콜백 함수를 ..
![[코어자바스크립트] 03. this](https://blog.kakaocdn.net/dn/cpqsH6/btsLMV7gxFk/QtG1fz4IrUm8UrkknOHZHK/img.jpg)
자바스크립트에서 this는 어디서든 사용할 수 있다. 그러나 상황에 따라 this가 바라보는 대상이 달라지게 된다.그래서 상황별로 this가 어떻게 달라지고, 왜 그렇게 되는지 알고 있어야 한다. 1. 상황에 따라 달라지는 this자바스크립트에서 this는 기본적으로 실행 컨텍스트가 생성될 때 함께 결정된다. 즉, this는 함수를 호출할 때 결정된다고 할 수 있고 함수를 어떤 방식으로 호출하느냐에 따라 값이 달라지는 것이다. 1-1. 전역 공간에서의 this전역 공간에서 this는 전역 객체를 가리킨다. 전역 컨텍스트를 생성하는 주체가 바로 전역 객체이기 때문이다. 참고로 브라우저에서 전역객체는 window이고, Node.js 환경에서는 global이다. 전역변수그래서 전역변수를 선언하면 자바스크립트 ..
![[코어자바스크립트] 02. 실행 컨텍스트](https://blog.kakaocdn.net/dn/Dzq7P/btsLKFbnmYh/UPwuM9d0EkTGONRmKyVgtk/img.jpg)
1. 실행 컨텍스트란?실행 컨텍스트실행할 코드에 제공할 환경 정보들을 모아놓은 객체이다. 동일한 환경에 있는 코드들을 실행할 때 필요한 환경 정보들을 모아 컨텍스트를 구성하고, "콜스택"에 쌓아올렸다가, 가장 위에 쌓여있는 컨텍스와 관련 있는 코드들을 실행하는 식으로 전체 코드의 환경과 순서 보장한다. 실행 컨텍스트를 구성하는 방법은 "함수 실행"이다. 실행 컨텍스트 동작처음 자바스크립트 코드를 실행하는 순간 "전역 컨텍스트"가 콜스택에 담음.outer 함수를 호출하면서 outer에 대한 환경 정보를 수집해서 "outer 실행 컨텍스트"를 생성하여 콜스택에 담음.inner 함수를 호출하면서 inner에 대한 환경 정보를 수집해서 "inner 실행 컨텍스트"를 생성하여 콜스택에 담음.inner 함수의 실행..
![[CSS 라이브러리] Tailwind CSS 🆚 Emotion(CSS in JS)](https://blog.kakaocdn.net/dn/bCRLKK/btsLBhaXc72/PV4C3jP0meMJghsBVgCYsK/img.png)
시작하며...지금까지 다양한 CSS 라이브러리를 사용해 보았다. 그중에서 가장 많이 사용해 본 라이브러리는 Tailwind CSS와 Emotion이다. 이 두 라이브러리를 성격이 많이 다른 라이브러리이다. 그래서 각 라이브러리의 특징을 알아보고 비교해 보면 좋을 거 같아 글을 작성하게 되었다. 1. Tailwind CSS🥇 마음속 1위우선 Tailwind CSS가 나에게는 1위이다.Tailwind CSS를 사용한 프로젝트의 회고록을 보았더니 정말 찬양할 정도를 Tailwind CSS를 좋아했다...ㅋㅋㅋㅋ 그래서 해당 라이브러리를 사용하면서 느낀 장점과 단점을 정리해 보았다. Tailwind CSS 장점1. 빠르고 간편한 반응형 디자인Tailwind는 미디어쿼리를 사용하지 않고 sm: md: lg: 이..
![[코어자바스크립트] 01. 데이터 타입](https://blog.kakaocdn.net/dn/bLYgk4/btsLtIMhKnS/gZ4NNQ2bdoD4UbqiGEq3R1/img.jpg)
01. 데이터 타입의 종류자바스크립트 데이터 타입에는 크게 2가지가 있다. 기본형숫자, 문자열, 불리언, null, undefined 등이 있다. (ES6에서 심볼이 추가됨.) 참조형객체, 배열, 함수, 날짜, 정규표현식 등이 있다. (ES6에서 Map, WeakMap, Set, WeakSet이 추가됨.) 구분 조건기본형은 값이 담긴 주솟값을 바로 복제하는 반면, 참조형은 값이 담긴 주솟값들로 이루오진 묶음을 가리키는 주솟값을 복제한다. 02. 데이터 타입에 관한 배경지식모든 데이터는 메모리 주솟값을 통해 서로 구분하고 연결할 수 있다. 식별자와 변수변수: 변할 수 있는 무언가(데이터), 변경 가능한 데이터가 담길 수 있는 공간식별자: 어떤 데이터를 식별하는 데 사용하는 이름, 즉 변수명 03. 변수 선..

![[Next.js] API Routes로 DynamoDB 정렬하기 (feat. AWS Amplify)](https://blog.kakaocdn.net/dn/bXmjt0/btsKNZbPhrq/pbxda2JWQYCt5Ub58DE4uK/img.png)
![[상태 관리 라이브러리] 내가 직접 사용해 본 Recoil, Zustand, Jotai](https://blog.kakaocdn.net/dn/EuPr0/btsKwyYPoz0/2pTvnYkGe1K44TresZZ8X1/img.png)

![[Next.js] firebase 게시물 조회수 기능 구현 (생성, 조회, 갱신)](https://blog.kakaocdn.net/dn/bf5Rrm/btsJk9dTk17/vSFfkWoSn0xsjxLt2eDOK1/img.png)
![[Next.js] 채널톡 연동하기 구현 (feat. app router, typescript)](https://blog.kakaocdn.net/dn/RVGtR/btsJh1nACUm/obaUZpRkVOIsutqNt8MbNk/img.png)
![[Next.js / TanStack Query] Server Side Rendering 하기 (feat. app router)](https://blog.kakaocdn.net/dn/52bEL/btsJe91wzqR/9d9rtA4uOIuxin4NEJZvI1/img.png)
![[Next.js] Server Sider Rendering 특정 사용자 접근 제한 (feat. App Router)](https://blog.kakaocdn.net/dn/sPELo/btsI1E6IjxM/n1To7AbMNYKfLpU3knFPUK/img.png)
![[Tailwind] px 작성, 자동 rem 변환 (feat. pxr 단위)](https://blog.kakaocdn.net/dn/btbg96/btsIRVuuxqS/THN88hZWvuw9NUPqoq0hSk/img.png)
![[Storybook] Next.js + Tailwind CSS + TypeScript 스토리북 적용하기](https://blog.kakaocdn.net/dn/dOzyE8/btsIQLkPDSo/0M7iealfgOKDq7AsHgRDyK/img.png)
![[Codeit Resources] 코드잇 인턴 프로젝트 회고](https://blog.kakaocdn.net/dn/mTvjM/btsLe5IGDi8/W5xtivnjLhYMexjZgKNSIK/img.png)
![[코드잇 스프린트 6기] 6개월 간 과정을 마치며 (코드잇보다는 내 이야기 위주)](https://blog.kakaocdn.net/dn/deV0n5/btsJsPgBaYJ/kkbKL144DknAT8dRilsNDK/img.png)
![[우주윗미] 코드잇 스프린트 심화 프로젝트 회고](https://blog.kakaocdn.net/dn/be3vde/btsJsx6VRtw/d45RTqHeYv83Gqmbr8WR50/img.png)
![[코드잇 스프린트 6기] 파트 3(5월27일 ~ 7월13일) 회고](https://blog.kakaocdn.net/dn/c4Lvsh/btsIQg6Gb8n/zS07mS8igC659Omz8Ezx41/img.png)
![[wiki-viki] 코드잇 스프린트 중급 프로젝트 회고](https://blog.kakaocdn.net/dn/98TZc/btsIywv6zcy/1bOexCm6ye4uBHE57UYfNk/img.png)
![[인프콘 2024] INFCON 2024 참가 신청 (feat. 가고 싶다...🥹)](https://blog.kakaocdn.net/dn/bK5mdm/btsIqcRd0NB/42gfiAQvrDSnK6rE63F4pK/img.png)
![[정처기] 24년 1회차 정보처리기사 실기 합격 후기 + 공부 방법 (feat. 삼수ㅋㅋ)](https://blog.kakaocdn.net/dn/br2Vp6/btsH1g1KiFL/J0Fy3rh6i0udKhyKu1EgIK/img.png)
![[내 마음 속 바다] 개발 동아리 DND 10기 프로젝트 회고](https://blog.kakaocdn.net/dn/cnt38F/btsHTl2GFpG/7cSc2068Wevv1LoSm7t1kK/img.png)
![[Fandom-K] 코드잇 스프린트 기초 프로젝트 회고](https://blog.kakaocdn.net/dn/sIlpE/btsHSxilW6b/YnsTRLKEOOKF3SC8aJ52yK/img.png)
![[코드잇 스프린트 6기] 파트 2(4월7일 ~ 5월25일) 회고](https://blog.kakaocdn.net/dn/Sp4d5/btsHIuypwJ7/dELWwN8o7pTTErnbw9KAvK/img.png)