inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

Spring MVC에서 corountine 활용 방안

해결됨

2시간으로 끝내는 코루틴

안녕하세요. 저는 오랜기간 동안 Java, Spring을 기반으로 웹 프로그래밍 해왔고 이번에 일부 프로젝트를 코틀린 + Spring을 기반으로 구현을 검토하게 되어 해당 강의를 듣게 되었습니다. 사실 Java, Spring 기반이다 보니 동기방식의 프로그램에 익숙해져 있고 러닝커브나 디버깅의 어려움, DB등의 관련 라이브러리들이 아직 안정화 수준이 아니라 판단하여 WebFlux 도입을 꺼려왔고, 일부 RestTemplate 호출등의 병렬 처리가 필요할 경우 CompletableFuture에 별도 ThreadExecutor를 사용해 처리하는 방법을 주로 사용해 왔습니다. 이번 신규 프로젝트도 우선은 Spring 프레임워크를 사용하기 때문에 Webflux가 아닌 Spring MVC 기반의 동작이 될 예정인데요, 그러다 보니 강의를 다 들었지만 coroutine을 어떻게 활용할 수 있을지 감을 잘 못잡은 상태입니다. 가령 RestTemplate이나 RestClient 등의 동기식 block 기반의 통신 시 호출 부를 CoroutineScope(Dispatchers.Default).async { } 으로 감싸서 호출을 하게 되면 두개의 API가 각각 1초가 걸린다면 1.05 정도로 가능하겠지만 이런 패턴은 기존 자바에서 CompletableFuture로 충분히 가능했던더라 coroutine을 잘 활용했다고 보는게 맞는지 궁금한데요, coroutine의 장점을 활용하려면 결국 API 통신 같은 경우 가능하면 webclient나 ktorClient 등을 통해 non-block으로 변경해서 처리를 해야 하는건지 궁금하고, 코틀린으로 웹애플리케이션을 구현한다고 했을때 spring을 사용하면 webflux 도입은 약간 필수? 같은 개념으로 봐야 하는건지 궁금합니다. (강의 마지막 Continuation 예제에서 repository call을 두번 하는 부분도 non-block으로 DB처리가 가능해야 의미있는 coroutine 동작이 가능한거겠죠??) 질문을 요약하자면, Spring MVC 구조에서 block 기반의 로직 처리 시 CoroutineScope(Dispatchers.Default).async { } 으로 감싸서 호출하는 구조가 coroutine의 장점을 활용한 방식이 맞을까요? 1번이 장점이 아니라면 non-blocking으로 처리 가능한 webclient나 ktorClient을 사용해야 해야 할까요? 보통 Spring에서 coroutine을 활용하려면 webflux를 사용하는게 기본일지? 혹시 다른 활용 방안은 없을지? 입니다. 감사합니다.

  • kotlin
  • coroutine
yki1204 댓글 1 좋아요 1 조회수 612

Retiming 관련 질문입니다.

미해결

설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)

[1. 질문 챕터] : eg) 몇 장, 몇 분 몇 초 쯤. or 수강생 분들이 봤을 때 어디구나?! 할 수 있게 표기 부탁 드려요. [2. 질문 내용] : eg) 질문 내용을 자유롭게 작성해주시면 되겠습니다 🙂 [3. 시도했던 내용, 그렇게 생각하는 이유] : eg) 설치영상은 이렇게 시도했는데 안되더라 or 본인의 생각을 적어주세요. (실습 내용 중에 이해가 안되거나 잘못된 내용이 있는데, 이러 이러한 근거로 나는 이렇게 생각합니다.) 안녕하세요 맛비님, 훌륭한 강의 정말 잘 듣고 있습니다. 다만 강의를 듣던 중, 헷갈리는 부분이 생겨 질문 남기게 되었습니다. 답변 해주시면 정말 감사하겠습니다. FPGA 22장 21분 쯤 Retiming에 관해 설명해주셨는데, 이 부분에서 중간에 F/F를 추가함으로써 timing violation을 해결하는 과정을 Retiming이라고 하셨습니다. 그런데 Retiming에 대해 공부를 하던 중, Retiming은 레지스터의 위치를 변경시키는 방법이고, 레지스터를 추가시키는 것은 pipielining이라는 글을 보게 되었습니다. 맛비님께서 설명해주신 것처럼 F/F을 추가하여도 Retiming인지 여쭈어 보고 싶습니다. 훌륭한 강의 정말 감사합니다. 답변해 주시면 감사하겠습니다.

  • fpga
  • 임베디드
