안녕하세요.
코딩 교육 크리에이터 짐코딩 입니다 🙂
유튜브에서 코딩 교육 "짐코딩 GYM CODING"채널을 운영하고 있으며,
인프런 교육 플랫폼에서 프로그래밍 지식을 공유하고 있습니다.
제 강의의 특징은 이제 막 시작하시는 분들을 위하여
설명하고자 할 때는 최대한 쉽게,
알려드리고자 할 때는 최대한 알차게 설명드립니다.
항상 수강생 입장에서 생각하는 코딩 교육 크리에이터가 되겠습니다.
감사합니다.
📨 이메일 bruce.lean17@gmail.com
🏋️♀️ 헬스타그램 @helinlee.gram
🧑💻 코딩스타그램 @gymcoding
강의
로드맵
전체 4수강평
- 프론트엔드 날개달기: Vue, React 배우기 전에 꼭 알아야하는 지식
- [최신] Vue 강의 끝판왕 : Nuxt 3 완벽 마스터
- 최신 Vue 3 완벽 가이드: 프로젝트 설정 & 스펙 총정리
게시글
질문&답변
AI와 CSS 라이브러리의 궁합
안녕하세요 🙂Tailwind CSSCursor AI는 Tailwind의 유틸리티 클래스 패턴을 매우 잘 이해하고 있습니다. flex items-center gap-4 같은 클래스만 봐도 정확히 어떤 레이아웃인지 파악할 수 있어서, 자동완성과 코드 제안이 놀라울 정도로 정확합니다. Tailwind는 AI의 학습 데이터에 가장 많이 포함된 CSS 프레임워크이기 때문에, Cursor가 거의 완벽하게 코드를 생성해줍니다. 클래스 이름만으로 스타일이 명확하게 표현되어 AI가 의도를 쉽게 파악할 수 있습니다.shadcn/uiTailwindCSS 기반 컴포넌트 프레임워크입니다!! 컴포넌트 코드가 프로젝트에 직접 복사되기 때문에 AI가 내부 구조를 완전히 파악하고 자유롭게 수정할 수 있습니다. npm 패키지로 설치되는 다른 UI 라이브러리들과 달리, Cursor가 컴포넌트를 열어보고 원하는 대로 커스터마이징할 수 있다는 점이 큰 장점입니다. 또한 문서화가 매우 잘 되어 있어 AI가 정확한 사용법을 알고 있습니다.최적의 조합: Tailwind CSS + shadcn/ui두 라이브러리를 함께 사용하면 시너지 효과가 극대화됩니다. shadcn/ui가 Tailwind 기반으로 만들어졌기 때문에, Cursor는 컴포넌트의 스타일을 Tailwind 클래스로 쉽게 수정할 수 있습니다. "Create a login form with shadcn Button" 같은 간단한 프롬프트만 줘도 완성도 높은 컴포넌트를 즉시 생성해주며, 이후 세부 스타일 조정도 매우 쉽습니다. AI와 함께 작업할 때 가장 높은 생산성을 보장하는 조합입니다.
- 0
- 1
- 17
질문&답변
퀴즈 질문 풀이 오류
안녕하세요 🙂맞습니다. AI퀴즈가 잘못되었습니다.AI퀴즈는 인프런에서 자동으로 생성된 퀴즈로 수정 요청할게요~!
- 0
- 2
- 29
질문&답변
onClick 이벤트에 함수 넘길 때
안녕하세요! 이 두 방법의 차이점을 명확하게 설명해드리겠습니다.1. onClick={() => onDeleteTodo(item.id)}화살표 함수로 감싸서 전달하는 경우:// 매개변수가 필요한 경우 onDeleteTodo(item.id)}> 삭제 언제 사용하나요?함수에 특정 매개변수를 전달해야 할 때 (예: item.id) 2. onClick={onDeleteTodo}함수를 직접 전달하는 경우:// 매개변수가 불필요하거나 event 객체만 필요한 경우 삭제 언제 사용하나요?매개변수가 필요 없을 때이벤트 객체(event)만 사용하면 될 때성능을 최적화하고 싶을 때성능 고려사항// ❌ 매번 새로운 함수 생성 (렌더링할 때마다) onDeleteTodo(item.id)}>삭제 // ✅ 동일한 함수 참조 유지 삭제 결론 및 권장사항매개변수가 필요하다면: onClick={() => func(param)} 사용매개변수가 불필요하다면: onClick={func} 사용 강의에서 onClick={() => onDeleteTodo(item.id)}를 사용한 이유는 각각의 todo 항목의 고유한 id를 삭제 함수에 전달해야 하기 때문입니다!추가 궁금한 점이 있으시면 언제든 질문해주세요! 🙂
- 0
- 1
- 26
질문&답변
tailwindcss 4.1 docs에서는 container가 목록에서 안보이네요
container 유틸리티 클래스는 여전히 존재하고 사용 가능합니다! 다만 문서에서의 위치와 구성 방식이 변경되었습니다.v4에서는 container가 별도의 독립적인 문서 페이지가 아닌, "Max Width" 섹션 내에 통합되어 있습니다현재 max-width 문서 페이지에서 "Using breakpoints (container)" 섹션으로 찾을 수 있습니다https://tailwindcss.com/docs/max-width
- 0
- 2
- 23
질문&답변
button 질문
과 의 차이점이 두 가지 방법으로 버튼을 만들 수 있는데, 각각 다른 특징이 있습니다:1. 특징:단일 태그 (self-closing)텍스트만 표시 가능 (value 속성 사용)이미지나 다른 HTML 요소 포함 불가간단한 버튼에 적합2. 클릭하세요 특징:여는 태그와 닫는 태그 쌍으로 구성태그 안에 다양한 HTML 요소 포함 가능텍스트, 이미지, 아이콘 등을 자유롭게 배치더 유연한 디자인 가능실제 예시 비교 (사진) 이미지가 있는 버튼 언제 무엇을 사용할까?: 단순한 텍스트 버튼: 디자인이 필요하거나 복잡한 내용이 들어갈 버튼권장사항: 현재는 태그를 더 많이 사용합니다. 더 유연하고 접근성도 좋기 때문입니다! 🎯
- 0
- 2
- 22
질문&답변
Streaming 관련해서 문의드립니다.
안녕하세요 🙂네, 맞습니다! 서버-클라이언트 경계와 스트리밍 동작 방식을 설명드리겠습니다.스트리밍 동작 원리1. 서버 컴포넌트에서:// 서버 컴포넌트 export default function Page() { // await 하지 않고 Promise 자체를 생성 const postsPromise = getPosts(); const tagsPromise = getTags(); return ( }> ); } 2. 클라이언트 컴포넌트에서:// 클라이언트 컴포넌트 'use client' import { use } from 'react'; export default function BlogList({ posts, tags }) { // 여기서 Promise가 resolve됨 const resolvedPosts = use(posts); const resolvedTags = use(tags); return {/* 렌더링 */}; } 핵심 포인트Promise 전달: 서버에서 데이터가 아닌 Promise 객체 자체를 클라이언트로 전달비동기 해결: 실제 Promise resolve는 클라이언트에서 발생스트리밍 효과: 초기 HTML은 빠르게 전송되고, 데이터는 준비되는 대로 점진적으로 스트리밍장점초기 페이지 로딩이 빨라짐여러 데이터 요청을 병렬로 처리 가능사용자는 즉시 UI 골격을 볼 수 있음이 방식으로 서버의 계산 능력과 클라이언트의 반응성을 모두 활용할 수 있습니다 💪
- 0
- 2
- 27
질문&답변
ISR 매커니즘에 대한 궁금증
안녕하세요 🙂 ISR 동작 요약해드리면~!예상 동작 (맞습니다!)미리 생성된 2개 슬러그: 즉시 로드 새로운 슬러그 첫 방문: 1초 지연 후 로드 새로운 슬러그 재방문: 즉시 로드 (캐시됨)그리고 ISR 동작은 반드시 build 후 프로덕션 환경에서 진행해주세요~!npm run build npm start # ✅ 프로덕션 환경에서 테스트
- 0
- 2
- 26
질문&답변
cursor AI 프로젝트 룰 관련 질문 드립니다.
UI가 조금 변경되었는데요! Cursor AI의 Rules 사용법을 룰 타입별로 설명해드리겠습니다.Cursor AI Rules 타입별 사용법1. Always Apply (항상 적용)설명: 모든 채팅과 Cmd+K 세션에 적용되는 글로벌 룰사용 시기:프로젝트 전반의 코딩 스타일 가이드항상 지켜야 할 개발 원칙기본 언어나 프레임워크 설정예시:- TypeScript를 사용하여 개발 - ESLint 규칙 준수 - 함수명은 camelCase 사용 - 주석은 한국어로 작성2. Apply Intelligently (지능적 적용)설명: AI가 컨텍스트를 판단하여 관련성이 있을 때만 자동 적용사용 시기:특정 기술 스택 관련 가이드라인도메인별 베스트 프랙티스조건부 적용이 필요한 규칙예시:- React 컴포넌트 작성 시 hooks 패턴 사용 - API 호출 시 에러 핸들링 필수 - 데이터베이스 쿼리 시 성능 최적화 고려3. Apply to Specific Files (특정 파일에 적용)설명: 지정된 파일 패턴과 일치하는 파일에만 적용사용 시기:특정 파일 확장자나 디렉토리 규칙테스트 파일, 설정 파일 등 특수 용도 파일설정 방법: 파일 패턴 지정 (예: *.test.ts, src/components/**)예시:패턴: src/api/** 룰: axios 사용, 에러 처리 표준화4. Apply Manually (@-mentioned)설명: @를 사용하여 수동으로 호출할 때만 적용사용 시기:특별한 상황에서만 필요한 규칙선택적으로 적용하고 싶은 가이드라인실험적이거나 임시적인 규칙사용 방법: 채팅에서 @룰이름으로 호출예시:룰 이름: performance-optimization 내용: 성능 최적화를 위한 코드 리팩토링 가이드사용: "이 코드를 @performance-optimization 해줘"
- 0
- 2
- 53
질문&답변
json-server 오류가 다른게 뜨네요
전역설치로 해보시겠어요?npm install -g json-server@0.17.4
- 0
- 1
- 41
질문&답변
params 에 Promise 객체 타입이 지정되어야 하는 이유? 최신?
안녕하세요 🙂Next.js 15부터 params가 Promise로 변경되었습니다. 스펙이 그러합니다. Server Component Params 가져오기// app/posts/[slug]/page.tsx export default async function PostPage({ params }) { const { slug } = await params // Next.js 15+ // ... }Client Component Params 가져오기'use client' import { useParams } from 'next/navigation' export default function ClientComponent() { const params = useParams() const slug = params.slug // 동기적 접근 }
- 0
- 1
- 35