inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

176만명의 커뮤니티!! 함께 토론해봐요.

이미지 상대주소로 저장방법

미해결

따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]

안녕하세요. 완강한 이후에 추가로 헤로쿠에서 배포하는 강의까지 수강하였고 헤로쿠에서 정상작동을 했습니다. 인터넷에 배포를 할때 , src={`http://localhost:5000/${image}`} 상대주소를 적어서 dev 모드와 prod모드에서 동시에 보여질려고 하면 어떻게 해야 하는 지 궁금합니다. 감사합니다.

  • 웹앱
  • redux
  • nodejs
  • react
  • mongodb
kenjo 댓글 1 좋아요 0 조회수 310

강의 관련 질문

[개념부터 실습까지] 추천 시스템 입문편

삭제된 글입니다

  • pandas
  • 머신러닝 배워볼래요?
  • scikit-learn
  • seaborn
  • 추천-시스템
rjsdnr4 댓글 1 좋아요 2 조회수 93

댓글기능중에서

미해결

파이썬 사용자를 위한 웹개발 입문 A to Z Django + Bootstrap

안녕하세요. 댓글을 쓸때 엔터(줄바꿈)는 댓글 남겼을때 기능을 안하는데 엔터 두번을 하면 줄바꿈 한번의 기능을 하네요. post 에서처럼 {{ comment.get_markdown_content | safe}} 쓰면 되지않을까 해서 여러곳에 놓아봤는데 해결이 안되네요. 혹시 어떻게 해결할 수 있을까요?

  • django
  • bootstrap
  • python
Tony Moon 댓글 1 좋아요 0 조회수 243

강의에 사용하신 ppt 자료 복습용 으로 사용하고 싶은데 메일로 받을수 있을까요?

미해결

네트워크 공격 유형 이해와 네트워크 위협 행위 분석

