최신블로그 운영SEOHTML"더 보기" 버튼 페이지네이션과 SEO: 구글 크롤러는 버튼을 누르지 않는다목록을 '더 보기' 버튼으로 바꿨더니 글 49개 중 10개만 링크로 연결돼 있었다. 구글 크롤러가 버튼을 누르지 않는 이유를 구글 문서로 확인하고, 모든 글을 <a href> 링크로 잇는 방법을 정리했다.2026.10.148분
블로그 운영SEONuxtNuxt 3 SEO 설정 정리: sitemap, canonical, hreflang, 구조화 데이터(JSON-LD)Nuxt 3와 Nuxt Content 블로그에 실제로 적용한 SEO 설정을 코드로 정리했다. 사이트맵 lastmod, canonical과 필터 주소 noindex, 한/영 hreflang, JSON-LD 날짜 형식, prerender까지.2026.10.149분
블로그 운영SEO구글 서치 콘솔 "발견됨 / 크롤링됨 - 현재 색인이 생성되지 않음" 차이와 확인할 것서치 콘솔의 '발견됨 - 현재 색인이 생성되지 않음'과 '크롤링됨 - 현재 색인이 생성되지 않음'은 멈춘 단계가 다르다. 두 상태의 뜻과 각각 확인할 것, 보고서와 site: 숫자가 다른 이유까지 정리했다.2026.10.146분
백엔드웹 보안Node.js웹 보안 기본 3대 공격: SQL Injection, XSS, CSRF 원리와 방어법로그인 폼 한 줄로 관리자가 되고 댓글 하나로 스크립트가 실행된다. SQL Injection, XSS, CSRF의 원리를 직접 확인하고 각각을 막는 방법을 정리했다.2026.10.098분
백엔드API 설계HTTPAPI 에러 응답 형식 설계하기: 제각각인 에러 응답을 RFC 9457 Problem Details로 통일하는 법API마다 제각각인 에러 응답을 RFC 9457 Problem Details로 통일하는 법. 필드별 검증 에러, traceId, 내부 정보 숨기기, Node.js 단일 에러 처리까지 정리했다.2026.10.086분
백엔드HTTP웹 보안Node.jsCORS 에러 완전 정리: 왜 막히는지부터 preflight, credentials까지 올바르게 해결하기CORS 에러는 서버가 아니라 브라우저가 막은 것이다. 같은 출처 정책, preflight, credentials, Expose-Headers와 잘못된 해결법까지 실제 브라우저로 확인하며 정리했다.2026.10.087분
프론트엔드CSSCSS :has() 선택자 실전 가이드: 자바스크립트 없이 부모를 선택하는 법체크하면 카드가 강조되고, 입력이 틀리면 폼 전체가 반응하고, 별점에 마우스를 올리면 앞의 별까지 칠해진다. 예전엔 자바스크립트가 필요했던 일을 CSS :has() 한 줄로 해결하는 실전 예제를 직접 눌러보며 정리했다.2026.10.086분
프론트엔드HTML자바스크립트 없이 HTML만으로 되는 것들: 아직도 div로 다 만들고 있다면아코디언, 팝오버, 모달, 자동완성, 폼 검증, 이미지 지연 로딩까지. 라이브러리 없이 HTML 태그와 속성만으로 해결되는 기능을 예제와 함께 정리했다. 코드는 줄고 접근성은 덤으로 따라온다.2026.10.088분
백엔드HTTPVercelHTTP 캐시 제대로 쓰기: Cache-Control, ETag, no-cache와 no-store의 차이no-cache는 '캐시하지 마라'가 아니다. max-age, no-cache, no-store, ETag와 304, 배포 후 옛날 화면이 보이는 원인, Vercel CDN 캐시까지 직접 확인하며 정리했다.2026.10.086분
백엔드HTTPAPI 설계HTTP 상태 코드 올바르게 쓰기: 400 vs 422, 401 vs 403, 200 vs 201 vs 204 헷갈릴 때 보는 정리400 vs 422, 401 vs 403, 200 vs 201 vs 204처럼 헷갈리는 HTTP 상태 코드를 상황별로 정리하고, 301이 POST를 GET으로 바꾸는 리다이렉트 함정까지 다뤘다.2026.10.087분