묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
Spring 입문편과 기본편 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 Spring 을 기본부터 확실하게 공부하고 싶은 학생입니다. 현재 김영한 선생님의 강의 중 제가 수강할 만한 레벨의 강의는 입문편, 기본편이 있는 것으로 확인됩니다. 물론 입문편 ~ 기본편을 듣는 것이 좋겠지만 혹시 입문편을 생략하고 기본편부터 들어도 진행하는데 전혀 무리가 없을까요? 만약 전혀 무리가 없고, 입문편에 해당하는 내용이 기본편에 모두 담겨있다면 기본편부터 수강하고 싶은 마음에 질문드립니다.
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
카카오를 이용한 로그아웃
카카오로 로그인 후 로그아웃 버튼을 누른 다음 다시 카카오톡으로 로그인 시도시 자동으로 로그인 되는 것 말고 다시 카카오계정과 비번을 치고 로그인 하고 싶은데 어떻게 하면 가능할 까요? 카카오 디벨로퍼 들어가서 계속 로그아웃을 해주어야지만 가능 한걸까요 ?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
쿠키, 세션 질문있습니다
1. 제가 이해한게 맞나요? HttpSession에 setAttribute해서 세션값을 쿠키에 넘기는 방식을 사용하면 쿠키에 Name은 JSESSIONID로 넘어가고 Value에 uuid가 넘어간다. 그리고 그 value값과 addAttribute한 로그인 멤버에대한 매핑정보는 서버에 저장되어 getSession()을 사용하면 세션에 담긴 값을 알 수 있다. 이게 맞을까요? 2. 그리고 만약 맞다면, 혹은 틀리더라도 궁금한점 쿠키는 HTTP 헤더에 담기지만 쿠키의 uuid가 아닌 의미있는 정보값은 서버에만 있는데, 프론트에서 그걸 어떻게 처리할 수 있는건가요? 강의의 경우에는 타임리프를 서버쪽에서 렌더링하니까, getSession으로 정보를 꺼내고 그걸 model에 담아 화면에 넘길 수 있는데 프론트와 백을 따로 작업하는 경우에는 어떻게한는지 궁금합니다! 예를들어 백은 스프링 부트, 프론트는 리액트로 작업하는 개발자 둘이 협업한다고 했을 때도 이러한 HttpSession 방식으로 로그인 구현이 가능한가요?
-
미해결[유니티6] 따라하면서 배우는 하이퍼캐주얼게임 시리즈 01
궁금합니다.
궁금한 점이 있습니다. 고박사님^^ 만약 Level을 100개까지 한다면 지금처럼 Scene복사해서 하는게 일반적(실무)인가요? 아님 현재는 강의 내용이라 단순하게 Scene으로 복사해서 진행한걸까요? 결론은 반복적인 씬구성이라면, 포퍼먼스/리소스관리를 위해 가능한 씬을 늘리는것보다 프로그래밍으로 씬을 재사용하는게 낫은건가요? p.s : Scene을 복사하면 리소스가 증가할것 같은데? 유니티 프레임워크 자체에서 씬 내부에 중복되는 리소스 처리를 최적화 해주는건지?
-
미해결프로그래밍 시작하기 : 웹 입문 (Inflearn Original)
버튼 자바스크립트 오류
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화window.addEventListener('load', function() { var carousels = document.getElementsByClassName('carousel'); //케러셀 이벤트를 등록하는 로직 for(var i = 0; i < carousels.length; i++) { addEventToCarousel(carousels[i]); // 현재해당하는 carousels 가져옴(배열) } }); function addEventToCarousel(carouselElem) { var ulElem = carouselElem.querySelector('ul'); var liElems = ulElem.querySelectorAll('li'); //너비값 조정 var liWidth = liElems[0].clientWidth; var adjustedWidth = liElems.length * liWidth; ulElem.style.width = adjustedWidth + 'px'; //슬라이더 버튼 이벤트 등록 var slideButtons = carouselElem.querySelectorAll('.slide'); //슬라이드 버튼 갯수만큼 반복 for (var i=0; i < slideButtons.length; i++) { slideButtons[i].addEventListener('click', createListenerSlide(carouselElem)); } } //클로저로 해서 캐러셀을 이벤트가 호출될때 바뀌지 않고 사용하기 위해 function createListenerSlide(carouselElem) { return function(event) { //event는 매개변수고 이 블록안에서 사용가능 var clickedButton = event.currentTarget;//현재 클릭한 버튼 가져오기 // 값 가져오기 var liElems = carouselElem.querySelectorAll('li'); var liCount = liElems.length; var currentIndex = carouselElem.attributes.data.value; //currentIndex : 현재 보고있는 이미지의 순번 //carouselElem의 모든 속성을 가져오고 데이터를 가져오겠다 //슬라이드 버튼 체크 right값을 포함하는지 //-1해주는이유는 다섯개일경우 마지막은 4가 마지막이기때문 if(clickedButton.className.includes('right') && currentIndex < liCount - 1) { currentIndex ++; scrollDiv(carouselElem, currentIndex); //위에서 3이라면 ++되므로 4번의 위치로 스크롤을 조정해주는 역할 } else if(clickedButton.className.includes('left') && currentIndex > 0) { currentIndex --; //0이면 왼쪽으로 못넘김 scrollDiv(carouselElem, currentIndex); } //인디케이터 업데이트 //슬라이드 버튼 보여줌 여부 업데이트 //새롭게 보여지는 이미지 인덱스 값을 현재 data 값으로 업데이트 carouselElem.attributes.data.value = currentIndex; } } function scrollDiv(carouselElem, nextIndex) { var scrollable = carouselElem.querySelector('div'); var liWidth = scrollable.clientWidth; var newLeft = liWidth * nextIndex; scrollable.scrollTo({left: newLeft, behavior: 'smooth'}); } 버튼을 눌러도 사진이 오른쪽으로 가지 않는데 어느 코드에서 에러가 난걸까요?????
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
똑같이 따라했는데도 안되네요
도대체 왜 안될까요... 코드 다 똑같은데, BTS화면에서 트와이스 화면으로 안넘어가네요
-
미해결15일간의 빅데이터 파일럿 프로젝트
hive로 파일을 만들고 다시 hdfs에 넣는 과정에 대해 궁금합니다.
안녕하세요~ 좋은 강의 너무 잘 듣고 있습니다. 다 이해하진 못한 상태라 기본적인 질문이어도 이해해주시길 바랍니다. 처음 과정 중에 hive로 데이터를 불러와서 local에 저장 후 이를 다시 hdfs 에 넣는 hive->local->hdfs 부분에 대해 궁금합니다. hive -> hdfs로 넣으면 문제가 있나요?? local에 만든 후 다시 hdfs로 넣는 과정이 어째서 필요한지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Controller 내 함수명의 의미
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 선생님, 수업 재밌게 듣고 있습니다. MemberController를 보면 클래스 내부 메서드의 이름을 짓는 규칙이 따로 없는 것 같아서, 다음과 같이 두 개의 질문을 드립니다: 1/ MemberController의 경우 메서드 이름이 createForm, create 등으로 돼 있는데, 이 메서드명은 개발자가 마음대로 정해도 상관이 없는 것이 맞나요? 2/ 스프링 프로젝트 내에서 다른 클래스나 프로젝트 파일이 이 메서드들을 활용하는 경우가 나중에 발생하나요? 감사합니다.
-
미해결Java TPC (생각하고, 표현하고, 코딩하고)
public static void hap1(int[]x){
강사님 안녕하세요 질문이있습니다.25분쯤에 public static void hap1(int[]x){ int sum = 0; <------여기부분에서 sum을 0으로 초기화 하는이유가 뭔지알수있을까요??
-
해결됨그림으로 쉽게 배우는 운영체제
자원할당
교착상태 등등에서 나오는 자원할당문제에서 자원이라는 것은 메모리를 말하는걸까요 1 Cpu 2 메모리 3 저장 4 입출력장치를 모두 말하는걸까요 (혹은 cpu는 해당 없나요?)
-
미해결Kotlin으로 개발하는 Spring Boot Web MVC
추가적인 강의 계획은 없으신건가요?
혹시 kotlin spring 관련 추가적인 강의 계획은 없으신가요?
-
미해결스프링 시큐리티
질문
선생님 아래 코드에서 modelmapper 를 활용해주셨는데 혹시 html에서 name ? 속성으로 넘어오는 값들에 대해서 dto의 필드 이름과 매치하면 자동으로 account 에 매칭되고 그냥 mapper 를 쓸 필요없이 아래문장만 있으면 될거같은데 굳이 mapper 를 통해서 account 객체를 빼준 이유가 있을까요? account.setPassword(passwordEncoder.encode(account.getPassword()));
-
미해결스프링부트 시큐리티 & JWT 강의
oAuth 회원가입 할 때 외부 정보를 더 받아오려면 어떻게 해야 하나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님. 좋은 강의 정말 잘 들었습니다. 저는 개인 프로젝트를 하기 위해 이 강의를 수강했는데요. 강사님이 강의에서 쇼핑몰을 예시로 들어 언급하신 것 처럼, 구글이나 카카오 로그인에서 제공해주는 정보 이외에도 휴대폰번호나 주소와 같은 옵션도 회원가입 시 받아오고 싶은데요. 이러한 경우에는 어떻게 해야하나 싶어 질문 남겨봅니다! api 를 따로 사용해야 할까요?
-
미해결스프링 시큐리티
Filter의 처리 순서에 관한 질문
안녕하세요. 학습내용을 복습하던중 질문이 있습니다. <p>DelegatingFilterProxy</p> 와 <p>FilterChainProxy</p> 의 요청 처리 흐름을 <p>DispatcherServlet</p>을 포함하여 설명하는 그림에서 질문이 있습니다. <p>FilterChainProxy</p>가 직접 <p>DispatcherServlet</p>에 요청을 하는 것이 맞나요? 제 생각에는 첨부한 그림과 같은 실행 순서가 되야 할 것 같습니다. <p>FilterChainProxy</p>가 인증 인가 처리를 마친 후 직접 <p>DispatcherServlet</p>에 요청을 날리게 되면 <p>Servlet Container</p>의 필터 Filter 체인 실행에 문제가 있을 것 같습니다.
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
node app.js 실행 오류?
수강생분들의 질문을 기다립니다! - 에러에 해당하는 질문은 "에러가 발생한 상황에 대한 충분한 설명", "에러 메세지", "에러가 난 코드 스크린샷"을 함께 첨부해주세요. - 언어에 해당하는 질문은 구글링 및 서치 후에 구체적으로 질문해주시면 좋습니다. - 간단한 진로 및 방향성에 대한 질문은 메일로 보내주세요.- 패키지 버전 관리은 실무 환경과 트랜드에 맞추어 강의를 업데이트 하고 있습니다. 강의를 그대로 따라갔는데 에러가 발생한다면 패키지 버전을 강의에서 사용하는 버전과 동일하게 맞춰주세요!- 강의 노트, QA 목록, 공지 사항을 먼저 확인해주세요.- 논리적이고 구체적인 질문은 학습 효과를 올립니다 :) 제가 app.js 파일을 만들고 console.log("hello world"); 라고 입력한뒤 터미널에 node app.js라고 입력하여 hello world출력을 확인하였습니다. 그후에 nodemon app.js를 실행하여 실시간으로 바뀌는걸 확인하려고 했더니 아무리 바꿔도 변함을 표현하지 않습니다 또한 코드를 수정한뒤에 다시 node app.js를 실행하여도 바뀌기전 결과만 계속 나올뿐 바뀐 결과를 출력하지 않습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
요즘도 이런 템플릿엔진을 많이 사용하나요?
언젠가부터 대부분 기업들이 리액트, 뷰 같은 프론트엔드 프레임워크를 이용하면서 백엔드는 대부분 rest api 기반의 json을 던져주는 코드를 주로 만드는걸로 알고있는데요! 현재 강의에서 보여주는 템플릿 엔진을 이용한 타임리프 같은 서버사이드에서 html을 처리하는 것들을 아직도 많이 사용하는지 궁금합니다.
-
미해결객체 지향 프로그래밍 입문
범균님 안녕하세요 강의 수강중 궁금한점이 있어 질문 남겨 봅니다.
강의를 수강 중 '모듈'이라는 단어가 나와서 정의를 좀 찾아봤는데요.정의가 와닿지 않아서 어떻게 해석해야 할지 궁금합니다.일반적인 애플리케이션에서 하나의 클래스도 모듈이 될 수 있는 건가요?모듈을 정하는 기준이 궁금합니다. https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%93%88_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)#cite_note-1
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
int j = 0
안녕하세요. 강의를 듣던 중 궁금한 점이 생겨 질문을 남깁니다. int j =0 을 for문 조건에 초기화 하지 않고 for문 밖에 초기화를 하면 안쪽 for문이 끝나고 다시 바깥쪽 for문을 돌 때에 마지막 j의 값이 그대로 넘어가게 되는 것 맞나요?
-
미해결스프링 핵심 원리 - 기본편
예상과 같게 AppConfig class가 출력이 됩니다..??
안녕하세요..! 강의내용에 따르면 class hello.core.AppConfig 이렇게 출력이 안나와야하는데,, 저는 예상과 같게 이렇게 출력이 됩니다.. 뭐가 문제일까요..????????? 코드는 제가 친것을 지우고 강의자료 복사붙여넣기 한 결과입니다.. package hello.core.singleton; import hello.core.AppConfig;import hello.core.member.MemberRepository;import hello.core.member.MemberServiceImpl;import hello.core.order.OrderServiceImpl;import org.junit.jupiter.api.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import static org.assertj.core.api.Assertions.*;public class ConfigurationSingletonTest { @Test void configurationTest() { ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); MemberServiceImpl memberService = ac.getBean("memberService", MemberServiceImpl.class); OrderServiceImpl orderService = ac.getBean("orderService", OrderServiceImpl.class); MemberRepository memberRepository = ac.getBean("memberRepository", MemberRepository.class); //모두 같은 인스턴스를 참고하고 있다. System.out.println("memberService -> memberRepository = " + memberService.getMemberRepository()); System.out.println("orderService -> memberRepository = " + orderService.getMemberRepository()); System.out.println("memberRepository = " + memberRepository); //모두 같은 인스턴스를 참고하고 있다. assertThat(memberService.getMemberRepository()).isSameAs(memberRepository); assertThat(orderService.getMemberRepository()).isSameAs(memberRepository); } @Test void configurationDeep() { ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); //AppConfig도 스프링 빈으로 등록된다. AppConfig bean = ac.getBean(AppConfig.class); System.out.println("bean = " + bean.getClass()); //출력: bean = class hello.core.AppConfig$$EnhancerBySpringCGLIB$$bd479d70 }}
-
미해결스프링 핵심 원리 - 기본편
저는 memoryRepository가 세개가 다 다릅니다.. ㅠㅠ
안녕하세요.! 원래 강의대로라면 memberRepository 인스턴스는 모두 같은 인스턴스가 공유되어 사용되기때문에 아래 테스트 코드가 오류가 나지 않아야하는데, 아래와 같이 인스턴스가 스프링빈에 의해서 공유되지 않고, 하나하나 각각 따로 인스턴스가 설정된 것으로 보입니다. 왜이러는걸까요,,?? -> 오류내용 ConfigurationSingleTonTest.java코드 package hello.core.singleton;import hello.core.AppConfig;import hello.core.member.MemberRepository;import hello.core.member.MemberServiceImpl;import hello.core.order.OrderServiceImpl;import org.junit.jupiter.api.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import static org.assertj.core.api.Assertions.*;public class ConfigurationSingletonTest { @Test void configurationTest() { ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); MemberServiceImpl memberService = ac.getBean("memberService", MemberServiceImpl.class); OrderServiceImpl orderService = ac.getBean("orderService", OrderServiceImpl.class); MemberRepository memberRepository = ac.getBean("memberRepository", MemberRepository.class); //모두 같은 인스턴스를 참고하고 있다. System.out.println("memberService -> memberRepository = " + memberService.getMemberRepository()); System.out.println("orderService -> memberRepository = " + orderService.getMemberRepository()); System.out.println("memberRepository = " + memberRepository); //모두 같은 인스턴스를 참고하고 있다. assertThat(memberService.getMemberRepository()).isSameAs(memberRepository); assertThat(orderService.getMemberRepository()).isSameAs(memberRepository); }} OrderServiceImple내용 package hello.core.order;import hello.core.discount.DiscountPolicy;import hello.core.discount.FixDiscountPolicy;import hello.core.member.Member;import hello.core.member.MemberRepository;import hello.core.member.MemoryMemberRepository;public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository ; private final DiscountPolicy discountPolicy; public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } @Override //주문을 만드는 class public Order createOrder(Long memberId, String itemName, int itemPrice) { //맴버를 찾고 Member member = memberRepository.findById(memberId); //맴버를 넘기고 (discount얼마나 해야하는지) //단일 체계 원칙을 잘 지킨것이다. //할인쪽은 order에서 관여하지 않고 , 걍 discount class를 이용하여 할인값을 반환만 받음 //할인쪽에 문제가 생기면 할인쪽만 고치며 돼서 유지보수 쉽다. (주문까지 고칠 필요는 없다) int discountPrice = discountPolicy.discount(member,itemPrice); // public Order(Long memberId, String itemName, int itemPrice, int discountPrice) return new Order(memberId, itemName, itemPrice, discountPrice); } //테스트용도 public MemberRepository getMemberRepository() { return memberRepository; }}MemberServiceImpl내용 package hello.core.member;//memberService의 구현체이다.public class MemberServiceImpl implements MemberService{ //추상화에만 의존한다 private final MemberRepository memberRepository ; //생성자를 통해서, Repository객체 주입 public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } @Override public void join(Member member) { memberRepository.save(member); } @Override public Member findMember(Long memberId) { return memberRepository.findById(memberId); } //테스트 용도 public MemberRepository getMemberRepository() { return memberRepository; }}App.config내용 package hello.core;import hello.core.discount.DiscountPolicy;import hello.core.discount.FixDiscountPolicy;import hello.core.discount.RateDiscountPolicy;import hello.core.member.MemberRepository;import hello.core.member.MemberService;import hello.core.member.MemberServiceImpl;import hello.core.member.MemoryMemberRepository;import hello.core.order.OrderService;import hello.core.order.OrderServiceImpl;import org.springframework.context.annotation.Bean;public class AppConfig { //단축키 : ctrl + alt + m : 중복제거 @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { return new OrderServiceImpl( memberRepository(), discountPolicy()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public DiscountPolicy discountPolicy() { //여기만 바꾸면 객체들 가다 갈아끼울 수 있다. //단축키 ctrl + R : 이전에 실행했던거 실행해준다. return new RateDiscountPolicy(); }}이해가 가지않습니다..ㅠㅠ