강의와 관련있는 질문 을 남겨주세요. • 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등) • 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색 을 해주세요. (중복 질문을 자제해주세요.) • 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’ 를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달 에도 요령이 필요합니다. • 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요. • 강의실 페이지 (/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다. • 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재 해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드 를 남겨주세요! 구체적인 질문 일수록 명확한 답을 받을 수 있어요. • 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요. • 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요 . • 정확한 질문 내용과 함께 코드 를 적어주시거나, 캡쳐 이미지 를 첨부하면 더욱 좋습니다. 기본적인 예의 를 지켜주세요. • 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용 은 스팸 처리 등 제재를 가할 수 있습니다.

김유준 댓글 2 좋아요 2 조회수 478

@Valid관련 에러를 처리할때

미해결

스프링과 JPA 기반 웹 애플리케이션 개발

@Valid관련 에러를 BindingResult로 받는거랑 Errors로 받는거에 대한 차이가 따로 있을까요?

  • java
  • spring-boot
  • spring
  • JPA
  • thymeleaf
Sooyoung Jung 댓글 1 좋아요 0 조회수 219

코랩에서 PDF 파일로 어떻게 변환하는 방법에 대해서...

해결됨

[NLP] IMDB 영화리뷰 감정 분석을 통한 파이썬 텍스트 분석과 자연어 처리

안녕하세요. 계속 박 강사님의 강의를 다 듣고 있는데요... 실습하는 파이썬 코드 노트를 오프라인으로 PDF 파일로 보면서 학습하려고 하는데 코랩에서 PDF 파일로 변환하는 방법을 도저히 인터넷에서 찾을 수 가 없어서요. 혹시 알고 계시거나 다른 방법이 있는지요?..

  • NLP
  • python
제임스 댓글 2 좋아요 1 조회수 23701

main.js 적용내용 강좌에서 에러가 나서 문의 드려요~

해결됨

애플 웹사이트 인터랙션 클론!

(() => { let yOffset = 0 ; //window.pageyOffset let prevScrollHeight = 0 ; // 현재 스크롤 위치(yOffset)보다 이전에 위치한 스크롤 섹션들의 스크롤 높이값의 합 let currentScene = 0 ; // 현재 활성화된(눈 앞에 보고있는) 씬(scroll-section) let enterNewScene = false ; //새로운 scene이 시작된 순간 const sceneInfo = [ { // 0 type : 'sticky' , heightNum : 5 , //브라우저 높이의 5배로 scrollHeight 세팅 scrollHeight : 0 , objs : { container : document . querySelector ( '#scroll-section-0' ), messageA : document . querySelector ( '#scroll-section-0 .main-message.a' ), messageB : document . querySelector ( '#scroll-section-0 .main-message.b' ), messageC : document . querySelector ( '#scroll-section-0 .main-message.c' ), messageD : document . querySelector ( '#scroll-section-0 .main-message.d' ), }, values : { messageA_opacity_in : [ 0 , 1 , { start : 0.1 , end : 0.2 }], messageB_opacity_in : [ 0 , 1 , { start : 0.3 , end : 0.4 }], messageC_opacity_in : [ 0 , 1 , { start : 0.5 , end : 0.6 }], messageD_opacity_in : [ 0 , 1 , { start : 0.7 , end : 0.8 }], messageA_translateY_in : [ 20 , 0 , { start : 0.1 , end : 0.2 }], messageB_translateY_in : [ 20 , 0 , { start : 0.3 , end : 0.4 }], messageC_translateY_in : [ 20 , 0 , { start : 0.5 , end : 0.6 }], messageD_translateY_in : [ 20 , 0 , { start : 0.7 , end : 0.8 }], messageA_opacity_out : [ 1 , 0 , { start : 0.25 , end : 0.3 }], messageB_opacity_out : [ 1 , 0 , { start : 0.45 , end : 0.5 }], messageC_opacity_out : [ 1 , 0 , { start : 0.65 , end : 0.7 }], messageD_opacity_out : [ 1 , 0 , { start : 0.85 , end : 0.9 }], messageA_translateY_out : [ 0 , - 20 , { start : 0.25 , end : 0.3 }], messageB_translateY_out : [ 0 , - 20 , { start : 0.45 , end : 0.5 }], messageC_translateY_out : [ 0 , - 20 , { start : 0.65 , end : 0.7 }], messageD_translateY_out : [ 0 , - 20 , { start : 0.85 , end : 0.9 }] } }, { // 1 type : 'normal' , heightNum : 5 , //브라우저 높이의 5배로 scrollHeight 세팅 scrollHeight : 0 , objs : { container : document . querySelector ( '#scroll-section-1' ) } }, { // 2 type : 'sticky' , heightNum : 5 , //브라우저 높이의 5배로 scrollHeight 세팅 scrollHeight : 0 , objs : { container : document . querySelector ( '#scroll-section-2' ), messageA : document . querySelector ( '#scroll-section-2 .a' ), messageB : document . querySelector ( '#scroll-section-2 .b' ), messageC : document . querySelector ( '#scroll-section-2 .c' ), pinB : document . querySelector ( '#scroll-section-2 .b .pin' ), pinC : document . querySelector ( '#scroll-section-2 .c .pin' ), }, values : { messageA_translateY_in : [ 20 , 0 , { start : 0.15 , end : 0.2 }], messageB_translateY_in : [ 30 , 0 , { start : 0.6 , end : 0.65 }], messageC_translateY_in : [ 30 , 0 , { start : 0.87 , end : 0.92 }], messageA_opacity_in : [ 0 , 1 , { start : 0.25 , end : 0.3 }], messageB_opacity_in : [ 0 , 1 , { start : 0.6 , end : 0.65 }], messageC_opacity_in : [ 0 , 1 , { start : 0.87 , end : 0.92 }], messageA_translateY_out : [ 0 , - 20 , { start : 0.4 , end : 0.45 }], messageB_translateY_out : [ 0 , - 20 , { start : 0.68 , end : 0.73 }], messageC_translateY_out : [ 0 , - 20 , { start : 0.95 , end : 1 }], messageA_opacity_out : [ 1 , 0 , { start : 0.4 , end : 0.45 }], messageB_opacity_out : [ 1 , 0 , { start : 0.68 , end : 0.73 }], messageC_opacity_out : [ 1 , 0 , { start : 0.95 , end : 1 }], pinB_scaleY : [ 0.5 , 1 , { start : 0.6 , end : 0.65 }], pinC_scaleY : [ 0.5 , 1 , { start : 0.87 , end : 0.92 }] } }, { // 3 type : 'sticky' , heightNum : 5 , //브라우저 높이의 5배로 scrollHeight 세팅 scrollHeight : 0 , objs : { container : document . querySelector ( '#scroll-section-3' ), canvasCaption : document . querySelector ( '.canvas-caption' ) }, valeus : { canvasCaption_opacity : [ 0 , 1 , { start : 0 , end : 0 } ], canvasCaption_translateY : [ 20 , 0 , { start : 0 , end : 0 } ] } }, ] function setLayout (){ //각 스크롤 섹션의 높이 세팅 for ( let i = 0 ; i < sceneInfo . length ; i ++){ if ( sceneInfo [ i ]. type === 'sticky' ){ sceneInfo [ i ]. scrollHeight = sceneInfo [ i ]. heightNum * window . innerHeight ; } else if ( sceneInfo [ i ]. type === 'normal' ){ sceneInfo [ i ]. scrollHeight = sceneInfo [ i ]. objs . container . offsetHeight ; } sceneInfo [ i ]. objs . container . style . height = ` ${ sceneInfo [ i ]. scrollHeight } px` ; } console . log ( sceneInfo ); yOffset = window . pageYOffset ; let totalScrollHeight = 0 ; for ( let i = 0 ; i < sceneInfo . length ; i ++){ totalScrollHeight += sceneInfo [ i ]. scrollHeight ; if ( totalScrollHeight >= yOffset ){ currentScene = i ; break ; } } document . body . setAttribute ( 'id' , `show-scene- ${ currentScene } ` ); } function calcValues ( values , currentYOffset ){ let rv ; const scrollHeight = sceneInfo [ currentScene ]. scrollHeight ; const scrollRatio = currentYOffset / sceneInfo [ currentScene ]. scrollHeight ; if ( values . length === 3 ){ //start const partScrollStart = values [ 2 ]. start * scrollHeight ; const partScrollEnd = values [ 2 ]. end * scrollHeight ; const partScrollHeight = partScrollEnd - partScrollStart ; if ( currentYOffset >= partScrollStart && currentYOffset <= partScrollEnd ){ rv = ( currentYOffset - partScrollStart )/ partScrollHeight * ( values [ 1 ]- values [ 0 ])+ values [ 0 ]; } else if ( currentYOffset < partScrollStart ){ rv = values [ 0 ]; } else if ( currentYOffset > partScrollEnd ){ rv = values [ 1 ]; } } else { //end rv = scrollRatio * ( values [ 1 ]- values [ 0 ])+ values [ 0 ]; } return rv ; } function playAnimation (){ const objs = sceneInfo [ currentScene ]. objs ; const values = sceneInfo [ currentScene ]. values ; const currentYOffset = yOffset - prevScrollHeight ; const scrollHeight = sceneInfo [ currentScene ]. scrollHeight ; const scrollRatio = currentYOffset / scrollHeight ; // console.log(currentScene); switch ( currentScene ){ case 0 : if ( scrollRatio <= 0.22 ){ //in objs . messageA . style . opacity = calcValues ( values . messageA_opacity_in , currentYOffset ); objs . messageA . style . transform = `translate3d(0, ${ calcValues ( values . messageA_translateY_in , currentYOffset ) } %, 0)` ; } else { //out objs . messageA . style . opacity = calcValues ( values . messageA_opacity_out , currentYOffset ); objs . messageA . style . transform = `translate3d(0, ${ calcValues ( values . messageA_translateY_out , currentYOffset ) } %, 0)` ; } if ( scrollRatio <= 0.42 ) { // in objs . messageB . style . opacity = calcValues ( values . messageB_opacity_in , currentYOffset ); objs . messageB . style . transform = `translate3d(0, ${ calcValues ( values . messageB_translateY_in , currentYOffset ) } %, 0)` ; } else { // out objs . messageB . style . opacity = calcValues ( values . messageB_opacity_out , currentYOffset ); objs . messageB . style . transform = `translate3d(0, ${ calcValues ( values . messageB_translateY_out , currentYOffset ) } %, 0)` ; } if ( scrollRatio <= 0.62 ) { // in objs . messageC . style . opacity = calcValues ( values . messageC_opacity_in , currentYOffset ); objs . messageC . style . transform = `translate3d(0, ${ calcValues ( values . messageC_translateY_in , currentYOffset ) } %, 0)` ; } else { // out objs . messageC . style . opacity = calcValues ( values . messageC_opacity_out , currentYOffset ); objs . messageC . style . transform = `translate3d(0, ${ calcValues ( values . messageC_translateY_out , currentYOffset ) } %, 0)` ; } break ; case 1 : // console.log('1 play'); break ; case 2 : // console.log('2 play'); break ; case 3 : // console.log('3 play'); break ; } } function scrollLoop (){ enterNewScene = false ; prevScrollHeight = 0 ; for ( let i = 0 ; i < currentScene ; i ++){ prevScrollHeight += sceneInfo [ i ]. scrollHeight ; } if ( yOffset > prevScrollHeight + sceneInfo [ currentScene ]. scrollHeight ){ enterNewScene = true ; currentScene ++; document . body . setAttribute ( 'id' , `show-scene- ${ currentScene } ` ) } if ( yOffset < prevScrollHeight ){ enterNewScene = true ; if ( currentScene === 0 ) return ; //브라우저 바운스 효과 방지 currentScene --; document . body . setAttribute ( 'id' , `show-scene- ${ currentScene } ` ) } if ( enterNewScene ) return ; playAnimation (); } window . addEventListener ( 'scroll' , () => { yOffset =( window . pageYOffset ); scrollLoop (); }) // window.addEventListener('DOMContentLoaded',setLayout); window . addEventListener ( 'load' , setLayout ); window . addEventListener ( 'resize' , setLayout ); })() 0.62 scrollRatio 에서 에러가 나서 문의 드려요. main.js:187 Uncaught TypeError: Cannot read property 'style' of null

  • 클론코딩
  • 인터랙티브-웹
  • HTML/CSS
  • 웹 디자인
  • svg
  • javascript
LIZ.B 댓글 2 좋아요 0 조회수 362

안녕하세요 튜터님

해결됨

비전공자를 위한 개발자 취업 개론

안녕하세요 강의 방금 20분전에 결제 했는데 제가 생각한 강의와 다르네요.. 혹시 환불 요청 드려도 될까요??

  • 포트폴리오
  • 면접
patagonia 댓글 1 좋아요 1 조회수 188

jquery는 어떤 버전을 다운받아야 하나요

미해결

[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드

jquery는 어떤 버전을 다운받아야 하나요? 다른 수업에서 자바스크립트는 전체버전과 약식 버전...즉 용량이 큰것과 작은 것이 잇다고 배웟었는데...제이쿼리는 아래 그림 준 어떤것을 다운 받아야 하는지 알려주세요

  • 웹 디자인
  • HTML/CSS
  • jquery
디자인클릭 댓글 1 좋아요 1 조회수 677

import 모듈 실패

미해결

[라즈베리파이] IoT 딥러닝 Computer Vision 실전 프로젝트

pygame 을 설치했는데도 계속 실행이 안되어서 새로운 가상환경을 만들어 설치하다 보니 기존 설치했던 파일들 까지 import 에러가 발생합니다. path때문에 ㄱ런거 같은데 방법이 있을까요?

  • keras
  • tensorflow
  • 딥러닝
  • iot
  • Raspberry-Pi
  • 컴퓨터-비전
98dlstod 댓글 2 좋아요 0 조회수 299

PyQt5 만들고 파이썬에서 코드작성하는데 오류가떠요

미해결

파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기

line 10, in <module> class Main(QMainWindow, Form_class): NameError: name 'Form_class' is not defined 이런오류가떠요 어떻게하죠??

  • 웹-크롤링
  • python
임권일 댓글 1 좋아요 0 조회수 688

저도 쿠폰 부탁드립니다!

미해결

쉽게 배우는 Webpack

공지를 늦게 확인했네요. 지금 쿠폰 저도 받을 수 있을까요?

  • 웹팩
  • Bundling
박해제 댓글 2 좋아요 1 조회수 273

User.js comparePassword 부분 오타 해결

미해결

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의

영상속 코딩을 그대로 따라했는데 postman 으로 로그인 시도시 무한로딩상태이길래 이리저리 해보다가 if ( err ) return cb ( err ), cb(null, isMatch) 윗 부분에서 문제더군요. if ( err ) return cb ( err ); cb ( null , isMatch ); 이렇게 바꾸어주고 해결되었습니다. 영상속 코드 내용이 잘못된 것같긴한데 확실히 말은 못하겠네요.

  • nodejs
  • react
하트오렌지 댓글 4 좋아요 15 조회수 401

검증데이터, 테스트데이터에 대한 질문입니다.

미해결

[개정판] 파이썬 머신러닝 완벽 가이드

조기 중단을 위한 eval_set에 test를 넣으면 안된다는 이야기를 들었는데, 어떤 이야기인지는 알겠습니다. 그런데 실제 실무에서는 어떤식으로 학습시키는지를 잘 모르겠습니다. 1) x_train과 x_test를 나눠 x_test를 테스트데이터로 잡고, x_train에서 일부를 때서 교차검증을 하든, 검증데이터를 따로 빼서 eval_set으로 넘겨주는 것이 맞는건가요? 2) 검증데이터로 조기 중단을 한 뒤, 테스트 데이터로 점검을 하는 방향으로 가는 것이라고 생각합니다. 그런데 Grid_Search_CV에서 나오는 최적 파라미터는 1개이고, 학습된 모델도 1개입니다. 그렇다면 테스트 데이터를 넣어서 점검을 하였을 때 비교할 것이 없는데 테스트 데이터를 따로 빼놓는 이유를 모르겠습니다. 무엇이 좋다 나쁘다를 확인하려면 비교대상이 있어야 되는 게 아닌가요? 테스트 데이터를 따로 빼놓아 편향이 이뤄지지 않게 하는 것 까진 이해했으나, 어디에 쓰기 위해, 무엇을 위해 빼놓는지를 잘 모르겠습니다. 실무에서 테스트 데이터가 무엇을 위해 사용되는지가 궁금합니다.

  • 머신러닝 배워볼래요?
  • 통계
  • python
김재형 댓글 2 좋아요 0 조회수 364

API 설정 공통화 강의에서 에러가 납니다.

해결됨

Vue.js 끝장내기 - 실무에 필요한 모든 것

이 전 강의에서는 data.username 으로 접근도 되고 값 초기화 까지 되었는데 이 번 강의에서 코드를 쳤더니 409 에러가 납니다... 그리고 전에 소스로 돌려서 했더니 똑같은 에러가 나네요ㅜㅜ

  • vuejs
  • javascript
  • vuex
백고수 댓글 2 좋아요 2 조회수 409

ThreadPool은 한 Main 함수당 한개인가요?

해결됨

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

20:40 부터 ThreadPool 이라는 Static 클래스로 최소최대 스레드를 설정하지 않습니까? ThreadPool이랑 전혀 연관점이 없는 Task는 그 개수에 영향을 받고있고요? 한 프로그램이 사용하는 ThreadPool은 한개로 설정되어있는건가요? 마치 유니티 에디터의 프로젝트 세팅처럼? 또 ThreadPool의 최대 스레드 개수에 new Thread로 만들어진 스레드도 영향을 받나요?

  • C#
  • network
  • unity
poiqwe 댓글 1 좋아요 1 조회수 201

각 페이지별로 있는 내용을 한곳에서 볼수 없을까요?

미해결

직접 만드는 노션 템플릿 BEST 7선

안녕하세요 강사님 강의 너무 잘 봤습니다. 페이지 여러개에서 Todo list나 달력에 있는 내용을 한곳에서 볼 수 없을까요? 예를 들어 저희는 프로젝트 별로 페이지를 만들고 프로젝트 별로 Todo 리스트를 만듭니다. 이렇게 해서 관리 하면 페이지 마다 들어가서 Todo 리스트를 봐야하는데 이런 Todo 리스트만 모아서 볼수 있으면 좋을 것 같습니다. 강의에 나오는 내용인데 이해 못하고 다시물어보는 건가요? ^^;

  • notion
  • 협업 툴
  • 업무 생산성
믿는구석 댓글 0 좋아요 1 조회수 236

제로초님

미해결

React로 NodeBird SNS 만들기

제로초님 안녕 하세요 궁금한 것 이 있어 질문을 남깁니다. javascript 에서 const aa = [1, 2, 3, 4, 5, 6, 7, 8, 9] const bb = [1, 2, 3] 일때 두 배열의 중복 값인 [1,2,3] 만 가져 와야 될 경우 어떻게 해야 할지 해서 질문 남깁니다.

  • javascript
  • react
김로인 댓글 1 좋아요 0 조회수 217

인기 태그

인프런 TOP Writers

주간 인기글