묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결리눅스 입문 - 개념으로 탄탄히!!
광학 드라이브가 자꾸 빠져있거나 다른걸로 바뀌어져 있어요.
컴퓨터 재부팅하면 광학 드라이브가 비어있음이나 VBoxGuestAdditions.iso로 변경되어있어요. 그래서 우분투로 바꾸고 다시 설치하는 작업을 매일 다시 진행합니다. 해결 방법좀 부탁드려요...
-
미해결진짜 현업에서 쓰이는 직장인의 실무 엑셀 - 파워쿼리 Advanced
Count추가 방법 문의
문의 드립니다. table 데이터가 아래와 같습니다. 알파벳 컬럼 옆에 각 알파벳 데이터 갯수를 추가하고 싶습니다. 함수를 어떻게 사용해야 하는지요? 알파벳 갯수 A 3 B 2 C 1 A 3 A 3 B 2 Z 1
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
선생님 코드를 똑같이 따라쳤는데 왜 이런 오류가 뜨는 걸까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. cannot reslove method가 뜨면서 계속 오류라고 뜨는데 왜 저는 attributeValue가 저절로 생성이 안되는지 모르겠습니다 ㅠ
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
ManyToOne에서 @BatchSize가 동작하지 않습니다 ㅠㅠ
안녕하세요. 항상 좋은 강의, 답변 주셔서 감사합니다. 이번에 여쭤보고 싶은 것은 @BatchSize가 동작하지 않는 부분에 대해서입니다. <Order의 OrderItems> BatchSize 100 설정 @BatchSize(size = 100)@OneToMany(mappedBy = "order", fetch = FetchType.LAZY, cascade = CascadeType.ALL) // order가 만들어지면 orderItem이 만들어지기 때문에 영속성 전이한다.private List<OrderItem> orderItems = new ArrayList<>(); <OrderItems의 Item> BatchSize100 설정 @BatchSize(size = 100)@ManyToOne(fetch = FetchType.LAZY)@JoinColumn(name = "item_id")private Item item; 위와 같이 설정을 했는데, 실제로 배치가 적용되는 것은 아래 쿼리를 확인하시면 아시겠지만 OrderItems에만 적용이 됩니다. item는 배치 사이즈가 적용이 되지 않아 총 4번이 나가게 되고, OrderItem은 배치 사이즈가 적용되어 1번의 쿼리만 나갑니다. 다른 엔티티에도 적용해보니 정황상 ManyToOne, OneToOne 관계에서 배치 사이즈가 안 먹는거 같은데.. 혹시 item 같은 ManyToOne에는 어떻게 배치 사이즈를 적용하는지 알려주시면 감사하겠습니다 참고 :글로벌 배치 사이즈는 잘 먹습니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
어려운 이벤트
젤 어려운 부분인것 같습니다. ㅠ 1. 피호출자 callee 2. 게임에서의 Manager 3. 이벤트 Publisher 이것들이 다 같은 위치에 있는 개념으로 정리하면 될까요 마지막으로 델리게이트는 type이라고 하셨는데 이벤트를 어떻게 이해해야 할까요. 비슷하게 메소드를 담는 그릇일까요
-
미해결[유니티6] 따라하면서 배우는 하이퍼캐주얼게임 시리즈 01
Pin 프리펩 전체를 "Pin" 태그로 설정하면 Pin을 던지자마자 게임오버가 됩니다.
강의 1분 15초 부근에 설명하신 것처럼 Pin 프리펩 전체를 "Pin" 태그로 설정하면 Pin을 던지자마자 게임오버가 됩니다. (Pin과 Pin이 만나지 않아도 게임오버됨) 제 경우엔 Pin 프리펩의 Square 오브젝트는 "Pin" 태그로 설정하지 않아야 게임이 정상적으로 진행됩니다. 고박사님이 알려주신대로 따라 했는데 제가 무엇을 놓쳤는지 모르겠습니다. 어디가 잘못 된 걸까요?
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
코드에는 문제가 없는 거 같은데 제이쿼리가 동작이안됩니다
(사진)
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
질문이 있습니다
@WebServlet에서 name="" 이렇게 해도 정상으로 작동이 되는데[ 이름이 주는 이유가 있을까요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
진짜진짜 마지막 부분에서 오류 발생
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 해야되는 모든 것들을 다 따라하고 이제 설레는 마음으로 Vivado & 를 쳤는데 실행은 안되고 오류가 발생했습니다 ㅠㅠㅠㅠ
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
조인전략의 문제점 (EAGER Fetch)
안녕하세요..! 영한님 강의 즐겁게 듣고 있는 학생입니다..! @Inheritance 로 조인전략 채택 시, 슈퍼타입을 조회하여도 EAGER Fetch가 적용되고 서브타입을 조회하여도 EAGER Fetch가 적용되어 Lazy Fetch를 적용할 수 없는가 싶어 구글링을 5시간정도 하다가 해당 글을 발견하였습니다. https://sodocumentation.net/hibernate/topic/2326/performance-tuning 위 포스팅처럼 조인전략 물리모델에서 LAZY Fetch 를 적용하려면 @Inheritance의 도움을 받지 않고 @OneToOne 등으로 직접 모델링하는 수 밖에 없을까요...? 강의에서 실무에서 영한 선생님도 조인전략을 많이 사용하신다고 말씀하셨는데, @Inheritance 어노테이션으로 구현하시는지, 해당 어노테이션으로 구현하신다면 EAGER Fetch는 어떻게 핸들링하시는지 궁금합니다..!
-
미해결스프링부트 시큐리티 & JWT 강의
BCryptPasswordEncoder 관련 Error
package com.junyharang.jwtstudy.config.jwt; import com.fasterxml.jackson.databind.ObjectMapper;import com.junyharang.jwtstudy.auth.PrincipalDetails;import com.junyharang.jwtstudy.model.Member;import lombok.RequiredArgsConstructor;import org.springframework.security.authentication.AuthenticationManager;import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;import org.springframework.security.core.Authentication;import org.springframework.security.core.AuthenticationException;import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;// 스프링 시큐리티에 UsernamePasswordAuthenticationFilter가 있다.// /login이 요청 오면 username, password를 전송하면 (Post로)// UsernamePasswordAuthenticationFilter가 동작한다.// 현재는 SecurityConfig에서 FormLogin을 disable을 시켜서 동작하지 않는다.@RequiredArgsConstructorpublic class JwtAuthenticationFilter extends UsernamePasswordAuthenticationFilter { private final AuthenticationManager authenticationManager; @Override // /login 요청이 들어오면 로그인 시도를 위해 실행되는 Method public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException { System.out.println("JwtAuthenticationFilter : 로그인 시도 중 입니다!"); // 1. username, password를 받는다. try {// BufferedReader reader = request.getReader();//// String input = null;//// while ((input = reader.readLine()) != null) {// System.out.println(input);// } // while 문 끝 // JSON으로 전달된 값을 Parsing 할수 있게 해주는 객체 생성 ObjectMapper om = new ObjectMapper(); Member member = om.readValue(request.getInputStream(), Member.class); System.out.println(member); // Token 생성(회원의 이름과 Password를 통해) UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(member.getUsername(), member.getPassword()); // PrincipalDetailsService의 loadUserByUsername()이 실행 된다. // authenticationManager에 Token을 넣어 호출한다. // authentication 변수에는 Login 정보가 담긴다. Authentication authentication = authenticationManager.authenticate(authenticationToken); // authentication 객체가 Session 영역에 저장된다. PrincipalDetails principal = (PrincipalDetails) authentication.getPrincipal(); // 출력이 된다면 Login이 되었다는 의미 System.out.println(principal.getMember().getUsername()); return authentication; } catch (IOException e) { e.printStackTrace(); } // try-cache 문 끝 System.out.println("==========================================="); // 2. authenticationManager로 정상 인지 로그인 시도하면 PrincipalDetailsService가 호출된다. // 해당 Class안에 loadUserByUsername()가 자동 호출 // 3. PrincipalDetails를 Session에 담는다. // Session에 해당 내용을 담는 이유는 담지 않으면 권한에 대한 처리를 할 수 없기 때문이다. // 4. JWT를 만들어서 응답해 준다. return null; } // attemptAuthentication(HttpServletRequest request, HttpServletResponse response) 끝 } // class 끝 안녕하세요? 25강에 해당 부분을 하다가 DB에 회원값이 들어가 있는 걸 보고, 회원가입 로직이 누락 되었다는 부분을 찾기 위해 Controller를 보고 아래 내용을 추가 하였습니다. @PostMapping("join") public String join(@RequestBody Member member) { member.setPassword(bCryptPasswordEncoder.encode(member.getPassword())); member.setRolse("ROLE_USER"); memberRepository.save(member); return "회원가입완료";} 그리고 나서 SecurityConfig에 아래 내용을 추가 하였구요. @Autowired private MemberRepository memberRepository;@Autowired private CorsConfig corsConfig;@Bean public PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder();} // passwordEncoder() 끝private final CorsFilter corsFilter; 근데 아래와 같은 Error가 발생 합니다. Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2022-01-19 00:25:02.184 ERROR 17752 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Parameter 1 of constructor in com.junyharang.jwtstudy.controller.RestAPIController required a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' that could not be found. Action: Consider defining a bean of type 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder' in your configuration.
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
upload file의 타입지정은 어떻게 해야 할까요?
upload file 의 타입은 어떻게 지정하는게 좋을까요? 강의 정말 잘 듣고 있습니다.!! 감사합니다
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃 권한 부탁드립니다 !
인프런 아이디 : i4way.lje 인프런 이메일 : i4way.lje@gmail.com 깃헙 아이디 : i4way.lje@gmail.com 깃헙 Username : imjaeun 감사합니다 !
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
1. 세션 구현체(bean)이 Map을 가지는데, 이 부분은 stateful 한 구현이 아닌가요? 2. jsessionId로 세션 저장소에 접근 가능한가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용] 안녕하세요. 세션에 대한 질문이지만 다소 장황한 질문이 될 것 같습니다. 양해 부탁드립니다. 저는 중복로그인 방지 혹은 블락된 회원의 로그아웃처리를 위한 부분을 구현하고자 하였습니다. 중복 로그인을 방지하기 위해서는 세션을 두 개 가진 회원에 대하여 하나를 삭제해야 하며, 블락된 회원의 경우 즉각적으로 로그아웃을 시키려면 해당 회원의 세션을 서버에서 삭제해야 합니다. 이러한 고민을 통해 코드를 구현하는 과정에서 몇 가지 의문이 생겼습니다. 1. 세션 구현체(bean)이 Map을 가지는데, 이 부분은 Stateful 한 구현이 아닌가요? 김영한 선생님이 구현한 SessionManager를 보면, 회원들의 데이터를 `private Map<string, object> sessionStore = new ConcurrentHashMap<>();` 의 형태로 구현하였습니다. 저는 bean과 스프링 컨테이너를 생성함에 있어서 상태값이 존재하면 안된다는 것을 일종의 금과옥조로 여기며 구현해왔습니다. 만약 상태값이 필요로 하다면 final 을 사용했습니다. 가능하면 properties, enum을 사용하는 등 stateless 를 지키기 위하여 노력했습니다. 그런데 생각해보면, 필드에 map을 사용하는 것이, 어떤 스레드의 동작 결과로서 데이터가 남아서, 다른 스레드의 로직에 영향을 미칠 일은 없을 것 같습니다. 그렇게 생각하니, 로직만 잘 짠다면 빈을 설계할 때 항상 stateless 하게 설계할 필요가 없겠다는 생각이 듭니다. stateful bean 의 구현과 관련하여 제 나름의 정리가 필요했습니다. 그래서 자료를 찾기 위해 노력했지만, 검색 능력이 딸려서인지 관련한 블로그나 자료를 찾을 수 없었습니다. 그래서 이렇게 질문을 올립니다. 혹시 관련하여 현업에서 빈을 구현할 때, stateful 한 구현을 하는지, 만약 한다면 어느 수준과 어떤 규칙으로 구현하는지 궁금합니다. 만약 관련한 좋은 자료가 있다면 공유 부탁드려도 되는지 궁금합니다. 2. jsessionId로 세션 저장소에 접근 가능한가요? 특정 회원을 블락하고, 블락한 회원의 세션을 종료시킨다고 하면, 가장 좋은 방법은 톰캣에 있는 세션저장소의 세션을 즉각적으로 삭제하는 것이라 생각합니다. 모든 세션에는 jsessionId가 부여됩니다. 저는 세션저장소의 값을 jsessionId를 key로 하여 꺼내고 조작할 수 있는 방법이 있을 것이라 생각했고, 그 방법을 찾기 위하여 노력했습니다. 하지만 실패하고 말았습니다ㅠ. 세션 저장소에서 세션을 바로 삭제할 수 없기 때문에, 해당 세션을 가진 클라이언트가 접근할 때까지 기다리는 방법을 선택할 수밖에 없었습니다. 어드민이 특정 회원을 블락한 경우, 해당 회원의 데이터도 변경하고 동시에 DB에 블락회원리스트를 만들어 삽입합니다. 그리고 모든 회원이 웹 어플리케이션에 접근할 때, 해당 리스트에 자신이 있는지를 확인하였습니다(그 내용은 아래의 소스와 같습니다). 블락된 회원이 세션이 있는 상태로 웹 어플리케이션에 접근하면, 그때 세션을 조작하는 방식입니다. 회원 정보와 관련한 전체 테이블을 조회하는 것보다는, 블락된 회원 리스트를 조회하는 것이 그나마 리소스를 덜 쓴다고 생각하지만, 이것 또한 많은 리소스를 쓴다고 생각합니다. 그래서 다시금 질문을 드리자면, 세션 저장소에 jsessionId를 가지고 직접 조작하는 방법이 없을까요? 회원이 로그인을 하면 로그인시 사용한 jsessionId를 수집합니다. 해당 회원을 블락할 경우, 해당 jsessionId를 가지고 바로 session.invalidate()를 하면 제일 빠르고 적은 리소스를 사용할 것 같습니다. 만약 그러한 방법을 사용하지 못한다면, 보통 어떤 식으로 현업에서 특정 회원의 세션을 조작하는지 궁금합니다. 감사합니다. @GetMapping("/access") @ResponseBody public String access(HttpServletRequest request, HttpServletResponse response) { blockedUserService.clearExcpectedExpiredSession(sec); // 세션 유효기간을 초과한 웨이팅 리스트는 삭제한다. HttpSession session = request.getSession(); UserEntity userInSession = (UserEntity) session.getAttribute("user"); if(userInSession!=null) { String id = userInSession.getId(); if(blockedUserService.isBlocked(id)) { session.invalidate(); // 세션 삭제 blockedUserService.pop(id); log.info("블락된 회원. 세션 삭제 : {}", session.getId()); return "블락된 회원입니다. 세션이 남아있습니다. 세션이 삭제됩니다."; } } // ... 후략... } 마지막으로 데이타 다루는 기술 관련한 차후 강의는 언제 열리나요? 무척 기대하고 있습니다~~
-
미해결Vue.js + TypeScript 완벽 가이드
안녕하세요 깃헙 접근 권한 부탁드립니다.
안녕하세요. "Vue.js 끝장내기 - 실무에 필요한 모든 것" 강의에 이어 "Vue.js + TypeScript 완벽 가이드" 강의도 재미있게 잘 보고 있습니다. 다음 챕터 수강을 위해 vue-advanced 레포에 대한 권한 요청드립니다. 유익한 강의 항상 감사드립니다. github : chessive@gmail.com
-
미해결스프링 핵심 원리 - 기본편
빈 이름으로 조회
여기에 질문 내용을 남겨주세요. 안녕하세요 김영한 개발자님. 강의를 듣다가 궁금한 점이 생겨서 질문 남겨요. ApplicationContextBasicFindTest에서 빈 이름으로 조회 / 이름 없이 타입만으로 조회 등등의 부분에서 MemberService.class를 사용하는 이유가 있는건가요 아님 OrderService와 같은 클래스도 사용할 수 있는데 임의로 정하신건가요? 빈이 등록되어만 있다면 클래스 상관없이 조회할 수 있는걸까요? 항상 좋은 강의 감사합니다!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
서버에서 build 질문
리눅스 환경 즉 서버에서 npm run build를 할때 대문자를 소문자로 바꿔야하는 이슈가 있다면 처음 개발할때부터 소문자로 파일명을 지어서 프로젝트를 만들면 되는걸까요? 아니면 npm run build를 해놓고 서버에서 git pull만 한다면 상관은 없을 거같은데 빌드 커밋을 해줘야 하는 문제가 있는것 같고 제로초님은 현업에서 1. 파일명을 소문자로 지어서 개발한다, 2. build된 결과물을 push하고 pull 받는다. 어떠한 방식으로 하시는지 궁금합니다.
-
미해결
[수강제한]문의_2022년1월18일
안녕하세요. 수강제한 관련하여, 문의 드립니다. 어제 수강전문의들 달았엇는데, 오늘(01/18) 방문해보니, 수강제한 으로 걸려잇던데, 먼가요???? 과정명: DB 성능고도화 원리 및 SQL 튜닝 ① (SQLP 자격증 대비) 수고하세요
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Selective Search된 Region의 Feature Map 맵핑 질문
안녕하세요. 항상 양질의 강의 감사드립니다. Selective Search된 Region을 Feature Map에 맵핑시킨 뒤 SPP를 진행한다고 하셨는데, 그렇다면 RCNN과 같이 Selective Search로 나온 2000개의 Region을 모두 Feature Map에 맵핑시키는 것인가요??
-
미해결차량 번호판 인식 프로젝트와 TensorFlow로 배우는 딥러닝 영상인식 올인원
후반부 강의자료 부탁드립니다
안녕하세요. 강의 정말 잘 보고 있습니다! 후반부 강의 자료 메일로 보내주시면 감사하겠습니다. 이메일: dsrmj98@naver.com 감사합니다.