tony0895 댓글 2 좋아요 1 조회수 150

인터셉팅 라우팅 폴더 위치 경로 지정 관련 질문

미해결

Next + React Query로 SNS 서비스 만들기

우선 인터셉팅 라우팅을 버튼, 링크 등을 통해 이동 시 인터셉트된 page를 렌더링하고 새로고침이나 주소창을 통해 이동했을 때 정상(?)적인 page를 렌더링하는 것으로 이해했습니다. 인터셉팅 라우팅 폴더를 만들어야 할 위치가 궁금해서 /test1/test2 에서 Link태그를 통해 /test1 으로 이동할 때 새로고침 시 표시 되는 test1과 intercepted test1을 구분하는 코드를 작성했습니다 "(.)test1" 폴더 위치를 바꿔보면서 어떻게 동작하는 지 확인해보는 과정에서 이해가 되지 않는 부분이 있어서 질문드립니다. 이 폴더구조로 해야 작동하고, 이 폴더 구조는 작동이 안되는게 이해가 안됩니다. 뭔가 (.), (..), (..)(..) 이런식으로 경로 지정이 가능하면 인터셉팅 라우팅 폴더는 어디 있든 상관없어도 될 것 같았는데... 아래 폴더구조가 작동을 안되니 디게 혼란스럽네요 ㅠㅠ

  • react
  • next.js
  • react-query
  • next-auth
  • msw
섬세한 햄스터 댓글 2 좋아요 0 조회수 190

3-D 반례

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

정확히 선생님이 알려주신 반례를 고려하지 못해서 계속 틀렸었네요. 이 반례를 생각못해서 30분 정도 헤매다가 강의를 듣고 알았습니다.. 이런 반례를 잘 생각해낼 수 있는 팁이 있을까요?? 참고 틀린코드 https://www.acmicpc.net/source/share/0041d7ec240f4070b3803327cefdc672 맞은 코드 (불 방문 배열 0 체크) https://www.acmicpc.net/source/share/7aaf0dee6f534ea6b896145d17a81a14

  • c++
  • 코딩-테스트
김상민 댓글 1 좋아요 0 조회수 96

오픈 그래프 적용이 안되네요..

미해결

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

오픈 그래프가 아무것도 적용이 되지 않는데 문제를 못 찾겠습니다.. index.html 에서 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <link rel="icon" type="image/svg+xml" href="/favicon.ico" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>감정일기장</title> <meta property="og:title" content="감정 일기장" /> <meta property="og:description" content="나만의 작은 감정 일기장" /> <meta property="og:image" content="/thumbnail.png" /> </head> <body> <div id="root"></div> <script type="module" src="/src/main.jsx"></script> </body> </html> 으로 작성을 하고 배포를 했는데 오픈 그래프 3가지 중 아무것도 적용이 안되네요.. 카톡말고도 티 스토리 블로그 글쓰기에서도 적용이 안 되는걸로 보아 캐시 문제는 아닌 것 같은데.. 오타가 있는지도 다른 분들 코드 보면서 비교해봤고 이미지도 public 폴더에 잘 있습니다.. 뭐가 문제일까요?.. 배포링크: https://emotion-diary-dfgr3t44x-watnus-projects.vercel.app/ 배포링크에서 썸네일 확인: https://emotion-diary-dfgr3t44x-watnus-projects.vercel.app/thumbnail.png

  • javascript
  • react
  • node.js
Wat 댓글 2 좋아요 0 조회수 440

문제 수정이 안 된 것 같습니다.

해결됨

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

https://www.inflearn.com/courses/lecture?courseId=326750&unitId=72712&tab=QnA&category=questionDetail&q=672478 다른 분이 글을 올리시긴 했는데 입력이 "문제에 첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다." 라고 적혀 있지만 예시 입력에도 공백이 있고, next()를 사용하면 틀리는 걸 보니 공백이 있는 문자열로 수정되어야 할 것 같습니다.

  • java
  • 코딩-테스트
