inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

함수 부분에서 값이 출력이 안되는 현상

미해결

문과생도, 비전공자도, 누구나 배울 수 있는 파이썬(Python)!

https://inf.run/P1ot 저도 이분과 같이 중간 값이 실행이 안되서 순서를 좀 옮겨봤더니 wow_f(2,3) 밑줄에 다른 명령어가 있으면 값이 출력이 안되더라구요. 명령어가 윗줄에 있을 때는 실행이 됐습니다. 답변해주신 대로 코드를 맨위에서 부터 실행해 봤는데 똑같았습니다. 그래서 print를 혹시나 해서 붙여봤는데 print를 붙일 때만 값이 출력이 됐습니다. 혹시 이런 현상이 무엇 때문인지 알 수 있을까요? 이건 주피터 노트북만의 특성인가요? 좋은 강의 잘 듣고 있습니다!

  • python
댓글 2 좋아요 0 조회수 352

V4 에서 DTO로 조회시 즉시 로딩이 되는 건가요?

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] V4 에서는 fetch join을 사용하지 않으셨는데 조회 쿼리는 한번만 나가는 것을 확인했습니다. dto로 조회를 하면 Lazy로딩으로 세팅해도 즉시 로딩으로 나간다고 이해하면 될까요?

  • spring-boot
  • JPA
  • java
  • spring
김가가가 댓글 1 좋아요 2 조회수 604

AuthenticationManager

해결됨

스프링 시큐리티

public class SecurityConfig extends WebSecurityConfigurerAdapter { ... @Override public AuthenticationManager authenticationManagerBean() throws Exception { return super.authenticationManagerBean(); } @Bean public FilterSecurityInterceptor customFilterSecurityInterceptor() throws Exception { FilterSecurityInterceptor filterSecurityInterceptor = new FilterSecurityInterceptor(); ... filterSecurityInterceptor.setAuthenticationManager(authenticationManagerBean()); return filterSecurityInterceptor; } } 위 방식으로 AuthenticationManager 를 받아 와서 사용하셨는데, authenticationManagerBean() 는 단순히 AuthenticationManager 빈을 반환한다고 이해하면 되나요? WebSecurityConfigurerAdapter 를 사용할 수 없는 5.7 이후 버전에 맞추어 구현한 아래 authenticationManager(HttpSecurity http) 를 사용해도 문제 없을까요? public class SecurityConfig { @Bean public AuthenticationManager authenticationManager(HttpSecurity http) throws Exception { AuthenticationManagerBuilder authenticationManagerBuilder = http.getSharedObject(AuthenticationManagerBuilder.class); authenticationManagerBuilder.authenticationProvider(authenticationProvider); return authenticationManagerBuilder.build(); } @Bean public FilterSecurityInterceptor customFilterSecurityInterceptor(HttpSecurity http) throws Exception { FilterSecurityInterceptor filterSecurityInterceptor = new FilterSecurityInterceptor(); ... filterSecurityInterceptor.setAuthenticationManager(authenticationManager(http)); return filterSecurityInterceptor; } }

  • Spring Security
  • java
  • spring-boot
감채 댓글 1 좋아요 1 조회수 576

프록시 객체에 대해 질문이 잇습니다.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 프록시 강의를 보고 궁금한게 생겨 질문드립니다. 먼저 member객체를 생성하고 member.setUserName("hello");로 이름을 설정하고 persist(member); 하시고 바로 flush를 하셨습니다. 이후에 em.getReference(Member.class, member.getId());를 하시고 getId와 getUserName을 하실때 getId는 이미 getReference를 할때 getId(이미 있는 값이라 하셨습니다)를 사용해서 db에서 조회할 일이 없었다 라고 하셨고 getUserName은 db에서 조회해야한다 라고 하셨었는데 처음에 member객체에서 setUserName으로 값을 넣어주었고 id도 generatedValue로 값이 자동으로 설정되어서 2개의 값이 flush하기 전에 세팅이 되었는데 왜 id는 조회할때 이미 있는값이라 select문이 안나가고 userName은 값이 없어 select문이 나간건지 궁금합니다(설명을 잘 못해서 죄송합니다 ㅜ... 이해가 잘 안간탓에... 답변 해주시면 감사하겠습니다)

  • java
  • JPA
