묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
스터디 테스트코드에 대해 여쭤보고 싶습니다.
안녕하세요 강사님. 전체적으로 한 번 복습한 후 테스트코드를 작성하던 도중에 궁금한 점이 생겨서 질문을 남기게 되었습니다. 제가 스스로 작성해보고 막히는 부분이 있으면 선생님코드를 참고하는 식으로 작성하고 있는데 아래와 같은 테스트에서 저는 마지막에 findByPath("wrong path"); 라고 작성했는데 강사님의 코드에서는 findByPath("test-path")로 되어있더라구요 혹시 제가 어떤 부분을 잘못생각해서 다른건지 여쭤보고 싶습니다. 요즘 유튜브 자바스터디도 잘 보고있습니다! @Test@WithAccount("keesun")@DisplayName("스터디 개설 - 실패")void createStudy_fail() throws Exception { mockMvc.perform(post("/new-study") .param("path", "wrong path") .param("title", "study title") .param("shortDescription", "short description of a study") .param("fullDescription", "full description of a study") .with(csrf())) .andExpect(status().isOk()) .andExpect(view().name("study/form")) .andExpect(model().hasErrors()) .andExpect(model().attributeExists("studyForm")) .andExpect(model().attributeExists("account")); Study study = studyRepository.findByPath("test-path"); assertNull(study);}
-
쉽게 배우고, 포트폴리오로 만드는 반응형 웹! #설화수
테블릿 이미지와 모바일 가로스크롤 질문 드립니다.
삭제된 글입니다
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
git commit -m "changed" 진행이 안됩니다.
안녕하세요. git commit -m "changed" 명령 후 터미널에 On branch master Changes not staged for commit: modified: frontend (modified content, untracked content) no changes added to commit 이렇게 메시지가 나옵니다. 이건 왜 그걸걸까요??
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
babel-loader 때문에 npm run start 안되는 문제
루트 경로에 있는 node_modules 를 지우고 프로젝트안에 node_modules 지우고 package-lock.json 지우고 다시 설치하면 됩니다
-
해결됨남박사의 파이썬 기초부터 실전 100% 활용
소스코드
소스코드 다운로드 url좀 알려주세요
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 영화 사이트 만들기
리렌더링 문제에 대해 질문이 있습니다.
import React, { useEffect, useState } from 'react' import { FaCode } from "react-icons/fa"; import { API_URL, API_KEY, IMAGE_BASE_URL } from '../../Config' import MainImage from './Sections/MainImage' import GridCards from '../commons/GridCards' import { Row } from 'antd' function LandingPage() { const [Movies, setMovies] = useState([]) const [MainMovieImage, setMainMovieImage] = useState(null) const [CurrentPage, setCurrentPage] = useState(0) useEffect(() => { const endpoint = `${API_URL}movie/popular?api_key=${API_KEY}&language=en_US&page=1` fetchMovies(endpoint) }, []) const fetchMovies = (endpoint) => { fetch(endpoint) .then(response => response.json()) .then(response => { console.log(response) setMovies([...Movies, ...response.results]) setMainMovieImage(MainMovieImage || response.results[0]) setCurrentPage(response.page) }) } const loadMoreItems = () => { const endpoint = `${API_URL}movie/popular?api_key=${API_KEY}&language=en_US&page=${CurrentPage + 1}` fetchMovies(endpoint) } return ( <div style={{ width: '100%', margin:'0'}}> {/* Main Image */} {MainMovieImage && <MainImage image={`${IMAGE_BASE_URL}w1280/${MainMovieImage.backdrop_path}`} title={MainMovieImage.original_title} text={MainMovieImage.overview} /> } <div style={{width: '85%', margin: '1rem auto'}}> <h2>Movies by latest</h2> <hr /> {/* Movie Grid Cards */} <Row gutter={[16, 16]} > {Movies && Movies.map((movie, index) => ( <React.Fragment key={index}> <GridCards LandingPage image={movie.poster_path ? `${IMAGE_BASE_URL}w500${movie.poster_path}` : null } movieId={movie.id} movieName={movie.original_title} /> </React.Fragment> ))} </Row> </div> <div style={{ display:'flex', justifyContent: 'center'}}> <button onClick={loadMoreItems}>Load More</button> </div> </div> ) } export default LandingPage 밑의 질문도 보고 setMainMovieImage(MainMovieImage || response.results[0]) 으로 바꾸고 나서 load more 버튼을 클릭하면 메인 이미지는 변경되지 않는 것을 확인했습니다. 그런데 여전히 그리드 쪽은 리렌더링되면서 해주신 것처럼 버튼을 누른 자리에서 스크롤이 있고 카드들이 더 생기는 것이 아니라 새로고침처럼 load more 버튼이 있는 제일 밑으로 이동합니다. 이 문제를 수정하려면 어떻게 할 수 있을까요? 아니면 문제를 수정하기 위해 어떤 게 필요할까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요 질문드립니다~!
안녕하세요. 스프링핵심원리 강의를 수강하고 다음강의 기다리면서 보고있습니다. 타임리프는 처음써보는데 HTML 태그내에 ${} 등과 같은 JSTL태그는 많이 안쓰는 추세같은데, 타임리프에서는 사용하나요? 아니라면 보통 프론트에서 JQUERY로 담당했던 부분은 어떤걸로 대체 혹은 프론트에서 많이 사용되는지 되는지 궁금합니다~ 감사합니다.
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
강의 소리가 안들립니다
중급강의 조금전까지 잘 들었어요 문제가 있나요?
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
beomseok Chae
안녕하세요~깃헙 승인 부탁드립니다!
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
docker mongodb atlas 연결 질문
안녕하세요 우선 도커 강의 너무 잘 봤습니다. 강사님이 올리신 다른 mern stack 강의를 복습 활용 하기 위해서 docker 와 aws를 연결시키려고 하는데 어려움이 있어서 질문 드립니다. 이런식으로도 해보고 다른 여러가지 방식을 해봤는데 안되더라고요. backend 부분에 config만들고 그안에 dev,key,prod.js 로 나뉘어서 작동을 합니다.(강사님 mern stack 강의 자료와 동일) 이부분하고 연결이 되어야 하는 거 같은데 어떤 식으로 docker-compose를 구성해야 할지 잘 모르겠네요. 감사합니다.
-
미해결MOS Excel Expert 2016 자격증 따기
목표값찾기 실습파일이 없습니다.
목표값찾기 실습파일이 없습니다.
-
미해결스프링 핵심 원리 - 기본편
질문 있어요. DisposableBean destory시에...
안녕하세요. 강의듣다가 질문이 있어서요. DisposableBean의 destroy 메서드는 스프링컨테이너 종료전에 호출 된다고 하셨는데 당연히 ApplicationContext 가 굳이 close 호출 안해도 호출이 되어야 하는거 아닌가요? 테스트 하다가 ac.close() 를 빼니 bean에 등록된 destroy 가 호출이 안되네요. 아님 스프링이 자체적으로 스프링컨테이너 종료시에는 destroy를 안하고 명시적으로 ac를 close 해줄때만 추가적으로 destroy 해주는 기능을 추가한 걸까요? 이것도 아님 ac.close() 를 호출 안하면 스프링컨테이너 자체가 정상종료가 되는게 아니라 jvm이 종료되기 때문에 그냥 강제로 스프링 컨테이너가 종료되는 건가요? 근데 만약 이렇다고 하면 ApplicationContext 에 기본적으로 close 가 있어야 할거 같은 느낌이 드네요. 영한님 강의 전부 수강신청한 사람으로써 빨리 신규강의 기다려 지네요. (아직 다 보지는 못했고 "자바 ORM 표준 JPA 프로그래밍" 듣고 인상 깊어서 결제만 해놨어요)
-
미해결홍정모의 따라하며 배우는 C언어
다시 질문합니다
5분 부터 나오는 동적할당 해서 문자열을 복사해주는 부분이요 동적 할당을 하는 이유가 입력 받을 문자열의 사이즈를 모르기 때문에 할당 받는것이 맞는 건가요?? 아니면 spcpy 함수로 데이터를 저장 하기 위해서 사용하는 건가요?? 동적할당강의를 다시 다 봤는데도 헷갈려서 다시 글남깁니다.
-
미해결[유니티 3D] 실전! 생존게임 만들기 - Advanced
애니메이터창이 없어요!
제꺼에는 강좌에 있는 이 에니메이터창이없어요! ㅠㅠ 그래서 anim에 넣을게있는지 보기(동그라ㄴ미)눟눌러도 None나와요 ! ㅠㅠ 어디서 보는거죠?버전다른문제인ㅇ가요?
-
미해결문과생도, 비전공자도, 누구나 배울 수 있는 파이썬(Python)!
jupyter 실행
명령창에서 jupyterlab을 실행하면 엑세스 권한이 없다고 나오는데 어떻게 해야될까요. 윈도우 입니다. ㅠㅠ
-
미해결마개와 함께 업무자동화 도전하기 (RPA UiPath)
안녕하세요. 강의 정말 잘 듣고 있는 수강생입니다.
현재 제가 빅데이터 분석 프로젝트를 하고 있는데요. 서울시에 원룸 데이터를 데이트 스크래핑 하는 과정에서 오류가 발생하여 질문을 남기게 되었습니다. 우선 동작동에 있는 원룸 10페이지를 데이터 스크래핑을 지정 한 후에 Ctrl + F5로 실행 한 결과 밑에 보이는 오류가 뜹니다. 해결 방법을 알려주세요! 구글링을 통해서 쉽게 오류 수정했습니다! 정말 유익하고 좋은 강의 라는 생각이 듭니다. 앞으로 열심히 듣겠습니다. 감사합니다!
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
안녕하세요 개발자님
안녕하세요 질문이 있는데요! 제가 개발자님의 코드를 적용하여 다른걸 만들어봤는데 오류가 나서 질문드립니다. import React, { useEffect, useState } from 'react'; import axios from "axios"; import { Icon, Col, Card, Row, Carousel } from 'antd'; import Meta from 'antd/lib/card/Meta'; import ImageSlider from '../../utils/ImageSlider'; import SearchFeature from './Sections/SearchFeature'; const LandingPage = () => { const [Products, setProducts] = useState([]); const [Skip, setSkip] = useState(0); const [Limit, setLimit] = useState(8); const [SearchTerm, setSearchTerm] = useState(""); const [score, setScore] = useState(0); const getProducts = (body) => { axios.post('/api/product/products', body) .then(response => { if (response.data.success) { setProducts(response.data.productInfo) } else { alert(" 상품들을 가져오는데 실패 했습니다.") } }) } const renderCards = Products.map((product, index) => { console.log('*** : ', product) const title = product.title ?? ''; const splitTitle = title.split(','); var _score = 0; const temp = splitTitle.map((str, i) => { const _str = str; if(_str === '철' || _str === '금' || _str === '불'){ _score += 1; } }); console.log('_score : ',_score) setScore(_score) <<< 이부분 return <> <Col lg={6} md={8} xs={24} key={index }> <Card cover={<a href={`/product/${product._id}`} ><ImageSlider images={product.images} /></a>} > <Meta title={product.description} // description={`$${product.description}`} /> </Card> </Col> </> }) const updateSearchTerm = (finalSearch) => { console.log("finalSearch",finalSearch); let body = { skip: 0, limit: Limit, searchTerm: finalSearch } setSkip(0) setSearchTerm(finalSearch) getProducts(body) } return ( <div style={{ width: '75%', margin: '3rem auto' }}> <div style={{ textAlign: 'center' }}> <h2>Let's Travel Anywhere <Icon type="rocket" /> </h2> </div> <div style={{ display: 'flex', justifyContent: 'flex-end', margin: '1rem auto' }}> {/* <SearchFeature refreshFunction={ updateSearchTerm} /> </div> */} <SearchFeature updateSearchTerm={filters => updateSearchTerm(filters)} /> </div> <Row gutter={[16, 16]} > {renderCards} </Row> <br /> </div> ) } export default LandingPage import React, { useEffect, useState } from "react"; import { Input } from "antd"; const { Search } = Input; function SearchFeature(props) { const [searchTerm, setSearchTerm] = useState({ s1: "", s2: "", s3: "", }); console.log("searchTerm :::", searchTerm); const searchHandler = (key, data) => { setSearchTerm({ ...searchTerm, [key]: data, }); }; const onSubmitHandler = (event) => { event.preventDefault(); const postData = searchTerm; //if(예외처리) props.updateSearchTerm(postData); }; return ( <div> <form onSubmit={onSubmitHandler}> <div> <Search placeholder="ingredients1" onChange={(e) => searchHandler("s1", e.target.value)} style={{ width: 200 }} value={searchTerm.s1} /> </div> <div> <Search placeholder="ingredients2" onChange={(e) => searchHandler("s2", e.target.value)} style={{ width: 200 }} value={searchTerm.s2} /> </div> <div> <Search placeholder="ingredients3" onChange={(e) => searchHandler("s3", e.target.value)} style={{ width: 200 }} value={searchTerm.s3} /> </div> <button>변신!</button> </form> </div> ); } export default SearchFeature; 제가 이것을 응용해봤는데요 제가 하려는 것은 제가 입력한 세개의 값이 만약 철 금 불 이라고 가정했을 시 디비에 철 금 불 이라는 글자가 있을때 제가 입력한 글과 디비에 있는 글이 맞은 수 대로 score에 setScore를 통해서 저장해주려고 하거든요.. 값은 잘 들어오고 console에도 값이 맞은 글자 수 대로 잘 들어옵니다 이것 말고는 다른페이지의 코드도 거의 같습니다. 그런데 setScore(_score)를 하여 state값에 스코어를 저장하려하면 이상하게 콘솔에 수많은 score값이 찍히며 Error: Too many re-renders. React limits the number of renders to prevent an infinite loop. 이러한 에러가 뜹니다... 이것을 해결하려면 어떻게 해야할까요...
-
미해결아마존 클라우드 무료계정으로 시작하는 서버리스 애플리케이션 프로젝트
강의노트가 어디에 있나요????
암만 찾아봐도 안보이는데;;
-
해결됨[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
open as bracket으로 여니까 아래와 같이 문제가 생겨요
c드라이브에 css폴더, script폴더, images폴더를 만들어서 새로 만든 폴더에 넣고 빈공간에 open as a bracket을 클릭했더니 위와 같이 사이드바에 c드라이브에 있는 모든 폴더들이 뜨는데 어떻게 해결하나요? 예전에는 이렇게 해도 문제가 없이 잘 작동됬고 학원에서도 이렇게 했거든요? 왜그럴까요? 그리고 html폴더 만들고 css폴더, script 폴더, images 폴더 만든 다음에 html 폴더 안에는 따로 html폴더 만들지 않고 html 파일을 저장하는 식으로 하면 /images/ 안하고 images/만 해도 이미지 링크 되는거죠?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
H2설치관련
안녕하세요 혹시 제가 Window 에서 설치하는 중에 h2.bat 파일을 관리자권한으로 실행했는데 Error: Could not find or load main class org.h2.tools.Console 이런 에러가 뜨네요 환경변수 설정도 해봤는데도 H2가 실행이 안돼서요 어떻게 하는게 좋을까요 .. 좋은 강의 감사드립니다.