11 1 댓글 2 좋아요 0 조회수 132

close() 에 실패한 자원의 처리

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

finally { if ( rs != null ) try{rs.close();}catch(Exception e){} if ( pstmt != null ) try{pstmt.close();}catch(Exception e){} if ( conn != null ) try{conn.close();}catch(Exception e){} } 자원을 해제하는 도중 예외가 발생하면 나머지 자원이 해제되지 않을 수 있기에 다음과 같은 try 문으로 감싸주어야 한다고 이해했습니다. 그러면 예외가 발생해 해제에 실패한 자원에 대해서는 다시 close() 를 하거나 다른 조치를 취하지 않아도 메모리 누수나 다른 문제가 없는 건가요?

  • spring
  • mvc
  • spring-jdbc
한재현 댓글 1 좋아요 0 조회수 150

수강연장 부탁드립니다

미해결

AWS Certified Solutions Architect - Associate 자격증 준비하기

안녕하세요, 혹시 수강기한 연장 가능할까요? 회사 다니면서 시험 준비를 하려니 강의 수강을 못했네요... 연장해주시면 정말 감사드리겠습니다!

  • 네트워크
  • aws
윤주영 댓글 2 좋아요 0 조회수 116

fail() 오류

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. fail(); 부분에서 오류가 뜨고 이텔릭체로 바뀌지 않습니다. 왜 그런가요? package hello.hello_spring.service; import hello.hello_spring.domain.Member; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; class MemberServiceTest { MemberService memberService = new MemberService(); // 테스트케이스에서는 메서드명 한글로 적어도 된다 @Test void 회원가입() { // given Member member = new Member(); member.setName("hello"); // when long saveId = memberService.join(member); // then(검증) Member findMember = memberService.findOne(saveId).get(); assertThat(member.getName()).isEqualTo(findMember.getName()); } @Test // 예외처리(테스트케이스에서는 정상적으로 작동하는거도 좋지만 예외 처리가 더 중요하다) public void 중복_회원_예외() { // given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); // when memberService.join(member1); try { memberService.join(member2); fail(); } catch (IllegalStateException e) { } // then } @Test void findMembers() { } @Test void findOne() { } }

  • java
  • spring
  • mvc
  • spring-boot
최민석 댓글 1 좋아요 0 조회수 325

실습 2-9] request 수정하고 send를 눌렀는데 검색이 되지 않습니다.

해결됨

웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩

GET /insecure_website/index.php?page=view&idx=14%20and%20length((select+jumin+customer_info+where+id='admin'))=14 그 이전까지는 잘되었는데 이부분 부터 계속 안됩니다. 어디가 문제일까요?

  • 모의해킹
  • 인젝션
Yoonjae Kim 댓글 2 좋아요 0 조회수 123

리팩토링 10. 함수를 명령으로 바꾸기 강의 부분에서 질문있습니다.

미해결

코딩으로 학습하는 리팩토링

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 리팩토링 10. 함수를 명령으로 바꾸기 강의에서 6:00 부분에서 설명하시는게 전략패턴 말씀하시는 것 같은데 GoF의디자인 패턴 강의에서 설명해주신 것일까요?? 아직 디자인 패턴 강의는 들어보지 않아서 강사님께서 기억나시냐고 물어보시는게 어떤 부분인지 궁금해서 질문드립니다.

  • java
  • intellij-idea
CUBE 댓글 1 좋아요 0 조회수 156

강사님~ 오디오 파일 관련해서 질문있습니다!

해결됨

절대강좌! 유니티 6 - TPS 게임으로 배우는 유니티 마스터클래스

강사님~ 너무 재밌게 강의를 듣고 있습니다. 궁금한게 하나 있는데 섹션 6번에서 '스파크 이펙트 표현' 강의를 완강 후 'Audio 기초 사용법' 강의로 넘어갔는데 오디오 파일이 없어서... 혹시 오디오 리소스는 어디서 다운 받을 수 있을까요? 혹시나 제가 수업자료를 놓친건가 싶어서 앞 강의를 다시 돌려봤는데 어디서 받아야하는지 잘 모르겠습니다.

  • C#
  • unity
rioArchive 댓글 2 좋아요 0 조회수 237

