남잭슨의 개발 블로그
Next.js에서 hydration failed가 뜨면 서버가 준비한 HTML과 브라우저의 첫 렌더 결과가 같은지부터 확인합니다. 브라우저에서만 알 수 있는 값은 동일한 초기 화면을 보여 준 뒤 읽을 수 있지만, 잘못된 HTML 구조나 서로 다른 데이터는 원인을 따로 고쳐야 합니다.이 글은 App Router에서 초기 HTML을 제공하는 페이지를 기준으로 설명합니다. 코드는 동작 원리를 보여 주는 설명용 예제이며, 특정 프로젝트에서 실행해 확인한 결과는 아닙니다. 실제 오류 문구와 표시 방식은 Next.js·React 버전에 따라 다를 수 있습니다.서버와 브라우저의 첫 출력을 맞춘 뒤 필요한 부분을 갱신하는 AI 생성 설명용 일러스트입니다. 실제 렌더링 화면이 아닙니다.1. 'use client'를 붙였..
이미 push한 커밋의 변경을 취소하면서 공유된 기록을 이어 가려면 git revert를 먼저 검토합니다. 잘못된 커밋을 기록에서 지우는 대신, 그 변경을 반대로 적용하는 새 커밋을 만듭니다. 파일이 되돌아가는 것과 과거 커밋이 없어지는 것은 다른 일입니다. Git의 revert 설명여기서는 일반 커밋 한 개를 로컬 원격 저장소에 push한 뒤 revert하고, 다른 작업 폴더에서 pull해 결과를 확인했습니다. GitHub나 운영 서비스에서 실행한 사례는 아닙니다. 충돌이 없는 작은 예제로 파일과 기록의 변화를 구분해 보겠습니다.기존 커밋 뒤에 되돌림 커밋을 추가하는 개념을 표현한 AI 생성 설명용 일러스트입니다. 실제 저장소 화면이 아닙니다.실습 결과: 파일은 돌아왔고, 커밋은 하나 늘었다2026년 ..
Google Identity Services(GIS) 웹 로그인에서는 승인된 출처에 버튼 페이지의 프로토콜·호스트·포트를 등록합니다. 리다이렉트로 결과를 받는 경우에는 서버 경로까지 포함한 URI도 등록해야 합니다. 두 설정은 같은 웹 클라이언트 ID를 기준으로 비교하세요. GIS 설정 문서대상은 GIS 웹 로그인 버튼입니다. 로그인은 ID 토큰으로 사용자 신원을 확인하는 과정이며, Drive·Calendar 등 Google API 접근 권한 요청은 별도 흐름입니다. 아래 결과 수신 표는 JavaScript API 기준이고, HTML API의 차이도 따로 설명합니다. 로그인 인증과 API 권한의 구분 origin_mismatch 또는 승인된 출처 설정 확인 redirect_uri_mismatch 또는..
Docker에서 no space left on device가 나오면 먼저 부족한 저장소와 공간을 쓰는 대상을 확인해야 합니다. 이 문구만 보고 이미지·컨테이너·볼륨을 한꺼번에 정리하면, 다시 만들 수 있는 빌드 캐시와 보관해야 할 DB 데이터를 구분하지 못합니다.아래는 Linux 컨테이너를 사용하는 Docker Desktop 또는 Linux Docker Engine에서 확인 범위를 좁히는 순서입니다. 명령은 사용량과 연결 관계를 조회하는 예시이며, 특정 PC의 실제 출력이나 확보한 용량 수치를 제시한 것은 아닙니다.공간을 쓰는 캐시와 중요한 데이터를 구분하는 AI 생성 설명용 일러스트입니다. 실제 디스크 사용량이나 정리 결과가 아닙니다.지금 보고 있는 Docker와 오류가 난 곳부터 맞추기먼저 오류가 난..
카카오 로그인에서 이메일을 필수 동의로 설정했는데도 값이 없다면, 수집 후 제공 옵션과 사용자 정보 응답을 함께 확인하세요. account_email의 동의 단계 → 수집 옵션 → 저장 상태를 확인한 뒤, 실제 응답의 kakao_account.email을 확인합니다. 필수 동의만으로 이메일 값이 있다고 단정할 수는 없습니다. 카카오 공식 FAQ 처음 설정하거나 이메일 동의 옵션이 보이지 않음 이미 설정했는데 email이 없거나 동의 상태가 헷갈림 API에는 이메일이 있는데 서비스 가입이 실패함1. 이메일 항목과 동의 단계를 확인하기카카오디벨로퍼스에서 대상 앱을 선택한 뒤 카카오 로그인 → 동의항목으로 이동합니다. 개인정보 목록의 카카오계정(이메일) 행을 찾으세요. 항목 ID는 account_emai..