김진현 댓글 1 좋아요 0 조회수 348

docker run -d -p 9999:80 명령어에 대해

미해결

풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]

docker run -d -p 9999:80 -v /home/ubuntu/2021_DEV_HTML:/usr/local/apache2/htdocs --name my_apache httpd 란 명령어에서 1) httpd 의 컨테이너를 실행하는데, 아파치가 9999포트로 해당 경로에 있는 index.html 을 기본 경로로 연결한다 라는 뜻으로 이해를 했는데, 80 이란 포트는 어떤 건지 정확히 이해가 되지 않았습니다 ㅠ Host OS 80번 포트 : Apache Container 9999 포트로 서로 연결된다..? 이런 뜻인가요? OS가 80번 포트에 있을리는 없는 것 같아서 문의를 올립니다. 2) /usr/local/apache2/htdocs 가 어떤 경로인지 잘 이해가 안되는데, 아파치에서 바라보는 경로? 가 정확이 어떤 뜻인지 조금만더 설명해주시면 감사할 것 같습니다. 3) 위 명렁어와 별개의 질문인데, Container 란 한 프로그램을 감싸고 프로그램을 띄우는? 공간이라고 설명해주신 것 같습니다. 한 프로그램만 돌아가는건가요? 아니면 별다른 서버 터미널과 동일하게 수많은 프로그램이 돌아갈 수는 있는 건데 목적에 맞는 프로그램들만 돌리는걸까요?

  • network
  • linux
  • docker
강우석 댓글 1 좋아요 0 조회수 684

BooleanExpression 모든 조건이 null 일 때

미해결

실전! Querydsl

이 경우 where절이 빠짐에 따라 테이블의 모든 데이터가 나오는 건 이해했습니다. 테이블 데이터가 많을 경우 select를 많이 하느라 장애가 난다까진 알겠는데, 그렇다면 이걸 해결할 수 있는 게 페이징뿐인가요? 어떠한 사정이나 목적 때문에 페이징 적용이 되지 않은 쿼리의 경우, 이걸 방지하기 위한 방법이 있는지 궁금합니다.

  • JPA
  • java
박민호 댓글 1 좋아요 0 조회수 597

컬렉션타입이라는게...정확히 뭔가요?

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

컬렉션타입이 었었다 라고 하시는데 혹시 컬렉션타입이라는게 @Embeded 와 관련되어 Address 이런 클래스를 일컫는말인가요?

  • spring
  • JPA
  • java
  • spring-boot
댓글 1 좋아요 0 조회수 462

q class 생성 이유

미해결

실전! Querydsl

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Querydsl 사용 시 Q class 생성 이유가 궁금합니다.

  • JPA
  • java
grayman1234 댓글 1 좋아요 1 조회수 976

Quarydsl 로 no-offset 페이지네이션이 구현가능할까요?

해결됨

실전! Querydsl

[질문 내용] 여기에 질문 내용을 남겨주세요. 김영한님 로드맵중 실전로드맵 패키지 듣고있는데, restapi설계중에 무한스크롤을 구현해야하는 시점에 강의 내용에 Quarydsl로 페이지네이션 강의가 나와서 여쭤봅니다 no-offset 방식으로 페이지네이션이 구현 가능할까요 ? 가능하다면 어떤식으로 구현해야할까요..

  • JPA
  • java
S-J L 댓글 1 좋아요 0 조회수 1482

라우팅 프로토콜 강의에 오타가 있습니다

해결됨

네트워크, 그림으로 이해하자(2022ver.)

안녕하세요, 강의 수강생입니다! 유익한 강의 잘 듣고 있습니다 다름이 아니라 라우티 프로토콜 강의 중 2:00 대에 동적 라우팅 프로토콜 설명하시는 부분중에 OSPF 의 약자가 살짝 어색함 ?! 을 느끼고 검색을해봤는데 Open Shortest Path First(최단 경로 우선 프로토콜) 라고 나오는데 t가 하나 빠진채 오타가 있는거 같아 알려드리고 싶어서 글 남깁니다 ㅎㅎ.. +교안 또한 마찬가지 입니다 ! 좋은 강의 감사합니다!

  • network
  • protocol
