묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Spring MVC에서 model의 역할
model객체에 대해서 궁금한 점이 있어서 질문 드립니다.일단 강의를 들으면서 dispatcherServlet 구조에 대해서 간략하게 정리한 내용입니다.개발자가 model 객체를 파라미터로 등록후 view에 담길 정보를 저장하고 Controller 메소드를 만듬-> 해당 URL에 접속하면 스프링이 dispatcherServlet의 doDispatch() 실행HandlerAdapter ha = this.getHandlerAdapter(mappedHandler.getHandler());-> doDispatch에서 해당 Controller에 맞는 어댑터를 찾고 mv = ha.handle(processedRequest, response, mappedHandler.getHandler()); -> (handler, request, response)를 가지고 ModelAndView 객체를 생성 이후 processDispatchResult()에서 render()를 실행render()에서는 mv객체 정보를 바탕으로 view의 render()함수를 사용해서 model에 있는 정보를 request.setAttribute()를 사용해서 저장하고 view를 반환함제가 model에 있는 정보를 request의 attribute객체에 담는 함수를 디버깅모드로 찾아봤는데 강의에서 구현한 코드와 거의 유사하게 작성된 것을 발견했습니다. 그럼 model 객체를 단순히 request의 attribute객체에 데이터를 쉽게 전달하기 위해서 사용한다고 생각해도 되는건가요? 그럼 model를 사용하지 않고 request에 직접 접근해서 저장하는 방법도 있을 텐데 스프링에서 model 객체를 만든 이유가 궁금합니다.긴글 읽어주셔서 감사합니다.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
git username 과 gutHub의 이름이 동일해야 하나요?
git username을 먼저 정하고 gitHub에 가서 계정을 만들었는데 유저네임 작명 규정때문에 같은 유저네임을 사용하지 못했습니다. 이게 혹시 문제가 될까요?이미 커밋에 작성자 정보를 입력하고 저장한 상태인데 어떻게 하면 좋을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
실행 자체는 되는데 메모리 누수가 심합니다.
생성자 종료할때 null을 허용하는 설정을 해주지 않아서 (CS8618) Player쪽에서 실행하는 로직은 이상이 없는데 실행했을때 메모리가 GB까지 올라가는 현상이 있었습니다.
-
해결됨개발자를 위한 쉬운 도커
가상머신과 프로세스에 대해 질문 있습니다.
안녕하세요기존 호스트 OS에서 프로그램을 4개 실행 시켰을때 4개의 프로세스가 생성이 되서 작업을 진행합니다 그리고호스트 OS에 하이퍼바이저를 설치하고 4개의 가상 머신을 실행시 결국에는 이 4개의 가상 머신에 대한 프로세스도 4개 할당이 되는건지 궁금합니다. 만약 할당이 된다면 맨 처음 얘기한 호스트 OS 만 있었을때의 프로세스와 가상 머신에 할당된 프로세스와 어떤 차이점이 있는지 궁금합니다.감사합니다.
-
미해결그림으로 쉽게 배우는 운영체제
가상주소를 물리주소로 변환하는 과정
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.2:55 부터 설명해주시는 예시에서 질문 드립니다!논리주소 0x12300 번지 접근 요청시 세그먼트를 알아내는 방법은 무엇일까요?3:50에서 프레임 3에서 페이지 개수 1000을 더하면 물리주소라는게 어떤 의미일까요? 페이징 기법과 유사하게 페이지 개수 칼럼이 세그먼트의 크기를 나타내기 위한 값으로 이해했는데, 실제 물리주소가 프레임 3에서 페이지 개수 1000을 더하면 나오는 값이 무엇인지 잘 모르겠어서 질문드립니다!
-
미해결그림으로 쉽게 배우는 운영체제
페이지 테이블 물리메모리 위치
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.8:25 부분에 메모리관리자가 사용하는 페이지 테이블은 물리메모리 운영체제 영역에 저장된다고 하셨는데요. 1. 프로세스 마다 생성되는 페이지 테이블은 물리메모리의 어디에 할당되는 걸까요? 2.메모리관리자가 사용하는 페이지테이블과 프로세스가 사용하는 페이지테이블의 차이는 무엇일까요?
-
미해결그림으로 쉽게 배우는 운영체제
세그멘테이션 테이블 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.1:30에서 cpu가 논리주소 0x123번지의 물리 메모리 주소 알려달라고 했을때, 메모리 관리자는 몇 번 세그먼트인지 어떻게 알아내는 걸까요?세그멘테이션 테이블에서 세그먼트 번호들은 프로그램 영역(코드, 힙, 데이터, 라이브러리, 스택) 마다 별도의 인덱스가 부여 되어 관리되는걸까요? 어떤 기준으로 세그먼트 인덱스가 정해지는 것인지 궁금합니다.0:40에서 프로그램 관점 메모리와 프로세스 관점 메모리프로세스 관점 메모리가 각 영역을 서로 인접한 것처럼 바라본다는 것이 어떤 의미일까요?프로그램 입장에서 바라보는 메모리와 프로세스가 바라보는 메모리에 대한 설명을 해주셨는데요. 강의 1:30부터 세그멘테이션 테이블을 이용하여 메모리관리자가 논리주소를 물리주소로 변환하는 것과 어떠한 맥락으로 이어지는지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
섹션7 조회한 빈이 모두 필요할 때 List, Map이 null로 나옵니다
제목 그대로 테스트 케이스 진행시List와 Map이 모두 null로 조회되어 테스트 오류가 발생합니다package hello.core.autowired.allbean; import hello.core.discount.DiscountPolicy; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.order.AutoAppConfig; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.util.List; import java.util.Map; import static org.assertj.core.api.Assertions.*; public class AllBeanTest { @Test void findAllBean(){ ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); DiscountService discountService = ac.getBean(DiscountService.class); Member member = new Member(1L, "userA", Grade.VIP); int discountPrice = discountService.discount(member, 10000, "fixDiscountPolicy"); assertThat(discountService).isInstanceOf(DiscountService.class); assertThat(discountPrice).isEqualTo(1000); int rateDiscountPrice = discountService.discount(member, 20000, "rateDiscountPolicy"); assertThat(discountPrice).isEqualTo(2000); } static class DiscountService { private final Map<String, DiscountPolicy> policyMap; private final List<DiscountPolicy> policyList; public DiscountService(Map<String, DiscountPolicy> policyMap, List<DiscountPolicy> policyList) { this.policyMap = policyMap; this.policyList = policyList; System.out.println("policyMap = " + policyMap); System.out.println("policyList = " + policyList); } public int discount(Member member, int price, String discountCode) { DiscountPolicy discountPolicy = policyMap.get(discountCode); return discountPolicy.discount(member, price); } } }java.lang.NullPointerException: Cannot invoke "hello.core.discount.DiscountPolicy.discount(hello.core.member.Member, int)" because "discountPolicy" is null이라는 오류가 발생하는데 어느 부분이 문제인가요
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
C언어 배열
#include <stdio.h>int main(){int arr[5] = {20, 30, 40, 50, 60};int *ptr;ptr = arr;printf("1번. %d\n", ++ *ptr);printf("2번. %d\n", *(arr+1));printf("3번. %d\n", *ptr++);printf("4번. %d\n", ++ *ptr);printf("5번. %d\n", *arr+1);printf("6번. %d\n", *ptr++);printf("7번. %d\n", *ptr+1);} 1번에서 ++*ptr이 반영되어 21,2번에서 *(arr+1)이 반영되어 arr[1], 30,3번에서 *ptr++이 반영되어 21 출력 후 22로 증감까지는 이해가 됬는데,4번 ++*ptr 출력값이 arr[1]로 넘어가는 이유가 궁금합니다. 배열 출력 시 배열 내의 값만 증감되는 것이 아니라 출력되는 배열도 같이 증감되는 건가요 ?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료요청
ans0127@naver.com 강의자료 부탁드립니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA Transaction에서 Delete 되지 않는 현상 관련
@Entity @Getter @Setter @Table(name = "user") @NoArgsConstructor public class User extends TimeStamp { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String name; @Column(nullable = false, unique = true) private String email; @Column(nullable = false) private String password; @Column(nullable = false, unique = true) private String phone; @Column(nullable = false) private String address; @Column(nullable = false, length = 36) private String emailVerificationToken; @Column(nullable = false) private LocalDateTime emailVerificationExpiresAt = LocalDateTime.now().plusHours(24); @Column(nullable = false) private Boolean emailVerifiedStatus = false; @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List<WishList> wishes; @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List<Cart> carts; @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List<OrderList> orderList; public User( String name, String email, String password, String phone, String address, String emailVerificationToken, Boolean emailVerifiedStatus ) { this.name = name; this.email = email; this.password = password; this.phone = phone; this.address = address; this.emailVerificationToken = emailVerificationToken; this.emailVerifiedStatus = emailVerifiedStatus; } }@Service @RequiredArgsConstructor public class CartService { private final UserRepository userRepository; private final ProductRepository productRepository; private final CartRepository cartRepository; public List<CartResponseDto> getCartList(Long userId) { User user = findByuser(userId); List<Cart> cartLists = user.getCarts(); return cartLists.stream() .map(cartList -> new CartResponseDto( cartList.getProduct().getId(), cartList.getProduct().getName(), cartList.getQuantity(), cartList.getProduct().getPrice() * cartList.getQuantity(), cartList.getProduct().getProductStock().getStockQuantity()) ).toList(); } // 장바구니 삭제 @Transactional public List<CartResponseDto> cartDelete(Long userId, CartRequestDto cartRequestDto) { cartRepository.deleteByUserIdAndProductId(userId, cartRequestDto.getProductId()); return getCartList(userId); } private User findByuser(Long userId) { return userRepository.findById(userId).get(); } }@Repository public interface CartRepository extends JpaRepository<Cart, Long> { void deleteByUserIdAndProductId(Long userId, Long productId); }User Entity에 cart 테이블 연관관계를 맺고orderService에서 cartRepository.deleteByUserIdAndProductId에서 데이터를 삭제 후 getCartList를 조회해 retrun 하려고 합니다.예) cart tableid user_id product_id quantity1 41 6 12 41 7 13 41 11 1이때 cartRepository.deleteByUserIdAndProductId에서 product_id 6번을 삭제하고 getCartList를 조회하였는데 6번에 삭제되지 않고 6,7,11이 전부 조회 되었습니다.삭제되지 않는 이유가 무었일까요 ? Hibernate: select u1_0.id,u1_0.address,u1_0.created_at,u1_0.email,u1_0.email_verification_expires_at,u1_0.email_verification_token,u1_0.email_verified_status,u1_0.name,u1_0.password,u1_0.phone,u1_0.updated_at from user u1_0 where u1_0.email=? Hibernate: select c1_0.id,c1_0.product_id,c1_0.quantity,c1_0.user_id from cart c1_0 where c1_0.user_id=? and c1_0.product_id=? Hibernate: select p1_0.id,p1_0.best_status,p1_0.created_at,p1_0.description,p1_0.description_image,p1_0.name,p1_0.new_status,p1_0.price,p1_0.sold_out_status,p1_0.thumbnail_image,p1_0.updated_at from product p1_0 where p1_0.id=? Hibernate: select ps1_0.id,p1_0.id,p1_0.best_status,p1_0.created_at,p1_0.description,p1_0.description_image,p1_0.name,p1_0.new_status,p1_0.price,p1_0.sold_out_status,p1_0.thumbnail_image,p1_0.updated_at,ps1_0.stock_quantity from product_stock_quantity ps1_0 left join product p1_0 on p1_0.id=ps1_0.product_id where ps1_0.product_id=? Hibernate: select u1_0.id,u1_0.address,u1_0.created_at,u1_0.email,u1_0.email_verification_expires_at,u1_0.email_verification_token,u1_0.email_verified_status,u1_0.name,u1_0.password,u1_0.phone,u1_0.updated_at from user u1_0 where u1_0.id=? Hibernate: select c1_0.user_id,c1_0.id,c1_0.product_id,p1_0.id,p1_0.best_status,p1_0.created_at,p1_0.description,p1_0.description_image,p1_0.name,p1_0.new_status,p1_0.price,p1_0.sold_out_status,p1_0.thumbnail_image,p1_0.updated_at,c1_0.quantity from cart c1_0 left join product p1_0 on p1_0.id=c1_0.product_id where c1_0.user_id=? Hibernate: select ps1_0.id,p1_0.id,p1_0.best_status,p1_0.created_at,p1_0.description,p1_0.description_image,p1_0.name,p1_0.new_status,p1_0.price,p1_0.sold_out_status,p1_0.thumbnail_image,p1_0.updated_at,ps1_0.stock_quantity from product_stock_quantity ps1_0 left join product p1_0 on p1_0.id=ps1_0.product_id where ps1_0.product_id=? Hibernate: select ps1_0.id,p1_0.id,p1_0.best_status,p1_0.created_at,p1_0.description,p1_0.description_image,p1_0.name,p1_0.new_status,p1_0.price,p1_0.sold_out_status,p1_0.thumbnail_image,p1_0.updated_at,ps1_0.stock_quantity from product_stock_quantity ps1_0 left join product p1_0 on p1_0.id=ps1_0.product_id where ps1_0.product_id=?
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
vagrant up 명령어 실행 중 worker#3 kubelet 오류로 설치 실패
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]안녕하세요, 아래와 같이 kubelet쪽에 문제가 있다고 설치가 안되는데, 해결방법이 궁금합니다 w3-k8s-1.30.0: [kubelet-start] Starting the kubelet w3-k8s-1.30.0: [kubelet-check] Waiting for a healthy kubelet. This can take up to 4m0s w3-k8s-1.30.0: [kubelet-check] The kubelet is healthy after 1.504250225s w3-k8s-1.30.0: [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap w3-k8s-1.30.0: w3-k8s-1.30.0: Unfortunately, an error has occurred: w3-k8s-1.30.0: context deadline exceeded w3-k8s-1.30.0: w3-k8s-1.30.0: This error is likely caused by: w3-k8s-1.30.0: - The kubelet is not running w3-k8s-1.30.0: - The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled) w3-k8s-1.30.0: w3-k8s-1.30.0: If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands: w3-k8s-1.30.0: - 'systemctl status kubelet' w3-k8s-1.30.0: - 'journalctl -xeu kubelet' w3-k8s-1.30.0: error execution phase kubelet-start: context deadline exceeded w3-k8s-1.30.0: To see the stack trace of this error execute with --v=5 or higherThe SSH command responded with a non-zero exit status. Vagrantassumes that this means the command failed. The output for this commandshould be in the log above. Please read the output to determine whatwent wrong.1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. (https://www.inflearn.com/questions/992407/comment/281901)[질문 하기]
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
구버전
안녕하세요!flutter을 처음 배우는 학생입니다.8월 31일 이후에 구버전 강의를 삭제하신다고 하셨는데 혹시 어떤 강의들을 삭제하는 것인지 알 수 있을까요?일부 강의가 삭제되는 것이라면 어떤 강의들이 삭제되는 것인지 궁금합니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
윈도우11
안녕하세요~ 크롤링 관심있어서 강의 수강중인데 현재 제 노트북이 win10인데 드라이버등등 이유로 win11로 가려고 해요.그럴경우 이 강의내용이 맞지 않을 수도 있을까요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
자바 업캐스팅, 재귀함수 질문드립니다.
JAVA언어 기출문제의 변형, 업캐스팅 + 재귀함수(16분)class Child extends Parent{public in sumValues(int n){if(n <= 0){return 0;}if(n%2 == 0){return n + sumValues(n-2);}else{return sumValues(n-1);}위 코드에서, 짝수일 때 return n+sumValues(n-2),홀수일 때 sumValues(n-1)을 실행하게 되는데,9 = sumValues(8) // 188 = 8 + sumValues(6) // 187 = sumValues(6) // 106 = 6 + sumValues(4) // 105 = sumValues(4) // 64 = 4 + sumValues(2) // 63 = sumValues(2) // 22 = 2 + sumValues(0) // 21 = sumValues(0) // 00 = 0 // 0으로, sum : 18로 생각을 했는데, 강의를 아무리 봐도 어떻게 20이 계산되는지 이해가 안 됩니다..
-
해결됨개발자를 위한 쉬운 도커
정리
안녕하세요 선생님. 공부하면서 블로그에 정리를 하려는데, https://www.inflearn.com/course/개발자를-위한-쉬운-도커?inst=f4872931&utm_source=instructor&utm_medium=referral&utm_campaign=inflearn_트래픽_promotion-link이 출처를 남긴다면, 괜찮을까요? 다른 질문에서 가능하다고 되어 있는데, 그래도 한번더 여쭤보고 작성하는게 좋을 것 같아 연락드립니다.양질의 강의 감사드립니다!
-
해결됨[플러터플로우] 실전! 앱 출시를 위한 끝장 노하우!
애플 앱스토어나 구글 플레이스토어 배포 관련 문서
안녕하세요 강의 잘 보고 있습니다애플 앱스토어나 구글 플레이스토어 배포 관련 문서를 채워넣는 자료를 올려주셨다고 했는데혹시 어디에서 확인이 가능할까요?감사합니다!
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
책없이 강의듣는중입니다.
저는 책이 없이 강의만을 통해 학습중입니다. 강의 중간중간 코드를 복사해서 오시더라구요 ~ js같은 경우는 따라치는것에 대해 어려운 부분이 있는데 혹시 어쩔 수 없는 부분인 걸까요 ?
-
해결됨자바 9부터 자바 21까지
2강 주요 키워드 정리 질문이 있습니다.
강사님 항상 감사합니다.다름이 아니라 2강 17:52 부분을 보면requires compile 특정 모듈의 컴파일 의존성만 가져온다이렇게 영상이 보여지는데 requires static이 맞는거 겠죠?
-
미해결김영한의 실전 자바 - 중급 2편
shuttle.showinfo를 호출시 실행창 질문
package generic.test.ex3 object UnitPrinter { //제네릭 메서드 fun <T : BioUnit>printerV1(t: Shuttle<T>){ println(t.showInfo()) } fun printerV2(shuttle: Shuttle<out BioUnit>){ println(shuttle.showInfo()) } fun <T : BioUnit>printerV3(t: Shuttle<T>){ val unit = t.out() println("이름: ${unit.name} hp:${unit.hp}") } fun printerV4(shuttle: Shuttle<out BioUnit>){ val unit = shuttle.out() println("이름: ${unit.name} hp:${unit.hp}") } }자바와 코틀린은 100퍼센트 호환이 된다고 해서 코틀린으로 강의를 보고있습니다.강의에선 v1과 v2로 인자로 받은 셔틀에서 unit을 꺼내어 내용을 출력했는데요. 그렇게 안하고 셔틀에서 바로showinfo를 호출해서 실행창에name : 마린 hp : 40kotlin.Unitname : 마린 hp : 40kotlin.Unit이렇게 줄바꿈으로 kotlin.Unit이라는게 자동적으로 붙는데 왜이런건가요 . 강의에서처럼 unit을꺼내어서 출력하면 안붙습니다.