자료가 수업에 사용된 내용과 다른 것 같아요
해결됨
[VOD] 6주 완성! 개발 실무를 위한 고농축 바이브코딩 (Cursor AI, Figma)
다른 파일들은 잘 모르겠는데 일단 01-common.mdc 이 파일은 수업에 사용하신 것보다 내용이 적어 보여요. 파일 확인 부탁 드리겠습니다.
- react
- next.js
- cursor
- 프롬프트엔지니어링
- 바이브코딩
172만명의 커뮤니티!! 함께 토론해봐요.
해결됨
[VOD] 6주 완성! 개발 실무를 위한 고농축 바이브코딩 (Cursor AI, Figma)
다른 파일들은 잘 모르겠는데 일단 01-common.mdc 이 파일은 수업에 사용하신 것보다 내용이 적어 보여요. 파일 확인 부탁 드리겠습니다.
미해결
[VOD] 6주 완성! 개발 실무를 위한 고농축 바이브코딩 (Cursor AI, Figma)
안녕하세요. 수강생입니다. 혹시 수업에 사용중이신 Cursor가 버전이 어떻게 되나요. 저는 1.5.9 버전인데 커서 핵심 기능과 Rules 설정하면이 좀 달라서요. 프로젝트 Rules 화면도 다르고 Add Rule시 제가 사용하는 버전은 아래와 같이 나옵니다. 어떤 Rules를 설정을 해야할지 답변 부탁드립니다. 감사합니다.
미해결
[VOD] 6주 완성! 개발 실무를 위한 고농축 바이브코딩 (Cursor AI, Figma)
피그마에 접속해서 MCP 플러그인 을 설치하려고 했는데 더하기 버튼이 안 보입니다. 아래와 같은 버튼들만 보이는데 어떻게 해야하나요?
미해결
인프런 클론코딩 Part 1: Next.js와 NestJS로 시작하는 실전 프로젝트
✅ 모든 질문들은 슬랙 채널에서 답변드리고 있습니다. 💡 ”로펀의 인프런 상담소” 슬랙 채널 가입하기 💡 평일중에는 퇴근 이후(저녁 7시)에 답변을 받아보실 수 있고, 주말중에는 상시 답변드리고 있습니다. 안녕하세요 . 강의 수강중 질문이 생겨서 여기에 이렇게 남깁니다. Courses 테이블에서 Lectures 테이블과 일대다 관계를 이렇게 해주셨는데요. model Course { id String @id @default(uuid()) slug String @unique title String shortDescription String? @map("short_description") description String? @map("description") thumbnailUrl String? @map("thumbnail_url") price Int @default(0) discountPrice Int? @map("discount_price") level String @default("beginner") instructorId String @map("instructor_id") isPublished Boolean @default(false) @map("is_published") createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at") sections Section[] lectures Lecture[] categories CourseCategory[] enrollments CourseEnrollment[] reviews CourseReview[] questions CourseQuestion[] instructor User @relation(fields: [instructorId], references: [id]) @@map("courses") } model Section { id String @id @default(uuid()) title String description String? order Int courseId String @map("course_id") createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at") lectures Lecture[] course Course @relation(fields: [courseId], references: [id], onDelete: Cascade) @@map("sections") } model Lecture { id String @id @default(uuid()) title String description String? order Int duration Int? isPreview Boolean @default(false) @map("is_preview") sectionId String @map("section_id") courseId String @map("course_id") videoStorageInfo Json? @map("video_storage_info") createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at") section Section @relation(fields: [sectionId], references: [id], onDelete: Cascade) course Course @relation(fields: [courseId], references: [id], onDelete: Cascade) activities LectureActivity[] @@map("lectures") } 궁금한점은 이미 저희가 나중에 DTO 에서 코스 테이블 레코드 를 가져오면 Sections 테이블과 이미 일대다 관계가 되어있기떄문에 Sections 테이블에서 레코드를 가져오면서 Sections 테이블이 이미 Lectures 와 일대다 관계가 되어있기 떄문에 코스 테이블에서 레코드 가져오면 섹션 테이블 안에 이미 렉쳐 레코드도 같이 따라오는데 코스 테이블에서 따리 중독 관계를 해두신 이유가 궁금합니다. 시간 내주셔서 감사합니다
미해결
[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
슬라이드 작성 시 CSS 도 변경되어야 할 것 같은데 아직 강의 영상에서는 찾지 못했습니다. 어느 위치에 있는 건가요? 예를 들면 가로 슬라이드 제작시 width: 3600px;로 설정하고 position absolute로 변경 해야 할 것 같은데 관련 사항을 찾을 수 없습니다. abc type에 대한 flex / jquery 적용 완성본 공유 부탁드립니다. ABD 강의 영상은 DEF 타입과 달리 flex나 jquery 를 사용하지 않아 시험 준비하는데 어려움이 있네요. 혹시 제가 찾지 못한 것이라면 위치 알려주셨으면 합니다. 그리고 시험이 얼마남지 않아 공부중인데 자료 찾는데 시간이 너무 많이 걸립니다. A~F 유형에 대한 모든 완성본 취합해서 올려주시면 많은 도움이 될 것 같습니다.
미해결
[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
@charset "UTF-8"; body{ margin: 0; background-color: #ffffff; color: #333333; } a{ text-decoration: none; color: #333333; } .container{ width: 100%; } .main{ margin: auto; display: flex; border: 1px #333333 solid; box-sizing: border-box; } footer{ margin: auto; } .left{ width: 200px; border: 1px #333333 solid; box-sizing: border-box; } .right{ width: calc(100% - 200px); border: 1px #333333 solid; box-sizing: border-box; } .header-logo{ height: 100px; border: 1px #333333 solid; } .navi{ border: 1px #333333 solid; box-sizing: border-box; height: 100px; } .sub-menu{ border: 1px #333333 solid; height: 100px; } .header-logo a img{ object-fit: cover; } .slide{ height: 400px; border: 1px #333333 solid; position: relative; } .slide-itmes{ height: 400px; border: 1px #333333 solid; position: relative; overflow: hidden; } .silde-items-img{ height: 400px; width: 300%; font-size: 0; position: absolute; } .silde-items-img a{ border: 1px #333333 solid; height: inherit; width: calc(100% / 3); display: inline-block; box-sizing: border-box; } .silde-items-img a img{ object-fit: cover; height: inherit; width: 100%; } .slide-banner{ position: absolute; top: 0; right: 0; box-sizing: border-box; } .item1{ height: 200px; border: 1px #333333 solid; box-sizing: border-box; } .item2{ height: 250px; border: 1px #333333 solid; box-sizing: border-box; } .news{ height: inherit; } footer{ border: 1px #333333 solid; display: flex; justify-self: start; box-sizing: border-box; width: 100%; } footer>div{height: 100px;} .footer-logo{ background-color: #161111; width: 200px; } .copyright{ background-color: aqua; width: calc(100% - 400px); } .sns{ background-color: rgb(158, 69, 69); width: 200px; } <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="css/style.css"> <title>Document</title> </head> <body> <div class="container"> <div class="main"> <div class="left"> <header> <div class="header-logo"> <a href="#none"><img src="images/logo-b4-header.png" alt=""></a> </div> <div class="navi"></div> <div class="sub-menu"></div> </header> </div> <div class="right"> <div class="slide"> <div class="slide-items"> <div class="slide-items-img"> <a href="#none"><img src="images/slide-d-01.jpg" alt=""></a> </div> </div> <div class="slide-banner"> <a href="#none"><img src="images/banne-a1-02.jpg" alt=""></a> </div> </div> <div class="item1"> <div class="shortcut"></div> </div> <div class="item2"> <div class="news"></div> </div> </div> </div> <footer> <div class="footer-logo"></div> <div class="copyright"></div> <div class="sns"></div> </footer> </div> <script src="script/jquery-1.12.4.js"></script> <script src="script/custom.js"></script> </body> </html> ovject-fit:cover;했는데 이미지가 유동적으로 변하지 않아서 글을 올립니다 창 넓이를 늘리면 슬라이드창에 맞춰 이미지 크기가 변해 붙지 않고 공백이 생겨납니다
미해결
인프런 클론코딩 Part 1: Next.js와 NestJS로 시작하는 실전 프로젝트
파일 업로드 기능 구현 후, Dropzone을 통해 업로드를 진행하고 [강의 수정] 페이지에서 ⨯ [Error: Body exceeded 1 MB limit. To configure the body size limit for Server Actions, see: https://nextjs.org/docs/app/api-reference/next-config-js/serverActions#bodysizelimit ] 이런 에러를 만났습니다. 해결방안 next.config.tx 파일에 serverActions에서 보내는 bodySizeLimit를 300MB로 설정해주세요. 기본이 1MB 라고 합니다.
미해결
인프런 클론코딩 Part 1: Next.js와 NestJS로 시작하는 실전 프로젝트
이런 문제가 발생되어 버전이 일치하지 않아 설치가 안되어 진도를 나가지 못하고 있습니다..
미해결
인프런 클론코딩 Part 1: Next.js와 NestJS로 시작하는 실전 프로젝트
인프런 자체 자막은 아니라서 영상속에 포함이 된거 같은데 제거 가능할까요 보이는 자막은 후반 부에 대부분 보이며 지금 보이는 부분은 [FE] 커리큘럼 관리 구현 부분 입니다. 관련 이미지 첨부합니다 .
해결됨
한 입 크기로 잘라먹는 Next.js
이전 챕터에서 클라이언트 컴포넌트에 대해 다뤘을때 서버에서 사용할 수 없는 훅을 사용할 경우 클라이언트 컴포넌트를 사용해야한다고 이해하였습니다. 그 중 하나가 useEffect이고 그 이유는 useEffect는 컴포넌트가 마운트 되었을 때 즉, 브라우저에 렌더링 되었을 때 실행되기 때문이라고 이해하였습니다. 제가 생각했을 때에는 useActionState 훅은 서버에서 실행되어도 상관 없는 훅이라고 생각하는데 맞는지 궁금합니다. 만약 맞다면 useEffect 훅을 사용하지 않고 useActionState만 사용한다면 서버 컴포넌트로 사용할 수 있는 것인지도 궁금합니다.
해결됨
비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
start medium phone api 36 디바이스를 추가하고 실행시키면 첨부한 이미지처럼 검은 화면이 나오거나 안드로이드 폰 배경화면만 나오는데 이건 왜 그런걸까요? 우측하단 디바이스 선택하는 곳에서 웹으로는 잘 실행이 됩니다. flutter doctor로 검사해도 별다른 문제가 없는데 커서로 물어보면 주구장창 flutter doctor -v 테스트만 하네요~ ㅜㅜ
해결됨
[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
@charset "UTF-8"; body{ margin:0 ; background-color: #fff; color: #222328; } a{ color: #222328; text-decoration: none; } .header-inner{ width: 1200px; margin: auto; line-height: 120px; } header{ height: 100px; width: 1200px; margin: auto; z-index: 20; position: relative; } header>div{ height:100px;} .header-logo{ width: 200px; height: 100px; float: left; } .navi{ width: 800px; height: 100px; float: right; } .contents-inner{ width: 1200px; margin: auto; } .slide{ width: 1200px; height: 300px; position: relative; overflow: hidden; } .slide-items{ width: 3600px; height: 300px; font-size: 0; position: absolute; } .items{ width: 1200px; margin: auto; display: flex; } .items>div{ height: 200px; width: 400px; } .footer-inner{ border: #222328 1px solid; width: 1200px; margin: auto; } footer{ height: 100px; width: 1200px; display: flex; overflow: hidden; } .footer-items{ width: 1000px; } .footer-items div{ height: 50px; border: #222328 1px solid; } .fmily-site{ border: #222328 1px solid; width: 200px; } /* 갤러리,공지사항 */ .tab-inner{ padding-top: 10px; } .tab1{ border: #222328 1px solid; width: 93%; padding: 10px; margin: auto; } .tab1 a{ display: block; border-bottom: 1px #222328 solid; } .tab1 a:last-child{ border-bottom: none; } b{ float: right; font-weight: normal; } .tab-inner>span{ display: inline-block; border: #222328 1px solid; border-radius: 5px 5px 0 0; border-bottom: #fff 1px solid; margin-bottom: -1px; margin-left: 10px; width: 100px; text-align: center; } .tab2{ border: #222328 1px solid; width: 93%; padding: 10px; margin: auto; padding-top: 22px; text-align: center; height: 112px } .tab2 a img{ width: 100px; } .banner a img{ padding: 5px; width: 95%; } /* 메뉴 */ .menu{padding: 0;} .menu li{ float: left; width: 25%; list-style: none; text-align: center; display: block; } .menu li>a{ display: block; } .sub-menu{ background-color: #222328; border: 1px solid #222328 } .sub-menu a{ display: block; text-align: center; color: #fff; z-index: 8; display: none; } .menu li:hover>a{ color: #fff; background-color: #222328; } .sub-menu a:hover{ color: #222328; background-color: #fff; } .sub-back{ width: 1200px; height: 200px; background-color: #222328; position: absolute; left: 0; top:100%; z-index: -3; display: none; } .footer-items:nth-child(1){ text-align: center; } setInterval(function(){ $('.slide-items').animate({left:'-1200px'},function(){ $('.slide-items').css({left:0}) $('.slide-items a:first-child').appendTo('.slide-items') }) }, 3500); $('.menu li').mouseenter(function(){ $('.sub-menu,.sub-back').slideDown() }) $('.menu li').mouseleave(function(){ $('.sub-menu,.sub-back').slideUp() }) <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <div class="container"> <div class="header-inner"> <header> <div class="header-logo"> <a href="#none"><img src="images/header-logo.jpg" alt=""></a> </div> <div class="navi"> <ul class="menu"> <li> <a href="#none">대학소개</a> <div class="sub-menu"> <a href="#none">총장인사말</a> <a href="#none">학교소개</a> <a href="#none">홍보관</a> <a href="#none">캠퍼스안내</a> </div> </li> <li> <a href="#none">입학안내</a> <div class="sub-menu"> <a href="#none">수시모집</a> <a href="#none">정시모집</a> <a href="#none">편입학</a> <a href="#none">재외국민</a> </div> </li> <li> <a href="#none">정보서비스</a> <div class="sub-menu"> <a href="#none">대학정보알림</a> <a href="#none">정보공개</a> <a href="#none">정보서비스안내</a> </div> </li> <li> <a href="#none">커뮤니티</a> <div class="sub-menu"> <a href="#none">공지사항</a> <a href="#none">참여게시판</a> <a href="#none">자료실</a> </div> </li> <div class="sub-back"></div> </ul> </div> </header> </div> <div class="contents-inner"> <div class="slide"> <div class="slide-items"> <a href="#none"><img src="images/slide01.jpg" alt="슬라이드1"></a> <a href="#none"><img src="images/slide02.jpg" alt="슬라이드2"></a> <a href="#none"><img src="images/slide03.jpg" alt="슬라이드3"></a> </div> </div> <div class="items"> <div class="news"> <div class="tab-inner"> <span>공지사항</span> <div class="tab1"> <a href="#none">산업대학교 동문회장배 자선골프대회<b>2016-09-12</b></a> <a href="#none">개교 100주년 기념 야외 오페라 초청 <b>2016-09-10</b></a> <a href="#none">동문회장 및 운영위원장 후보자 추천<b>2016-09-09</b></a> <a href="#none">진행위원회(정회원) 선발 결과<b>2016-09-07</b></a> <a href="#none">산업대학교 동문회 개최일 변경<b>2016-08-30</b></a> </div> </div> </div> <div class="gallery"> <div class="tab-inner"> <span>갤러리</span> <div class="tab2"> <a href="#none"><img src="images/img1.jpg" alt="이미지"></a> <a href="#none"><img src="images/img2.jpg" alt="이미지"></a> <a href="#none"><img src="images/img3.jpg" alt="이미지"></a> </div> </div> </div> <div class="banner"> <a href="#none"><img src="images/banner.jpg" alt=""></a> </div> </div> </div> <div class="footer-inner"> <footer> <div class="footer-items"> <div><a href="#none">법적고지 개인정보취급방침 개인정보처리방침 <br>상호명 : 산업대학교 대표자 : 송성훈 개인정보관리책임자 : 김보미 대리 사업장주소 : 서울특별시 중구 개항로 49</a></div> <div><select> <option value="">패밀리사이트</option> <option value="">산업대학교</option> <option value="">정보통신부</option> <option value="">과학기술연구원 </option> </select></div> </div> <div class="family-site"> <select> <option value="https://www.naver.com">네이버 </option> </select> </div> </footer> </div> </div> <script src="script/jquery-1.12.4.js"></script> <script src="script/custom.js"></script> </body> </html>
해결됨
떠먹는 Three.js
아직 초반부지만 열심히 듣고 있는데요, 섹션3에서 각각의 명령어를 설명하시면서 직접 마우스로 움직이면서 하시더라구요 강사님 설명을 들으면서 입력해보고는 있는데 그렇게 움직이면서는 확인이 안되어서요.... 따로 코딩을 더 넣어야 하는건지 아님 제가 놓친 부분이 있는지 해서요
미해결
Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
안녕하세요. 강사님. 강의를 보고 개인 웹사이트를 만들었는데요. https://mirihomepage.com/ 로그인이 안됩니다;;; superuser도 있고, 카테고리/google 사이트 등록까지 분명 다 했는데, https인증 받고, 도메인 연결하고 그러는 사이에 뭔가 달라진건가싶습니다...
해결됨
[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
이 강의를 이전에 구입했었고 이제 들으려 하니 코드도 강의도 옛날 그대로고 업데이트도 끝난것 같네요
해결됨
[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>Green복지재단</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <div class="container"> <header> <div class="header-logo"> <a href="#none"><img src="images/header-logo.jpg" alt="헤더로고"></a> </div> <div class="navi"> <ul class="menu"> <li> <a href="#none">재단소개</a> <div class="sub-menu"> <a href="#none">설립취지</a> <a href="#none">연혁</a> <a href="#none">찾아오시는길</a> </div> </li> <li> <a href="#none">후원하기</a> <div class="sub-menu"> <a href="#none">국내후원</a> <a href="#none">국외후원</a> <a href="#none">맞춤후원</a> </div> </li> <li> <a href="#none">자료실</a> <div class="sub-menu"> <a href="#none">서식자료실</a> <a href="#none">사진자료실</a> <a href="#none">후원양식</a> </div> </li> <li> <a href="#none">스토리</a> <div class="sub-menu"> <a href="#none">웹진</a> <a href="#none">보고서</a> <a href="#none">나의 후원</a> </div> </li> </ul> </div> </header> <div class="slide"> <div class="slide-items"> <a href="#none"><img src="images/slide01.jpg" alt="슬라이드"></a> <a href="#none"><img src="images/slide02.jpg" alt="슬라이드"></a> <a href="#none"><img src="images/slide03.jpg" alt="슬라이드"></a> </div> </div> <div class="contents"> <div class="news"> <div class="tab-inner"> <div class="btns"> <a href="#none">공지사항</a> <a href="#none">갤러리</a> </div> <div class="tabs"> <div class="tab1"> <a href="#none"> SMS 발송 모바일 서비스 개선작업 안내입니다.<B>2020.01.09</B></a> <a href="#none">휴대폰 인증 서비스 개선 작업 기간 연장합니다. <B>2020.01.07</B></a> <a href="#none">카드사 부분 무이자 할부 이벤트 2월 3일까지 혜택<B>2019.12.31</B></a> <a href="#none">올앳 시스템 작업 안내<B>2019.12.20</B></a> <a href="#none">휴대폰 결제 시스템 작업이 완료되었습니다.<B>2019.12.20</B></a> </div> <div class="tab2"> <a href="#none"><img src="images/img1.jpg" alt="이미지1"></a> <a href="#none"><img src="images/img2.jpg" alt="이미지2"></a> <a href="#none"><img src="images/img3.jpg" alt="이미지3"></a> </div> </div> </div> </div> <div class="banner"> <a href="#none"><img src="images/banner.jpg" alt="배너"></a> </div> <div class="shortcut"> <a href="#none"><img src="images/shortcut.jpg" alt="쇼컷"></a> </div> </div> <footer> <div class="footer-logo"> <a href="#none"><img src="images/footer-logo.jpg" alt="푸터로고"></a> </div> <div class="copyright"> 법적고지 개인정보취급방침 개인정보처리방침 <br>상호 : 엣지컴퍼니 | 대표자 : 홍길동 | 개인정보관리책임자 : 장길산 차장 <br>사업장주소 : 서울특별시 강남구 테헤란로 123-56 </div> <div class="family-site"> <select name="" id=""> <option value="https://naver.com">네이버</option> <option value="https://daum.net">다음</option> </select> </div> </footer> </div> </div> <div class="modal-layer"> <div class="modal-contents"> <h1>SNS비회원주문하기 종료 안내</h1> <h2> 안녕하세요, JUST 쇼핑몰 MD 홍길동입니다. 안타깝게도 SNS비회원 주문하기 서비스가 한달 뒤 종료될 예정입니다. <br>회원가입없이 SNS계정을 이용해 그동안 제품주문을 하실수 있었는데, 금번 강화된 개인정보보호법 시행령 제 9조 (부칙 3조 3항)에 의거, SNS를 이용한 상품 주문/결제등이 근래에 많은 보안잇슈로 문제가 되고 있음에 다라 KISA의 권고조치의 일환으로 했습니다. 따라서, 한달뒤인 2019.03.10 이후 모든 비회원 고객님들께서는 회원가입으로 전환 후 실명인증이 되어야 하며, 이는 모든 쇼핑몰/오픈마켓등의 전자상거래서비스의 공통된 사항이라는 점을 안내해드립니다.</h2> <a href="#none" class="close-modal"></a> </div> <script src="script/jquery-1.12.4.js"></script> <script src="script/custom.js"></script> </div> </body> </html> @charset "utf-8"; body{ margin: 0%; background-color: #ffffff; color: #333333; } body a{ color: #333333; text-decoration: none; } .container{ margin: auto; width: 1200px; } header{ height: 100px; } .header-logo{ width: 200px; float: left; padding-top: 20px; text-align: center; } .navi{ border: #333333 1px solid; box-sizing: border-box; width: 800px; float: right; } .contents{ height: 200px; display: flex; } .contents>div{ width: 400px; } footer{ height: 100px; display: flex; } .footer-logo{ width: 200px; line-height: 110px; } .copyright{ width: 700px; text-align: center; padding-top: 10px; } .family-site{ width: 200px; padding-top: 30px; padding-left: 60px; } .modal-layer{ display: none; } select{ text-align: center; } /* 메뉴 */ ul.menu{ list-style: none; position: relative; z-index: 10; padding: 0; } ul.menu>li { float: left; text-align: center; width: 25%; } ul.menu>li>a{ padding: 2px; transition: 0.5s; } .sub-menu>a{ display:block; text-align: center; transition: 0.5s; } .sub-menu{ display: none; } .sub-menu a:hover{ color: #fff; background-color: #333333; } .menu li:hover>a{ color: #fff; background-color: #333333; } /* 슬라이드 */ .slide{ position: relative; height: 300px; overflow: hidden; } .slide-items{ font-size: 0; position: absolute; width: 3600px; height: 300px; } /* 뉴스,갤러리 */ .tab-inner{ padding-top: 20px; } .tab1{width: 95%; padding: 7px; margin: auto; box-sizing: border-box; border: #333333 1px solid; display: none;} .tab1 a{ display: block; font-size: smaller; box-sizing: border-box; border-bottom: #333333 1px solid; } .tab1 a:last-child{ border-bottom: none; } .tab1 a b{ font-weight: normal; float: right; } .tab2{ width: 95%; margin: auto; box-sizing: border-box; border: #333333 1px solid; } .tab2 a{ text-align:center; } .tab2 a img{ width: 100px; } .btns a{ display:inline-block; border: #333333 1px solid; border-radius: 5px 5px 0 0; padding: 2px; border-bottom: #ffffff; background-color: #bbb; } .btns{ margin-left: 15px; margin-bottom: -1px; } .btns a:last-child{ margin-left: -4px; } a.active{ background-color: #fff; } // 메뉴 $('ul.menu>li').mouseenter(function(){ $('.sub-menu').stop().slideDown() }) $('ul.menu>li').mouseleave(function(){ $('.sub-menu').stop().slideUp() }) // 슬라이드 setInterval(function(){ $('.slide-items').animate({left:'-1200px'},function(){ $('.slide-items').css({left:0}) $('.slide-items a:first-child').appendTo('.slide-items') }) },3500) // 탭메뉴 $('.btns a:first-child').click(function(){ $(this).addClass('active') $(this).siblings().removeClass('active') $('.tab1').show() $('.tab2').hide() }) $('.btns a:last-child').click(function(){ $(this).addClass('active') $(this).siblings().removeClass('active') $('.tab2').show() $('.tab1').hide() }) 서브메뉴가 내려올때 엄청 크게 내려오고, 메뉴의 큰 카테고리에 배경색이 끝까지 채워지지 않습니다
해결됨
비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
현재 백엔드 개발자로써 근무중인 직장인 입니다. 추후 1인 창업을 목표로 이 강의를 구매하였는데요. 개발자가 이 강의를 통해 좀 더 시너지를 극대화시킬 수 있는 방법이 있는지 궁금합니다.
해결됨
Next + React Query로 SNS 서비스 만들기
안녕하세요. 게시물 업로드 요청 시 500 Internal Server Error 에러가 발생합니다. 현재 코드에는 쿠키도 함께 전달되고, 네트워크 탭에서 확인해보면 formData 값도 정상적으로 전송되는 것으로 보입니다. const onSubmit: FormEventHandler = (e) => { e.preventDefault(); // formData 객체에 값 넣기 const formData = new FormData(); formData.append("content", content); preview.forEach((item) => { if (item) { formData.append("images", item.file); } }); // 전송 fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/api/posts`, { method: "post", credentials: "include", body: formData, }); }; 그런데 서버에서는 userId가 undefined로 들어가고 User 정보가 없다(?)는 오류가 발생합니다. 다른 분들의 Internal server error 관련 질문을 살펴봐도, 이 문 제가 프론트에서 확인할 수 있는 부분인지 잘 구분이 되지 않아 질문드립니다. 제가 어디를 중점적으로 확인해보면 좋을까요?
미해결
Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)
안녕하세요! 강의 5:15초 부터의 설명에 조금만 더 자세히 설명해주시면 감사할것 같아서요! "이러한 파람즈도 프라미스로 가져와야겠죠 우리가 최신을 사용하고 있기 때문에 다시 generateMetadata 함수를"라고 스크립트(영상자막)는 나와 있는데, 이유를 설명하는 파트가 잘 안 와닿아서 혹시 설명해주실 수 있나요? 직관적으로 생각하면 export generateStaticParams에서 slug 를 params으로 가져오는데 시간이 걸리니까, 기다려야 하니까 await 으로 params를 기다리는건 알겠는데, 'params'가 왜, 어떻게 해서 Promise 타입인지 궁금합니다. 너무 두서없었네요. 정리하자면 1.왜 params 가 Promise 객체 타입인지, 코드 어디에서, 어떻게 해서 Promise 객체 타입이 되었는지 궁금합니다. 2. 혹시 params 가 Promise 객체 타입인 이유는, 그저, [slug]폴더로 동적페이지로 정의되었으니, 컴포넌트로 들어오는 입력값 {params}는 [] 안에 들어간 변수값이 들어오는 건가요? 그래서 그냥 nextjs 스펙상 무조건promise 로 params 가 주어지게 되는건가요? 너무너무 헷갈려서 그런데, 동적라우팅/정적 라우팅 별, 그리고 Clientside /serverside 별로 4가지로 나누어서 params 가져오는 방법을 설명해주실수 있나요? 너무너무 헷갈리네요.... 동적/정적라우팅에 따라 나뉘나요, client/server 에 따라 나뉘나요? 후자인걸로 생각하고 있긴 한데 맞는지 너무 헷갈리네요.. 감사합니다! 좋은 하루 되세요!
해결됨
프론트엔드 마스터클래스
103강 메모이제이션과 104강 가상화가 매끄럽게 이어지지 않고 끊긴 느낌이라 질문드립니다!