안녕하세요.
코딩 교육 크리에이터 짐코딩 입니다 🙂
유튜브에서 코딩 교육 "짐코딩 GYM CODING"채널을 운영하고 있으며,
인프런 교육 플랫폼에서 프로그래밍 지식을 공유하고 있습니다.
제 강의의 특징은 이제 막 시작하시는 분들을 위하여
설명하고자 할 때는 최대한 쉽게,
알려드리고자 할 때는 최대한 알차게 설명드립니다.
항상 수강생 입장에서 생각하는 코딩 교육 크리에이터가 되겠습니다.
감사합니다.
📨 이메일 bruce.lean17@gmail.com
🏋️♀️ 헬스타그램 @helinlee.gram
🧑💻 코딩스타그램 @gymcoding
Courses
Reviews
- Master React: From Basic Concepts to LinCanva Projects
- Next.js Complete Mastery (v15): Building a Notion-Based Developer Blog (with Cursor AI)
- Master React: From Basic Concepts to LinCanva Projects
- Front-end Wings: Knowledge You Must Know Before Learning Vue and React
- Introduction to HTML&CSS Web Development for Beginners
Posts
Q&A
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
- 2
- 15
Q&A
tailwindcss 4.1 docs에서는 container가 목록에서 안보이네요
container 유틸리티 클래스는 여전히 존재하고 사용 가능합니다! 다만 문서에서의 위치와 구성 방식이 변경되었습니다.v4에서는 container가 별도의 독립적인 문서 페이지가 아닌, "Max Width" 섹션 내에 통합되어 있습니다현재 max-width 문서 페이지에서 "Using breakpoints (container)" 섹션으로 찾을 수 있습니다https://tailwindcss.com/docs/max-width
- 0
- 2
- 17
Q&A
button 질문
과 의 차이점이 두 가지 방법으로 버튼을 만들 수 있는데, 각각 다른 특징이 있습니다:1. 특징:단일 태그 (self-closing)텍스트만 표시 가능 (value 속성 사용)이미지나 다른 HTML 요소 포함 불가간단한 버튼에 적합2. 클릭하세요 특징:여는 태그와 닫는 태그 쌍으로 구성태그 안에 다양한 HTML 요소 포함 가능텍스트, 이미지, 아이콘 등을 자유롭게 배치더 유연한 디자인 가능실제 예시 비교 (사진) 이미지가 있는 버튼 언제 무엇을 사용할까?: 단순한 텍스트 버튼: 디자인이 필요하거나 복잡한 내용이 들어갈 버튼권장사항: 현재는 태그를 더 많이 사용합니다. 더 유연하고 접근성도 좋기 때문입니다! 🎯
- 0
- 2
- 18
Q&A
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
- 21
Q&A
ISR 매커니즘에 대한 궁금증
안녕하세요 🙂 ISR 동작 요약해드리면~!예상 동작 (맞습니다!)미리 생성된 2개 슬러그: 즉시 로드 새로운 슬러그 첫 방문: 1초 지연 후 로드 새로운 슬러그 재방문: 즉시 로드 (캐시됨)그리고 ISR 동작은 반드시 build 후 프로덕션 환경에서 진행해주세요~!npm run build npm start # ✅ 프로덕션 환경에서 테스트
- 0
- 2
- 23
Q&A
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
- 37
Q&A
json-server 오류가 다른게 뜨네요
전역설치로 해보시겠어요?npm install -g json-server@0.17.4
- 0
- 1
- 33
Q&A
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
- 29
Q&A
미리보기가 안됩니당...
props 로 받은 id 값을 디버깅 해봐야 알 것 같아요원하는 값으로 넘어갔는지 확인이 필요해보여요~!
- 0
- 2
- 21
Q&A
streaming 페이지 보완 필요
홈탭에서 태그 클릭시 streaming 표시 여부는 구현 방식의 차이입니다.소개 -> 홈 으로 왔을 때 스트리밍이 표시되는 이유는 페이지가 전환되었기 때문입니다.태그도 별도의 페이지로 분리하신 후 loading UI를 적용하시면 됩니다.
- 1
- 2
- 27