안녕하세요.
코딩 교육 크리에이터 짐코딩 입니다 🙂
유튜브에서 코딩 교육 "짐코딩 GYM CODING"채널을 운영하고 있으며,
인프런 교육 플랫폼에서 프로그래밍 지식을 공유하고 있습니다.
제 강의의 특징은 이제 막 시작하시는 분들을 위하여
설명하고자 할 때는 최대한 쉽게,
알려드리고자 할 때는 최대한 알차게 설명드립니다.
항상 수강생 입장에서 생각하는 코딩 교육 크리에이터가 되겠습니다.
감사합니다.
📨 이메일 bruce.lean17@gmail.com
🏋️♀️ 헬스타그램 @helinlee.gram
🧑💻 코딩스타그램 @gymcoding
강의
로드맵
전체 4수강평
- 프론트엔드 날개달기: Vue, React 배우기 전에 꼭 알아야하는 지식
- TailwindCSS 완벽 마스터: 포트폴리오부터 어드민까지!
- 프론트엔드 날개달기: Vue, React 배우기 전에 꼭 알아야하는 지식
- [최신] Vue 강의 끝판왕 : Nuxt 3 완벽 마스터
게시글
질문&답변
얕은복사와 깊은복사 질문
정말 좋은 지적입니다! 👍맞습니다. 기술적으로 정확히 말하면 스프레드 연산자(...)는 얕은 복사(shallow copy)를 수행합니다. 강의에서 설명드린 예시:let person1 = {firstName:'짐', lastName:'코딩'}; let person2 = {...person1}; person1.firstName = 'GYM' 이 예시에서는 객체가 원시값만 포함하고 있어서 깊은 복사와 동일한 결과를 보여주지만, 개념적으로는 얕은 복사가 맞습니다.만약 중첩 객체가 있었다면 차이가 명확히 드러났을 겁니다:let person1 = {firstName:'짐', lastName:'코딩', address: {city: '서울'}}; let person2 = {...person1}; person1.address.city = '부산'; console.log(person2.address.city); // '부산' (참조가 공유되므로 변경됨) 질문자님 말씀대로 진정한 깊은 복사는 lodash의 cloneDeep()이나 JSON.parse(JSON.stringify()), 최근의 structuredClone() 메서드를 사용해야 합니다.다음 회차에서 스프레드 연산자가 중첩된 객체를 깊은 복사하지 않는 다는 것으로 설명을 했지만 이번 회차설명에서 보면 틀린 부분이 있어요 👍그리고 React에서 const items = [...todos]에 대한 이해도 정확합니다! 새 배열 참조를 만들기 때문에 React가 상태 변화를 감지할 수 있습니다.이렇게 세심하게 짚어주셔서 감사합니다. 해당 강의 회차에서 Deep Copy vs Shallow Copy 부분을 기초부터 완전한 깊은 복사 까지 제대로 설명하는 것으로 영상을 수정하도록 할게요 🙂감사합니다 👍
- 1
- 2
- 45
질문&답변
Header 스타일링 강의 logo
안녕하세요 🙂아래 URL에 logo.png 이미지 첨부해 두었습니다. 해당 이미지 말씀하시는거 맞죠~?https://gymcoding.notion.site/9c65cdfad25a47af87edea45190b7f83
- 0
- 2
- 14
질문&답변
tailwind css v4 에서 색상 관련해서
안녕하세요 🙂해당 강의에서는 Tailwind CSS 스펙을 자세히 다루고 있지는 않지만, OKLCH 관련해서 답글로 안내해 드리겠습니다!현대화된 P3 컬러 팔레트Tailwind CSS v4에서는 기본 색상 팔레트 전체를 RGB에서 OKLCH로 업그레이드했습니다. 이는 이전에 sRGB 색상 공간으로 제한되었던 부분에서 벗어나 더 넓은 색 영역을 활용하여 색상을 더 생생하게 만들었습니다.OKLCH 활용 예시Tailwind CSS v4에서는 새로운 @theme 지시문을 통해 OKLCH 색상을 쉽게 정의할 수 있습니다:@import 'tailwindcss'; @theme { --color-ocean-600: oklch(0.65 0.18 220); --color-sunrise: oklch(0.88 0.12 80); } body { background-color: theme(colors.white); color: theme(colors.gray.900); } 컴포넌트에서는 다음과 같이 사용할 수 있습니다:function Dashboard() { return ( 대시보드 ); } 그리고 Tailwind CSS 강의 교안 하단에 TailwindCSS v4 새로운 버전에 대한 변경사항을 정리해 두었으니 참고하시면 도움이 되실 거예요.마지막으로 새롭게 추가한 회차 "Next.js 업그레이드 & Changelog"가 있는데요, 해당 회차 후반부에서 간단히 Shadcn UI에 새롭게 변경된 테마(OKLCH 기반)를 적용하는 방법을 간략히 설명드려요 🙂수강 중에 또 궁금한 사항이 있으시면 언제든 문의주세요! 💪
- 0
- 2
- 51
질문&답변
Docs 추가한 게 자꾸 사라져요
안녕하세요 🙂Cursor AI 공식 Github을 살펴보면, Docs 인덱싱 실패와 같은 다양한 이슈가 보고되고 있네요. 다행히 개발팀에서 이 문제들을 지속적으로 개선해 나가고 있는 것으로 보입니다.저도 처음에 설정 과정에서 추가한 Docs가 갑자기 사라져서 당황했던 경험이 있어요. 해결책으로 Cursor AI를 최신 버전으로 업데이트하고, 프로그램을 완전히 종료한 후 다시 실행하여 Docs를 추가했더니 어느 시점부터는 안정적으로 유지되더라고요!우선 이 방법을 한번 시도해 보시겠어요? 만약 그래도 문제가 해결되지 않는다면, 임시 방편으로 Notepad 기능을 활용해 중요한 Docs 내용을 저장해 두었다가, 추후 기능이 안정화되면 다시 시도해 보는 것도 좋은 대안이 될 것 같습니다 💪GitHub에서 Cursor AI의 docs 관련 이슈docs가 인덱싱되지 않는 문제 - https://github.com/getcursor/cursor/issues/2750특정 사이트의 docs가 인덱싱되지 않는 문제 - https://github.com/getcursor/cursor/issues/2749커스텀 docs 인덱싱 실패 문제 - https://github.com/getcursor/cursor/issues/1994이러한 이슈들을 통해 Cursor AI에서 docs 관련 문제가 지속적으로 보고되고 있음을 알 수 있습니다.
- 0
- 1
- 42
질문&답변
강의와 상관은 없지만, 궁금한 점이 있어 질문드립니다.
안녕하세요 🙂해당 스펙은 Vue Named Slots 으로 검색하면 다양한 인사이트를 얻을 수 있을거예요 🙂그리고 관련 공식문서 링크로 첨부드릴게요~! https://vuejs.org/guide/components/slots.html#named-slots
- 0
- 2
- 21
질문&답변
추가 기능과 삭제 기능에 대해 질문있습니다.
안녕하세요! 질문 잘 읽었습니다. 추가 기능과 삭제 기능의 차이점에 대해 설명해 드리겠습니다.맞습니다. 두 코드의 주요 차이점은 데이터의 영속성(persistence) 에 있습니다.첫 번째 코드 - 클라이언트 상태 관리const handleAddNote = () => { setNotes([...notes, {id: "", content: ""}]) } 이 코드는 React의 상태(state)만 변경하는 코드입니다:React 컴포넌트의 notes 상태에만 새 항목을 추가합니다메모리에만 존재하므로 페이지를 새로고침하면 모든 변경사항이 사라집니다서버와 통신하지 않고 클라이언트 측에서만 관리됩니다두 번째 코드 - 서버와 통신export function createCanvas() { const newCanvas = { title: uuid().substring(0, 4) + '새로운 린 캔버스', lastModified: dayjs().format('YYYY-MM-DD HH:mm:ss'), category: '신규', }; return canvases.post('/', newCanvas); } export async function deleteCanvas() { await canvases.delete(`/${id}`); } 이 코드는 API 호출을 통해 서버와 통신합니다:canvases.post와 canvases.delete는 서버 API 엔드포인트에 요청을 보냅니다데이터가 서버의 데이터베이스에 저장되므로 새로고침 후에도 변경사항이 유지됩니다HTTP 메서드(POST, DELETE)를 사용하여 서버의 데이터를 변경합니다
- 0
- 1
- 16
질문&답변
화면이 왜 이렇게 뜨는걸까요?
안녕하세요ㅜ많은 이슈 중 원인이 강의와 동일한 코드가 아니기 때문에 발생하는데요 ㅜ 우선 오류를 알기 위해서는 코드나 오류메시지를 확인해야 찾아볼 수 있을 거 같아요.
- 0
- 2
- 55
질문&답변
왜 다르게 뜰까요..?ㅠㅠ
안녕하세요.프로젝트 생성시 강의시와 버전이 다를 경우 다르게 보일 수 있는데요 강의시 버전과 동일하게 맞추시면 도움이 될 것 같아요.강의 교안 참고 - https://gymcoding.notion.site/d871ce77473941058d578b2e41250570버전 이슈 참고 - https://youtu.be/pqDzX8q16Nc?si=M46LX54LTAfjTQGK
- 0
- 2
- 36
질문&답변
메모 추가 및 제거UI 부분 질문있습니다.
안녕하세요! 네, 맞습니다.useEffect 훅의 의존성 배열에 content가 있기 때문에:컴포넌트가 최초 마운트될 때 실행됩니다.content 상태가 변경될 때마다 다시 실행됩니다.이 코드의 핵심 목적은 textarea의 높이를 동적으로 조절하는 것입니다. 사용자가 내용을 입력할수록 textarea가 자동으로 확장되어 모든 콘텐츠를 표시할 수 있게 합니다. 이것은 사용자 경험을 개선하는 좋은 기능입니다.textareaRef.current.style.height = textareaRef.current.scrollHeight + 'px'; 위 코드는 텍스트 영역의 실제 콘텐츠 높이(scrollHeight)를 측정하여 요소의 높이를 그에 맞게 설정합니다.만약 의존성 배열이 빈 배열([])이었다면, 이 효과는 컴포넌트가 마운트될 때 한 번만 실행되었을 것이고, 사용자가 입력할 때 textarea 높이가 업데이트되지 않았을 것입니다.이 패턴은 React에서 "auto-growing textarea"를 구현하는 일반적인 방법입니다. 사용자가 메모를 작성할 때마다 content 상태가 변경되고, useEffect가 실행되어 textarea의 높이를 조정하게 됩니다.
- 0
- 2
- 28
질문&답변
npm init vue , npm create vue@latest 명령 오류
안녕하세요 🙂이 오류는 최신 Node.js(버전 22)에서 ESM(ECMAScript Modules) URL 처리와 Windows 경로 시스템 간의 호환성 문제로 발생하고 있습니다. 특히 Windows의 드라이브 경로(c:)가 ESM URL 스키마로 제대로 해석되지 않아 문제가 발생하고 있는 것 같은데요.오류는 보면 Node.js 버전 v22.14.0 을 사용하고 계신 것 같은데요.Node 22 버전으로 시도해 보실 때 확인차 node -v 로 버전이 확실히 변경이 되었는지 확인해 보시겠어요?
- 0
- 2
- 81