묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Practical Testing: 실용적인 테스트 가이드
스프링 부트 3.x 질문
현재 스프링 부트가 3.x 이상만 지원하고 있는데자바 17 스프링 부트 3.x 최신버전으로 들어도 문제 없을까요??
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
step3 source추가에서 오류가 있습니다
=================현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)서로 예의를 지키며 존중하는 문화를 만들어가요.질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )먼저 유사한 질문이 있었는지 검색해보세요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.================== 안녕하세요 맛비님 xilinx vivado 설치 영상중 step3 과정중 source 추가를 하는 과정중에 error가 떠서 글을 쓰게 되었습니다. xilinx 버전은 동영상과 같은 2022.2 다운 받고 source ./tools/Xilinx/Vivado/2022.2/settings64.sh 로 명령어를 바꾸어 입력해보았지만 error가 나옵니다.혹시 몰라 자동 source 과정도 해보았지만 vivado는 실행되지 않았습니다 ㅜㅜ
-
미해결
onSnapshot 함수 unsubscribe 에 대해서 질문이 있습니다
제가 궁금한건 다른 페이지에 있을 때에도 스냅샷 함수를 가동시켜 비용이 계속해서 발생하는 것을 막기위해 온스냅샷 함수를 unsubscribe, 구독취소하는 코드인데요어째서 제가 읽기에는 unsubscribe = ~ 온스냅샷함수 ~...return () => unsubscribe함수 실행useEffect cleanup기능으로 언마운트시 온스냅샷함수를 정지하려는데 다시 온스냅샷함수를 실행? 제가 어떻게 잘못 이해하는건지 모르겠어요 .. ㅠㅠexport default function Timeline() { const [tweets, setTweet] = useState<ITweet[]>([]); let unsubscribe: Unsubscribe | null = null; const fetchTweets = async () => { const tweetsQuery = query( collection(db, "tweets"), orderBy("createdAt", "desc"), limit(25) ); unsubscribe = await onSnapshot(tweetsQuery, (snapshot) => { const tweets = snapshot.docs.map((doc) => { const { tweet, createdAt, userId, username, photo } = doc.data(); return { tweet, createdAt, userId, username, photo, id: doc.id, }; }); setTweet(tweets); }); }; useEffect(() => { fetchTweets(); return () => { unsubscribe && unsubscribe(); }; }, []); }
-
해결됨[2025 리뉴얼] 스스로 구축하는 AWS 클라우드 인프라 - 기본편
login as 알림창
안녕하십니까. 클라우드 공부하고 있는 학생입니다.다름이 아니라 putty에 IP주소 입력하고 Browse... 다 입력하고 open을 누르면 connectiond timed out 이 뜹니다. 어떻게해야하나요?
-
미해결대세는 쿠버네티스 (초급~중급편)
kubernetes dashboard 2.7.0version 설치 후 Token 문제
현재 v1.27 에서 token- 이 후, tab을 통해 token full name을 찾으려해도 찾아지지 않습니다따라서, docs를 좀 살펴봤는데 원인을 모르겠습니다,,
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘
재귀함수 질문
이 이후에 바로 ret = max(ret, moveDist + Solve(4)); 계산이 이루어져야 하는 거 아닌가요? 디버깅해보니까 다시 Solve(4)가 호출?되고 캐쉬 값을 반환한 이후에 계산이 되는데 어떻게 작동하는 건가요?이 사진이 첫번째 사진 Solve(4)가 반환된 후 다음코드로 이동한거에요.
-
미해결스프링 핵심 원리 - 기본편
필드 주입의 순환 참조 탐지 시기
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요 강의를 듣고 관련 질문들을 찾아보아도 해결되지 않아 문의 남깁니다.스프링에서 생성자 주입을 사용하는 경우 스프링 컨텍스트가 시작하며 순환 참조를 탐지하고 예외를 발생시키는 것으로 알고 있습니다. 그래서 이를 피하기 위해 좋지 않은 예시인 것은 알지만 필드 주입 or setter 주입을 사용할 수 있는 것으로 알고 있습니다.헌데 코드처럼 필드 주입을 통해 AService가 BService의 객체를 필드 주입으로 설정하고, BService 또한 AService의 객체를 필드 주입하도록 설정했습니다. 이 때, 스프링 컨텍스트가 시작되며 해당 순환 참조와 관련된 메소드 호출이 일어나기 전에 스프링이 미리 이를 감지하고 예외를 던져버리는데 제가 이해한 내용이 잘못된 것인지 의문이 생깁니다... IDE는 인텔리제이를 쓰고 있고, 스프링부트 버젼은 2.7.8입니다@Controller public class TestController { @Autowired private AService aService; @GetMapping("/test") public void test() { } } @Service public class AService { @Autowired private BService bService; @Transactional public void test() { ; } } @Service public class BService { @Autowired private AService aService; @Transactional public void test2() { } }
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
아이디 중복확인 NullPointerException
20:35 예시 코드처럼 입력했는데, 공백을 입력하고 중복확인을 하는 경우처럼 반환되는 Member가 없는 경우 NullPointerException이 발생합니다. memID로 찾아지는 Member가 있는 경우 0을 반환하면서 잘 동작합니다.선생님 예시에서는 작동이 잘 되는데 왜 저는 안 되는 걸까요? 옵셔널이나 예외처리를 해주어야 할까요? @RequestMapping("/memRegisterCheck.do") public @ResponseBody int memRegisterCheck(@RequestParam("memID") String memID) { //넘어오는 파라미터 이름과 받는 이름이 같은 경우 생략 가능 Member m = memberMapper.registerCheck(memID); if (m != null || m.equals("")) { //아이디가 중복이거나 공백인 경우 => 사용불가 return 0; } return 1; //사용 가능 } java.lang.NullPointerException kr.board.controller.MemberController.memRegisterCheck(MemberController.java:25) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:871) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:777) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870) javax.servlet.http.HttpServlet.service(HttpServlet.java:489) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855) javax.servlet.http.HttpServlet.service(HttpServlet.java:583) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
불변객체에 대하여 질문있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요. 우선 spring 부터 jpa 까지 수업 잘 듣고 있습니다! 명강의 항상 감사합니다. 임베디드 타입 공유 문제에 해결책으로 불변객체를 만들라는 말씀을 하셔서 궁금증이 생겼습니다. 제가 아는 바로는 불변의 의미가 상수의 개념과는 다르다고 알고 있습니다. "변수에 값을 바꿀 수 있냐"는 의미가 아니라 "처음 할당한 메모리 공간에서 값을 재 할당할 수 있느냐" 인걸로 알고 있습니다. 하여 , 아래와 같은 객체는 불변의 객체라고 볼 수 있느냐가 궁금합니다. 혹여라도 아래 객체가 불변 객체가 아니라고 한다면 컬럼이 수십 개인 실무에서는 어떻게 생성자 만으로 가독성 좋은 코드를 만드시는 지가 궁금합니다 ㅠ@GETTER@Embeddableclass Address { private String city; private String street; private String zipcode; Address() { } Address(String city, String street, String zipcode) { this.city = city; this.street = street; this.zipcode = zipcode; } // 세터 대신 Address changeCity(String city) { return new Address(city, this.street, this.zipcode) }} //사용member.setAddress(member.getAddress().changeCity("seoul"));
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
form-submit vs location.href (http request 차이점)
밑에 질문에 대한 답변을 통해 location.href 도 server에 http request message를 보낸다는 것을 알게되었습니다. 그럼 이렇게 form 구문과 type=submit 으로 http request 메시지를 보내는 것과<form action="item.html" th:action th:object="${item}" method="post"> ..... <button class="w-100 btn btn-primary btn-lg" type="submit">상품 등록</button> ..... 그냥 location.href를 통해 http request message를 보내는 것과 무슨 차이인가요?? <button class="w-100 btn btn-secondary btn-lg" th:onclick="|location.href='@{/form/items}'|" type="button">취소</button>만약 둘 다 server 한테 새 VIEW를 받아야하는 것이면 그냥 둘 중 하나로 통일해도 되는거 아닌가요? 복습 중인데 이쪽에서 이해가 계속 막히네요
-
해결됨[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
강의 "데이터바인딩 gradle 설정에서 오류가 난다면?"에 잘못된 정보가 있습니다
와 같이 build.gradle에 작성을 했을 때 에러가 난다면dataBinding { enabled = true }이렇게 시도해보세요 :)라고 되어있는데 다음과 같이 수정하였으면 좋겠습니다.와 같이 build.gradle에 작성을 했을 때 에러가 난다면dataBinding { enable = true }이렇게 시도해보세요 :)(enabled = true -> enable = true로 수정을 해야 잘 작동하는 것으로 확인하였습니다 수정 부탁드립니다. 감사합니다 :) )
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
테스트코드 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의 듣기 전에 혼자서 update 테스트 코드를 짜봤는데 오류가 나더라고요. 어느 부분이 잘못된건지 알 수 있을까요?void updateItem(){ //given Item item1=new Item("itemA",10000,10); itemRepository.save(item1); //when Item item2=new Item("itemB",20000,12); itemRepository.update(item1.getId(),item2); //then Item updateItem=itemRepository.findById(item2.getId()); assertThat(updateItem.getItemName()).isEqualTo("itemB"); assertThat(updateItem.getPrice()).isEqualTo(20000); assertThat(updateItem.getQuantity()).isEqualTo(12); }
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
[7. Scanner][문제와풀이4] ScannerWhileEx3 질문
안녕하세요 선생님, 선생님께서 남겨주신 코드와 다르게 제 코드처럼 작성해도 무방할지 질문드립니다. [선생님 코드] 선생님께서 작성하신 코드는 input 지역변수의 스코프 값이 넓습니다.public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int sum = 0; int count = 0; int input = 0; System.out.println("숫자를 입력하세요, 입력을 중단하려면 -1을 입력하세요 : "); while (true) { input = scanner.nextInt(); if (input == -1) { break; } sum += input; count++; } double average = (double) sum / count; System.out.println("입력한 숫자들의 합계 : " + sum); System.out.println("입력한 숫자들의 평균 : " + average); }[제가 작성한 코드] 저는 input의 스코프값이 넓다고 생각해서 자체적으로 while문에서만 해당 변수를 부여하고, 사용했는데 하기와 같이 사용해도 무방할까요?public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int sum = 0; int count = 0; System.out.println("숫자를 입력하세요, 입력을 중단하려면 -1을 입력하세요 : "); while (true) { int input = scanner.nextInt(); if (input == -1) { break; } sum += input; count++; } double average = (double) sum / count; System.out.println("입력한 숫자들의 합계 : " + sum); System.out.println("입력한 숫자들의 평균 : " + average);
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
main 실행시
처음 강의 부분에서 main 함수를 실행시키는데 실행 결과가이렇게 뜨면서 에러가 납니다. 그리고 HelloSpringApplicationtest.java의 코드도 위 사진과 같이 강사님하고 다른데 뭐가 문제일까요..? +추가로 제가 직접 코드를 바꿔서 run을 실행하니까 비슷하게 된것 같긴 한데실행 완료가 되지 않습니다.. 다 똑같이 했는데 왜이럴까요..?
-
미해결[개념은 호옹~, 실습 빡] 스프링 부트, 입문!
22강 관련질문
Comment객체에는 Article객체를 하나의 column으로 가지고 있는데 이는 외래키와의 매핑하고 매핑되는 column을 article_id라고 정하는 것은 이해를 했습니다 하지만 Comment a = new Comment(1L, article, "Park", "굳 윌 헌팅");위 코드처럼 article을 인수로 넘겨주면 article안에는 id, title, content라는 여러 column이 있는데 이중에 왜 id값이 선택되는지 궁금합니다예시로 data.sql에서INSERT INTO comment(article_id, nickname, body) VALUES(4, 'Park', '굳 윌 헌팅');이런 sql문을 넣는데 article_id라는 column은 Article타입인데 정수(Long)를 넣어도 어떻게 성립이 되는건지 궁금합니다.
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ThreadManager::Join 관련 질문입니다.
void ThreadManager::Join() { LockGuard guard(_lock); for (thread& t : _threads) { if (t.joinable()) t.join(); } _threads.clear(); }for문 후에 _threads에 들어와서 실제로 join 되지 않고 clear되는 thread가 존재 할 가능성이 있어 보입니다. 그래서 Lock이 필요하다는 생각이 듭니다. 근데 강의 코드에서는 없이 사용하셔서 Lock이 없어도 괜찮은지 질문드립니다.
-
해결됨실제 이력서 사례로 알아보는 [합격하는 이력서] 작성 가이드
경력이력서 포폴질문
경력 프론트엔드 3년차인데 이력서에 프로젝트에 해당기술과 프로젝트에서 한일을 기술 했는데 포트폴리오 ppt에서 또 설명을 해야 하나요? 실제 채용시장에서 이력서만 있다면 서류가 떨어지는 케이스가 많을까요 ?
-
해결됨블렌더 입문 : UX/UI 디자이너를 위한 3D 아이콘으로 배우는 블렌더!
뷰포트 복구
제가 왼쪽 뷰포트(렌더링뷰)를 보다가 키보드 숫자 1을 눌렀는데 해당 오브젝트만 보기가 활성화되는데되돌리는 단축키가 무엇일까용... 🥲오른쪽 패널에서 다시 보기 옵션(눈 모양 아이콘)을 켜도빛 표현이 보이지 않아요 😭
-
미해결
강의 결제 시 무제한 수강
강의 결제 시 무제한 수강이라 쓰여 있는데 유료 수강기간 1년은 무슨 말일까요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
사용자별로 세션이 따로 관리되나요?
사용자마다 서로 다른 세션 저장소가 생성되고 관리되는지 궁금합니다. 만약 공유된다면 session 저장소를 삭제하는 과정에서 다른 사용자의 정보도 같이 삭제되어 문제가 발생할 수도 있을 것 같습니다.더 나아가서 HttpSession은 서블릿이 제공하는 기능이라고 하셨는데, 서블릿이 아닌 HttpServletRequest 객체의 getSession 메소드로 세션에 접근하는 이유가 궁금합니다. 세션 저장소가 사용자별로 다르기 때문에 request 객체로 이를 식별하기 위함일까요?//세션 삭제 로직 HttpSession session = request.getSession(false); if (session != null) { session.invalidate(); }LoginControllerV3에서 로그인 성공 처리과정 중에 세션에 값을 저장하고 쿠키에 세션 id를 등록하는 과정이 언제 이루어지는 것인지 궁금합니다. request.getSession으로 세션 저장소를 가져오고 session.setAttribute에서 세션에 loginMember를 저장함과 동시에 쿠키에 LOGIN_MEMBER의 이름으로 세션 id를 등록하는 걸로 이해했는데 올바르게 이해한건가요? @PostMapping("/login") public String loginV3(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletRequest request){ if (bindingResult.hasErrors()) { return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); log.info("login? {}", loginMember); if (loginMember == null){ bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다."); return "login/loginFrom"; } // 로그인 성공 처리 // 세션 저장소 호출, 없으면 신규 세션 생성 HttpSession session = request.getSession(); // 세션 저장소에 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); return "redirect:/"; }감사합니다!