9.2 useReducer 체크박스 관련질문입니다.

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

문제상황: 수정을 위해 체크박스를 체크해도 아무 변화도 생기지 않는 상황 reducer 내용 const reducer = (state, action) => { switch(action.type){ case 'CREATE': return [action.data,...state]; case 'UPDATE': return state.map((item) => { console.log(action, item.id, item.isDone) return item.id === action.targetId ? {...item, isDone: !item.isDone} : item }) case 'DELETE': return state.filter((item) => item.targetId !== action.targetId) default: state } } const onUpdate = (targetId) => { dispatch({ type:"UPDATE", targetId }) } 예상 문제: console.log(action.targetId, item.id, item.isDone)을 해본결과 action.targetId가 내가 원하는 id값만 가져오는것이 아닌 저렇게 객체 전체를 가져오기 때문에 action.targetId와 item.id가 일치하지 않아 체크가 되지않는 현상인것 같습니다. 어디를 보면 좋을지 및 무엇을 수정해야하는지 알려주시면 감사하겠습니다.

  • javascript
  • react
  • node.js
양진영 댓글 1 좋아요 0 조회수 135

OTA 관련 기능 질문

미해결

UDS 진단통신을 통한 SW 업데이트(SW ReProgramming)

안녕하세요, 마지막 강의에서 궁금한 점이 있어 질문을 드리게 되었습니다. OTA에서도 다운로드 순서를 말씀주셨는데, OTA 과정에서도 ECU Reset을 수행한다면, 해당 동작은 차량 시동을 끈(MCU off?) 후에 진행하게 되는 것인가요? 이중 메모리 구조를 이용할 때가 차량 주행 중에 SW Update 하기 위해서로 이해했는데, 그렇다면 SW Reprogramming 과정에서 ECU Reset은 주행 중에 가능한 것인가요? SW Update 이후의 A,B Swap을 MCU에서 수행한다고 이해했습니다. 해당 기능은 MCU가 Off(시동 OFF?) 후에 Swap이 진행되고, 다시 On(시동) 시키면, 새롭게 업데이트 된 SW가 담긴 메모리가 활성화 되는 것 일까요? 기본적인 유선 통신 (SW Update)에서는 차량 정지 시에 진행한다고 들었는데, 시동 OFF/On 두 상태에서 SW Update가 가능한 것인가요? 마지막 부분까지 강의를 수강했는데, 지식을 쌓는데 큰 도움이 되었던 유익한 강의였습니다! 욕심이지만,, 또 가능한 다른 강의도 open 하셔서 더 많은 부분을 배워갔으면 좋겠습니다! 감사드립니다!

  • CAN
  • uds
nookk 댓글 1 좋아요 0 조회수 238

3.3 Langchain 없이 Upstage RAG 구성

해결됨

RAG를 활용한 LLM Application 개발 (feat. LangChain)

안녕하세요 강사님. 🙂 질문 내용 3.3 강의를 듣던 중 chatGPT 말고 upstage로 구성하는 방법은 없을까? 하고 스스로 방법을 찾아봤습니다. https://github.com/openai/tiktoken/blob/main/tiktoken/model.py 현재 tiktoken에서 제공되는 model 중 upstage의 solar 모델이 없는 것 같습니다. upstage 로 RAG를 구성하는 방법도 배울 수 있을까요..?

  • vector-database
  • llm
  • langchain
  • rag
  • openai-api
김지환 댓글 2 좋아요 0 조회수 444

빈공간 이동에서 잔상

해결됨

