묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Practical Testing: 실용적인 테스트 가이드
트랜잭션이 보장되고 처리되어야만 하는 N개의 작업이 있다면 별도의 서비스로 추출하라는 말이 헷갈립니다.
안녕하세요, 항상 강의 잘 보고 있습니다. 강의 듣기 전에는 모든 Layer에 단위테스트를 작성하느라 테스트가 싫었는데 덕분에 테스트가 재미있어졌습니다. 감사합니다 😀 아래 질문에 대한 답변을 읽다가 알쏭달쏭한 부분이 생겼습니다.해당 질문(긴 작업일 경우 트랜잭션을 걸지 말아도 된다는 점이 이해가 잘 안갑니다)에서 강사님께서는 "메일 전송 이후에 해야하는 작업들이 1가지가 아니라 트랜잭션이 보장되고 처리되어야만 하는 N개의 작업이었다면, 별도의 서비스로 추출해 트랜잭션을 적용하는 방법을 생각해볼 수 있습니다." 라는 말씀을 하셨습니다. 그렇다면 아래 MailService 클래스를 예시로 생각했을 때, 아래와 같이 별도의 클래스로 분리하라는 말씀이 맞으실까요?// 변경 전 @RequiredArgsConstructor @Service public class MailService { private final MailSendClient mailSendClient; private final MailSendHistoryRepository mailSendHistoryRepository; public boolean sendMail(String fromEmail, String toEmail, String subject, String content) { boolean result = mailSendClient.sendEmail(fromEmail, toEmail, subject, content); if (result) { mailSendHistoryRepository.save(MailSendHistory.builder() .fromEmail(fromEmail) .toEmail(toEmail) .subject(subject) .content(content) .build() ); return true; } return false; } }아래 코드에서 변경된 부분은 다음과 같습니다.MailSendHistoryService 클래스에 대한 의존관계가 생겼습니다.MailService의 sendEmail 메서드에는 readOnly 트랜잭션이 걸렸습니다.MailSendHistoryService의 추가적인_일을_하다 메서드에는 트랜잭션이 걸렸습니다.// 변경 후(내 생각) @RequiredArgsConstructor @Service public class MailService { private final MailSendClient mailSendClient; private final MailSendHistoryService mailSendHistoryService; @Transactional(readOnly = true) public boolean sendMail(String fromEmail, String toEmail, String subject, String content) { boolean result = mailSendClient.sendEmail(fromEmail, toEmail, subject, content); if (result) { mailSendHistoryService.추가적인_일을_하다(); return true; } return false; } } @RequiredArgsConstructor @Service public class MailSendHistoryService { private final MailSendHistoryRepository mailSendHistoryRepository; @Transactional public void 추가적인_일을_하다() { ... DB CUD 작업 ... } }
-
해결됨쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
jenkins Pipelin (기초부터 blue/green까지) 오류 질문입니다.
안녕하세요해당 강의 15분 입니다. Pipeline 2212-jenkins_pipeline-step2만들고 지금 빌드 누르면 잘 되다가소스빌드 부분부터 에러가 발생합니다.해당 오류처럼 나오는데 제가 빼먹은 게 있을까요?다시 카페에서 페이지 보고 수정해도 안되네요참고로 실습환경은 mac m2입니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
코드 순서 차이
1012번 문제 이전에 dfs. bfs 강의 부분에서 제가 기억하기로는 ret++; dfs(i, j); 이렇게 써서 제출 후 정답은 맞았습니다만...이 두 코드의 위치가 바뀌어도 상관없는 걸로 아는데제가 알고 있는 것이 맞나요?아니면 혹시 코테 볼 때는 dfs(i, j); ret++; 이렇게 해야만 하나요???
-
미해결[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]
안녕하세요 몇가지 질문이 있습니다.
안녕하세요 좋은 강의 잘 듣고있습니다. 몇가지 질문이 있어 문의드립니다.데코레이터로 감싸진 함수 호출강의를 다볼때쯤 되어 코드를 보니 blog_abtest.py와 blog.py에서 데코레이터로 감싸진 함수들의 호출은 @login_manager.user_loader -> 해당 데코레이터 부분에서 된다고 보면 될까요??수업시간에 말씀해주셨을텐데 제가 잘 이해를 못한것 같네요...예를들어, 아래 이미지의 함수들의 경우 선언과 동시에 호출을 하는 것일까요?2. C++, C#으로 구현된 서비스 SDK와의 연계제가 타전공으로서 웹은 처음으로 강사님을 통해 배우고 있는데 실무에서 C++ 혹은 C#으로 구현된 SDK에서 제공하는 '지도(map)'을 가시화하는 웹서버를 개발해야 됩니다. 본 강의에서 학습한 FLASK에 해당 SDK를 연동해서 홈페이지에서 지도를 불러올 방법이 있을까요?? 마지막으로, 정부쪽 웹개발은 FLASK를 사용하지 못하나요??국가 과제를 수행하고 있는데 정부에서 쓰는 웹 프레임워크가 따로 있다고 들었습니다.(자바와 유사한 전자정부~)국가기관에 웹서비스를 배포하고자 할때는 파이썬 기반의 FLASK를 사용하지는 못할까요??
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
실제 비슷한 문제를 sort()함수 사용하여 푼다면
코딩테스트 실전에서 sort()를 이용하여 풀고 제출해버리면영상에서 설명해주신 방법으로 해결한 답에 비해 떨어질 확률이 높아질까요?두 가지 방법으로 문제 풀어 보았고 둘 다 한번에 성공하긴 했습니다 다만, 실전문제에서 sort()함수를 사용하지 말라는 조건이 없다면 굳이 영상에서의 방법을 써야하는지도 궁금합니다.실전코테 시 문제가 여러개 나올 수도 있고 심적 압박(?)으로 반복문을 써야한다고 알고 있어도 긴장해서 sort()쓸 것 같아서요 ㅜㅜ
-
미해결그림으로 쉽게 배우는 운영체제
0번 프로세스 1번 프로세스 질문이요
0번 프로세스와 1번 프로세스의 차이가 궁금해서 질문해봅니다 이 사진이맞는걸까요 아니면 이 사진이 맞는걸까요?
-
미해결스프링 핵심 원리 - 기본편
OrderServiceTest 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요. OrderServiceTest 클래스 질문이 있습니다.MemberServiceImpl 객체와 OrderServiceImpl 객체는 서로 의존성이 없어보이는데, 각각의 객체 내부에 존재하는 MemberRepository를 어떻게 공유하는지 궁금합니다. 정확히는 createOrder() 테스트 함수 내부에서 memberService.join(member)을 했을 때, 이후 orderService.createOrder() 메서드 내부에서 memberRepository.findByID()를 통해 멤버를 어떻게 찾아내는 것인가요?
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
안녕하세요. 강의 보기 전 질문드립니다.
안녕하세요. 유니티를 다루다가 언리얼을 공부하고자 해당 강의 구매 후 시청 전에 질문 드릴 것이 있어 남깁니다.유니티로 게임 로직을 구현할 때 경험상 씬(언리얼에서는 레벨이라고 하는 것 같습니다)을 통해 간단하게 로그인씬->로비씬->인게임씬의 로직으로 게임이 구현되는데요. 강의 내용의 서버는 인게임씬에 해당하는 것인지 로그인씬, 로비씬 같은 것도 구현이 가능한 것인지 궁금합니다.인게임씬에 해당하여 다른 씬은 따로 구현해야한다면 1강이나 2강을 보면 도움이 될 지도 궁금합니다.감사합니다.
-
미해결스프링 핵심 원리 - 기본편
build.gradle에 롬복 추가할 때 dependencies 관련 질문드립니다
롬복 기능 추가할 때 build.gradle의 dependencies에 implementation 'org.projectlombok:lombok' 이 한 줄만 넣어줘도 롬복이 기능하는데 문제가 없는데 강의에서는 아래와 같이 여러 줄의 코드를 추가해줬습니다. 단순히 implementation만 추가해주는것과 강의에서 제시한 아래의 코드가 서로 어떻게 다른 건지 알 수 있을까요?//lombok 라이브러리 추가 시작 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //lombok 라이브러리 추가 끝참고로 스프링부트 버전은 3.2.1 입니다.
-
미해결처음 만난 리액트(React)
오류가 뜹니다ㅜ
이거 왜 이런가요ㅜㅜnpm uninstall -g create-react-app 치면 저렇게 돼요ㅠㅠ
-
해결됨스프링 핵심 원리 - 기본편
섹션7. 조회한 빈이 모두 필요할 때, List, Map
AllBeanTest에서@Autowired 어노테이션을 붙일 경우에, 빨간 밑줄이 생기면서, Autowired members must be defined in valid Spring bean (@Component|@Service|...) 이런 경고 문구가 뜹니다.실제로 해당 어노테이션을 붙이던 안붙이던 동일한 결과가 출력이 되는데 이유를 알 수 있을까요? public class AllBeanTest { @Test void findAllBean() { ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); } static class DiscountService { private final Map<String, DiscountPolicy> policyMap; private final List<DiscountPolicy> policies; @Autowired public DiscountService(Map<String, DiscountPolicy> policyMap, List<DiscountPolicy> policies) { this.policyMap = policyMap; this.policies = policies; System.out.println("policyMap = " + policyMap); System.out.println("policies = " + policies); } } }
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
동적페이이지 이동, 8강 10분56초에서 허공에 클릭하시는데 페이지가 이동하는것 같은데요...
8강 10분56초에서 하늘색 허공에 클릭하시는데 페이지가 이동하는것 같은데요. 어떻게 하신것인지 궁금해서 질문드립니다. 글자를 클릭해야 하는것 아닌가요? 근데 영상에서 동작은 또 잘되네요...?... 제가 잘 몰라서 이해를 잘못한걸까여?... 아래는 제 코드입니다..
-
미해결
mvvm uitextfield delegate 관련 질문
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=hjloveu012&logNo=221601526390&categoryNo=24&proxyReferer= 이 링크에 있는 코드를 이용해서 강의하셨던 memberlist mvvm 강의 참고하여 앱을 만들고 있는데요..사진 처럼 save를 해서 가격에 있는 데이터 값을 저장하고 새로 생성된 셀을 클릭하면 아래 화면이 나오는데 가격이 0으로 계속 수렴합니다 디버깅을 통해 save해서 데이터값이 올바르게 들어오는 것까진 확인을 했는데요 셀을 클릭하고 detailview로 넘어가는 과정에서 데이터값을 전달 못받는건가 싶은데 몇일동안 구글링해봤지만 해결을 못하고 있습니다...또한 기존에 생성되있는 1개의 멤버리스트 배열 또한 nametextfield 부분은 수정해도 잘 뷰에 표시 되는데 동일하게 가격 부분을 수정해서 update하면 디버깅을 통해 데이터가 정상적으로 들어오는것은 확인되나 셀을 클릭해서 detailview로 넘어오면 0으로 표시 됩니다.링크에 있는 코드를 사용하지 않으면(extension으로 uitextfield delegate) 입력한 데이터 값이 잘 저장되고 잘 보여집니다.github에 올려서 다른 커뮤니티에 올려보고 하는데 아무런 피드백을 받을 수 없어서 돌고 돌아 여기에 질문 남깁니다.. 꼭 좀 부탁드리겠습니다 ㅠㅠ참고로 깃허브 주소 남기겠습니다 https://github.com/theBettor/StackToShop
-
미해결[중급편] 코인 가격 모니터링 앱 제작 (Android Kotlin)
notification 문의드립니다.
안녕하세요. 강의듣던중 notification이 제대로 작동되지 않아서 문의드립니다.강의 내용과 동일하게 소스코드를 작성했는데 알림창 시작 버튼을 누르면 알림팝업이 나오지 않습니다.강의자료에 올라온 소스코드를 그대로 실행하면 알림팝업이 잘나오는데, 제 소스코드를 실행이 제대로 작동되지 않는 것으로 봐서 설정 문제인거 같은데 어디가 문제인지 모르겠습니다ㅠ확인부탁드립니다. 소스코드 https://drive.google.com/file/d/1TuCLiaHZ6Rkijb5X8z4wbqHEw3uTjHmK/view?usp=sharing
-
해결됨[C#/.NET 8.0]어서와, WinForm은 처음이지?
디비 Restore에러
Restore가 안되네요.. 동영상 몇번 보면서 똑같이 해도 해결이 안됩니다...
-
해결됨Next.js 필수 개발 가이드 3시간 완성!
Dynamic Routes GET 메소드 만들기 질문 있습니다!
안녕하세요 ! APIs 생성하기 섹션을 들으며 연습하고 있는데요.사용자 ID 값이 10 보다 큰 경우에는 404 에러를 출력하고 나머지 경우에는 사용자 정보를 반환하도록 작성해주신 GET 메서드 코드를 따라 작성했고, 포스트맨에서 정상 작동함을 확인하였습니다.강사님 코드import { NextRequest, NextResponse } from "next/server"; export function GET( request: NextRequest, { params }: { params: { id: number } } ) { // 사용자 ID 값이 10보다 큰 경우 404 오류 출력 if (params.id > 10) { return NextResponse.json({ error: "USER NOT FOUND" }, { status: 404 }); } // 사용자 정보를 응답으로 전달 return NextResponse.json([ { id: 1, name: "Jieun" }, { id: 2, name: "Hansol" }, ]); }따라하다가 문득, 전체 사용자 정보가 아니라 해당 id 에 해당하는 사용자 정보를 출력하고 싶어, 아래와 같이 코드를 수정하였습니다. 코드에 문제가 없다 생각했는데 에러를 출력하더라구요 ㅠㅠ에러 코드import { NextRequest, NextResponse } from "next/server"; export function GET( request: NextRequest, { params }: { params: { id: number } } ) { const userData = [ { id: 1, name: "Jieun" }, { id: 2, name: "Hansol" }, ]; const user = userData.find((user) => user.id === params.id); if (!user) { return NextResponse.json( { error: "사용자를 찾을 수 없습니다" }, { status: 404 } ); } return NextResponse.json(user); }`user` 를 잘 찾지 못하는 것 같아서 혹시 id 타입 문제인가 해서 params.id 의 타입을 바꾸고 실행하였더니 정상 작동 하였습니다.정상 작동했던 코드 1import { NextRequest, NextResponse } from "next/server"; export function GET( request: NextRequest, { params }: { params: { id: string } } ) { const userData = [ { id: 1, name: "Jieun" }, { id: 2, name: "Hansol" }, ]; const requestedId = parseInt(params.id); const user = userData.find((user) => user.id === requestedId); if (!user) { return NextResponse.json( { error: "사용자를 찾을 수 없습니다" }, { status: 404 } ); } return NextResponse.json(user); }정상 작동했던 코드 2import { NextRequest, NextResponse } from "next/server"; export function GET( request: NextRequest, { params }: { params: { id: number } } ) { // Mock user data const userData = [ { id: 1, name: "Jieun" }, { id: 2, name: "Hansol" }, ]; const requestedId = typeof params.id === "string" ? parseInt(params.id, 10) : params.id; const user = userData.find((user) => user.id === requestedId); if (!user) { return NextResponse.json( { error: "사용자를 찾을 수 없습니다" }, { status: 404 } ); } // Return the user information return NextResponse.json(user); }질문입니다!API 호출 시 전달되는 매개변수 params.id 의 타입은 GET 메소드 매개변수 선언시 지정해주는 타입으로 정해지는건가요?string 타입인거라면 강사님 코드가 실행되지 않았어야 하고, number 타입이라면 저의 에러코드 또한 실행되었어야 하는데 왜 정상적으로 작동하지 않았는지 궁금합니다.
-
미해결Spring Boot JWT Tutorial
Refresh Token
좋은 강의 감사합니다. Jwt 토큰에 대해서 공부하다 보니 Refresh Token에 대해 알게 되었습니다. 혹시 Refresh Token에 대해 찍은신 다른 강의나 참고할만한 코드가 따로 있을까요?! 그리고 해당 강의에서 구현한 jwt는 Refresh token 방식이 아니기 때문에 새로고침하거나 발급받은 후 페이지를 종료하게 되면 토큰은 사라지는 건가요?
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
도커 생명주기파트 docker system prune 질문
수업듣기전에 야매로 배워서 몇개 돌려봤었던것들을 수업에서 docker system prune을 사용하면 실행되고 있지 않은 컨테이너, 이미지, 네트워크등이 지워진다고 했는데 컨테이너는 지워졌지만 이미지는 남아있는데 어떤게 잘못된 건가요?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
CursorPaginationLoading 의 type cast 오류
type 'CursorPaginationLoading' is not a subtype of type 'CursorPagination<dynamic>' in type cast pagination-1 까지 잘 진행했는데 2~4까지 묶어서 실습하는 중 위와 같은 오류 때문에 계속 loading 바가 나옵니다. 다시 한번 소스코드를 강사님 강의를 보며 점검해 봤는데, 찾을 수가 없어 도움을 청합니다.
-
미해결JSP 강의평가 웹 사이트 개발하기
2강 null값 질문입니다
if(userID == null || userPassword == null){ PrintWriter script = response.getWriter(); script.println("<script>"); script.println("alert('입력이 안 된 사항이 있습니다.');"); script.println("history.back();"); script.println("</script>"); script.close(); return; } 이 부분이 이상하네요, 값을 안넣었는데도 회원가입이 돼요. 해결하신분 조언 부탁드립니다