Alice Park 댓글 1 좋아요 0 조회수 349

''kaggle'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.' 문제가 발생했을 경우..

미해결

[리뉴얼] 처음하는 파이썬 머신러닝 부트캠프 (쉽게! 실제 캐글 문제 풀며 정리하기) [데이터분석/과학 Part2]

혹시나 수업을 들으면서 위와 같은 문제가 생기셨을 분들을 위해 남깁니다. 시스템 환경 변수 -> 환경 변수 -> 시스템 변수 Path 편집 -> c:\users\<username>\appdata\roaming\python\python39\site-packages path변수에 추가 해당 변수에 경로를 붙어넣기 해도 문제가 해결이 되지 않는 경우 https://github.com/Kaggle/kaggle-api 참고하시면 좋을 것 같아요!

  • kaggle
  • python
  • 머신러닝 배워볼래요?
  • pandas
승우 남 댓글 3 좋아요 0 조회수 809

네트워크 토폴리지 1분 45초

해결됨

네트워크, 그림으로 이해하자(2022ver.)

버스형 토폴리지같은 경우에 하나의 단말장치가 고장이 나더라도 전체 네트워크에는 영향없지 않나요??

  • network
  • protocol
c3392302 댓글 1 좋아요 0 조회수 301

[패킷의 생성과 전달 , 9분 30 초 질문] 소켓은 파일에서 질문입니다.

해결됨

외워서 끝내는 네트워크 핵심이론 - 기초

안녕하세요. 이게 살짝 강의에 내용을 벗어날수도 있는 질문인데요. 소켓 통신시에 그 운영체제가 버퍼(파일) 자원을 어떻게 할당하는지에 대해 좀 더 알고 싶어서요. 검색해보니까 약간 겉핡기같은 내용이 많이 나와서 그런데, 혹시 관련해서 설명해주시거나 참고할만한 링크하나만 추천해주실 수 있나요 ? 그리고 유튜브도 제가 가끔 보는데, 소켓 통신에 대해 말씀하실때 파일, 버퍼, 스트림 이 세 단어를 뭔가 번갈아가면서 쓰셨는거 같은데 각 단어의 차이를 한번 말씀해주시면 감사하겠습니다. 수고하세요 :)

  • network
  • protocol
dankim 댓글 1 좋아요 0 조회수 531

회원 수정 API만들떄 질문

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 수업중에 수정관련 API는 변경 감지를 통한 변경이라고 설명을 해주셨고 Entity는 getter외 나머지는 잘 쓰지 않는다는 말씀을 해주셨습니다. 수업중에는 setter를 통한 변경을 하였는데 실무에서는 어떤 방식으로 하는지 궁금해서 질문 올립니다.

  • java
  • spring
  • JPA
  • spring-boot
wjdghks6086 댓글 1 좋아요 1 조회수 295

9. 증가 수열 만들기(그리디)

미해결

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

질문 드립니다 최대 증가 수열이라면 3 2 10 1 5 4 7 8 9 6 3->6->9 break가 아니라 문자열을 초기화한 후 다시 새로 수열을 쌓아서 기존에 쌓은 수열의 길이와 비교해보아야하지 않나요? n = int(input()) a = list(map(int, input().split())) lt = 0 rt = n - 1 last = 0 string = '' temp = [] while lt <= rt: if a[lt] > last: temp.append((a[lt], 'L')) if a[rt] > last: temp.append((a[rt], 'R')) temp.sort() # 이 부분 질문 if len(temp) == 0: break else: last = temp[0][0] # print(last) tmp = temp[0][1] string += tmp if tmp == "L": lt += 1 else: rt -= 1 temp.clear() print(string) print(len(string))

  • python
  • 코테 준비 같이 해요!
daniel 댓글 1 좋아요 0 조회수 376

ItemServiceTest 아이템 수정 테스트코드

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