[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스

저번과 같은 질문을 드려서 죄송합니다. 빈공간이동에서 보면 30:43초 쯤에 클라이언트가 이동할때 서버 쪽에 저랑 같은 잔상이 생기는데 해결방법이 없나요?

  • C#
  • unity
  • 게임기획
  • multiplayer
  • game-programming
ML G 댓글 2 좋아요 0 조회수 181

메인 폰트 사용법이 궁금합니다.

미해결

Tailwind CSS로 만드는 멋진 웹 UI 스타일링

4.0 기준으로 학습하고 있습니다. input.css 파일을 아래와 같이 작성하면 자동으로 Montserrat 폰트 즉 첫번째 줄 폰트가 적용되는건가요? 메인 폰트 적용 방법을 모르겠습니다. @theme { --font-mont: "Montserrat", "sans-serif"; --font-noto: "Noto Sans KR", "Arial", "sans-serif"; /* Color */ --color-deepgreen:#6ab04c; --color-deeporange:#f0932b; }

  • HTML/CSS
  • 반응형-웹
  • tailwindcss
좀 해 댓글 2 좋아요 1 조회수 237

멀티 스레드 트랜잭션

미해결

스프링 DB 2편 - 데이터 접근 활용 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요 영한님 강의를 보고 사이드 프로젝트를 하며 성장 하고 있습니다. 관련된 내용을 찾아 보다가 인사이트를 얻기 어려워 조언을 얻고자 질문을 남깁니다. 테스트에 트랜잭션이 걸려있고, ExecutorService submit을 통해 단순히 데이터를 저장 할때 PessimisticLockingFailureException 예외가 발생 합니다. 테스트 트랜잭션이 락을 가지고 있고 커밋 되지 않아서 문제가 발생 한다고 하는데 멀티 스레드는 트랜잭션 전파와 연관이 없기 때문에 별도의 물리 트랜잭션이라고 생각 하고 있습니다. 하지만 왜 이런 예외가 발생 하는지 모르겠습니다 ㅠㅠ 힌트라도 알려 주시면 감사합니다 @Transactional @DisplayName("멀티 스레드에서 모임을 저장 한다.") @Test void saveEventWhenMultiThread() throws InterruptedException { //given ExecutorService executorService = Executors.newFixedThreadPool(2); int taskCount = 3; CountDownLatch countDownLatch = new CountDownLatch(taskCount); //when //then for(int i = 0; i < taskCount; i++) { int testNum = i; executorService.execute(() -> { try { eventRepository.save(createEvent("멀티 테스트" + testNum , "테스트 모임", 30)); } finally { countDownLatch.countDown(); } }); } countDownLatch.await(); executorService.shutdown(); } Exception in thread "pool-2-thread-2" Exception in thread "pool-2-thread-1" org.springframework.dao.PessimisticLockingFailureException:

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
조희제 댓글 1 좋아요 0 조회수 109

NAT Gateway NAT table 최대 row 수 제한 같은 부분이 있는지 질문 드립니다.

해결됨

외워서 끝내는 네트워크 핵심이론 - 응용

안녕하세요. 선생님 강의 잘 듣고 있습니다. NAT Gateway NAT 수업 듣다가 궁금증이 생겨 질문 드립니다. 순간적인 요청이 많아 졌을 때 (정상적으로 응답 되지 않아 오랜 시간 물고 있는 요청이 많은 경우) NAT table에 External port 수가 제한 된 다던지 row 수가 제한되는 경우가 있을까요?? 위 같은 그림에서 1번은 외부 웹 서버로 통신, 2 ~ 4 는 내부 다른 VPC에 있는 웹 서버로 요청 할 때 1번 -> 외부 웹 서버 요청 지연이 발생 될 때 2 ~ 4 의 내부 웹 서버(멀쩡한 상태) 요청도 같이 지연되는 현상이 발생 된다면 어떤 부분을 확인 해 볼 수 있을까요? (2 ~ 4 -> 내부 웹서버 요청도 NAT Gateway 를 통해 나간다고 하면 해당 현상이 발생 할 수 있을까요??)

  • 네트워크
댓글 2 좋아요 0 조회수 217

logout 후에 login 페이지 이동은 어디서 시켜주는건가요?

미해결

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

당연히 구글링 해보셨져? 원하는 결과를 못찾으셨나요? 어떤 검색어를 입력했는지 알려주세 문제가 발생한 코드(프로젝트)를 Github에 올리시고 링크를 알려주세요. location.href = /api/logout 를 통해 스프링 시큐리티로 logout 보내고 세션 삭제한 뒤 브라우저를 보면 login?logout이 찍힌걸 확인 할 수 있는데 login으로 어디서 보내준건지 헷갈립니다..

  • vue.js
  • aws
  • spring-boot
  • jpa
  • spring-security
zzang4355 댓글 1 좋아요 0 조회수 275

인기 태그

인프런 TOP Writers

주간 인기글