@Test public void 아이템_수정() throws Exception { // 아이템을 등록하고 수정하고 조회한대로 되었는지 equal 테스트 // given Item book = new Book(); book.setName("책책"); itemService.saveItem(book); // when Item updateBook = itemService.updateItem(book.getId(), "책1", 1000, 10); Item findOne = itemService.findOne(book.getId()); // then Assertions.assertThat(findOne.getName()).isEqualTo(updateBook.getName()); } 아이템 수정 Test 코드를 작성해보았는데 이렇게 작성하는게 맞을까요?

  • spring
  • spring-boot
  • java
  • 웹앱
  • JPA
댓글 1 좋아요 0 조회수 466

자바 코드로 직접 스프링 빈 등록하기

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

스프링 빈 만드는 법 @Controller @Configuration + @Bean

  • java
  • mvc
  • spring
  • spring-boot
도토리 댓글 1 좋아요 0 조회수 497

낙관적 락 무한루프 도는 이유 공유합니다 !

해결됨

재고시스템으로 알아보는 동시성이슈 해결방법

MySQL을 사용한다면 Isolation Level이 REPEATABLE READ가 기본으로 설정되어 있는데요. 이 때 트랜잭션 안에서 처음 SELECT한 값은 트랜잭션이 끝나기 전까지 몇 번을 다시 SELECT해도 동일한 값으로 읽게 됩니다. 이것 때문에 문제가 발생하는데요... 트랜잭션 안에서 낙관적 락이 진행되도록 구현한 상황에서 쓰레드 100개가 동시에 재고를 감소 시키고, 업데이트에 성공하면 version을 1씩 증가시킨다고 해보겠습니다. DB에는 Stock이 100개 version이 1로 세팅되어 있다고 가정합니다. @RequiredArgsConstructor @Service public class ProductService { private final ProductRepository productRepository; @Transactional public void subtractStockOptimistic(int productId, int quantity){ int updatedCount = 0; while (updatedCount == 0){ Product product = productRepository.findById(productId); product.subtractStock(quantity); updatedCount = productRepository.updateStockOptimistic(product); if (updatedCount <= 0) { //업데이트에 실패한 경우 50ms 대기 try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } } } } <update id="updateStockOptimistic"> update test_product set stock = #{stock}, version = version + 1 where id = #{id} and version = #{version} </update> 쓰레드 100개는 처음에 재고를 읽어서 모두 다음 값을 받아옵니다. stock : 100, version : 1 제일 빠른 트랜잭션이 업데이트를 성공하고 DB는 다음과 같이 변합니다. stock: 99, version: 2 이제 나머지 99개의 트랜잭션은 version이 다르므로 모두 업데이트에 실패하게 됩니다. 업데이트에 실패하게 된 트랜잭션들은 재시도를 하게 됩니다. 이 때 DB에서 다시 읽어드린 재고는 stock: 99, version: 2일 것 같지만 실제로는 stock: 100, version: 1 를 읽게 됩니다. 왜냐하면 여전히 하나의 트랜잭션 안에 들어 있고, Isolation Level이 REPEATABLE READ로 처음 읽은 값을 계속 읽게 되기 때문입니다. 따라서 첫 트랜잭션을 제외한 모든 트랜잭션은 무한히 실패하게 됩니다....... 따라서 한 트랜잭션 안에서 업데이트와 재시도 로직이 진행되지 않도록 @Transactional을 메소드에서 떼주시면 정상 동작하게 됩니다. 혹시 정말 Isolation Level 때문인지 확인하고 싶으신 분들은 DB에 Isolation Level을 READ COMMITTED로 바꾸고 테스트를 진행해보시면 @Transactional이 붙어 있어도 정상 동작하는 것을 확인하실 수 있습니다~!

  • spring
  • java
  • 동시성
shef 댓글 1 좋아요 7 조회수 886

쓰레드 생명 주기?

미해결

스프링 시큐리티

안녕하세요. 강사님의 시큐리티 강의를 재밌게 듣고 있는 수강생입니다. 이게 맞게 질문드리는건진 모르겠는데, 쓰레드 로컬의 생명주기는 어떻게 되는걸까요? 몇가지 질문을 드리자면.. 제가 스프링을 학습해보면서 사용자가 서버에 접속하면 서블릿 컨테이너의 쓰레드 풀에서 쓰레드 하나를 할당받아 사용하는 걸로 알고 있는데, 시큐리티에서 사용되는 쓰레드가 풀에서 받은 쓰레드랑 동일한 것일까요? 클라이언트는 인증이 완료되고, DispatcherServlet까지 거쳐 정상적인 응답을 받으면 쓰레드를 반환하지 않는지요? 쓰레드를 반환하면 컨텍스트 정보가 다 날라갈 것이라 생각했는데, 시간 지나도 로그인 유지가 잘 되는거 같아 의아합니다. 톰캣의 쓰레드 풀 설정을 보통 몇십개에서 몇백개 사이로 하던데, 동시 접속자 수가 많아져 쓰레드 개수가 부족하면 인증 정보가 SecurityContext에 어떻게 관리될지가 궁금합니다. 제가 아는 정보가 좀 짬뽕되어 맞게 질문드리는 건진 모르겠으니 강사님의 소중한 고견 좀 부탁드리겠습니다. 감사합니다!

  • spring-boot
  • java
  • Spring Security
초보자 댓글 1 좋아요 0 조회수 593

엔티티의 필드가 많을 때 업데이트 방법?

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

API 개발 기본 - 회원 수정 API 해당 강의 시리즈를 들으며 전 강의부터 생겼던 궁금한 사항에 대해 질문을 드립니다. 예제의 경우는 최대한 간단하게 간소화시킨 엔티티를 예시로 들었지만, 필드가 많은 엔티티의 경우에는 어떤 방식으로 업데이트를 하는지 감이 잡히질 않네요. // java @RequestMapping(value = "/v1/edit/{memberId}", method = RequestMethod.PUT) public EditMemberResponse editMemberV1(@PathVariable Long memberId, @RequestBody @Valid EditMemberRequest request) { memberService.update(memberId, request.getName()); ... return new EditMemberResponse(member); } 강의 내용 중 위와 같이 업데이트 파라미터에 DTO 필드를 받아 업데이트 하도록 서비스를 작성하셨는데, 단순히 이름만 있는 엔티티 클래스가 아닌 필드가 굉장히 많은 엔티티의 경우에는 어떤식으로 업데이트 처리하는 것이 효율적일지 궁금해서 질문을 드립니다. @Entity public class Temp { @Id @GeneratedValue private Long id; private String field01; private String field02; // ...무수히 많은 필드들 private String field66; private String field67; } 예를들어, 위와 같은 Temp 클래스의 경우를 업데이트 하기 위해 앞서 설명한 방식으로 업데이트 기능을 서비스계층에 구현한다면 아래와 같이 실질적으로 사용이 불가능할정도로 가독성과 생산성이 떨어졌습니다. // java tempService.update( editTempRequest.getField01(), editTempRequest.getField02(), editTempRequest.getField03(), editTempRequest.getField04(), ..., editTempRequest.getField67() ); 아래와 같이 서비스 계층에 EditTempRequest DTO 계층 클래스를 직접 넘기는 방법도 생각을 해보았습니다만, 서비스 계층에서 DTO 클래스를 이용하기 위해 컨트롤러 계층에서 이너 클래스로 선언된 DTO를 별도의 public 클래스로 선언해주어야 되므로 별도의 자바 파일과 패키지를 구성하게 되어 불필요한 복잡도가 증가하는 문제가 발생했습니다. 또한, 단순히 요청, 응답을 위해 데이터를 담는 목적으로 사용되어야 하는 DTO 클래스의 역할과 책임이 확장되는 문제도 생겼습니다. // java import com.wahhahaha.controller.dto.editTempRequest; ... tempService.update( editTempRequest ); 클라이언트 측에서 수정 API를 호출하기 전에 조회 API를 우선 호출하여 각 필드 정보를 가진 상태로 전체 필드를 이용한다면 merge 업데이트로 쉽게 해결이 가능하겠다라는 생각을 해보긴 했지만 merge는 가급적 이용하지 않는 편이 좋다는 전 강의 내용이 있어 혼란스럽네요.

  • 수정
  • 업데이트
  • JPA
  • java
  • springboot-jpa
  • spring
  • spring-boot
roman14 댓글 2 좋아요 3 조회수 1405

인기 태그

인프런 TOP Writers

주간 인기글