묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
의존성관련 질문
의존성에 대해 갑자기 헷갈려서 총 4가지 질문드립니다.MemberService에 아래와 같은 메서드(Member findMemberById(Long id))가 있고 PostService(다른 Service 클래스)에서 memberId로 Member를 조회해야 할 일이 있습니다. 이 경우 아래 메서드를 이용하기 위해 PostService 클래스에서 private final MemberService memberService 형태로 멤버변수로 포함한다고 가정하겠습니다.(memberService.findMemberByMember(id) 로 이용하기위해)public Member findMemberById(Long id) { return memberRepository.findById(id) .orElseThrow(() -> new BusinessLogicException(MEMBER_NOT_FOUND)); } Q1) PostService에서 MemberService를 생성자 주입을 통해 받아서 이용할 경우 MemberService의 의존성(예를 들면 MemberRepository 등의 MemberService 클래스에서 사용하는 클래스들)까지 PostService에 포함되는 것일까요? Q2) 의존성이라는게 단순히 생성자 주입으로 받았던 멤버 클래스들 뿐 아니라 내부 메소드에서 매개변수로 받은 클래스가 있다면 이 또한 의존성인가요?(import 로 포함된 클래스들을 모두 의존클래스로 보면 될지, 아니면 내부에서 사용하는 모든 객체를 의존성으로 보면될지 >> 같은 패키지의 경우 import 안하는걸 고려했을때 내부에서 객체로 이용하지만 같은 패키지라 import 안되는걸 고려) Q3-1) Q1의 답변에서 MemberService의 의존성까지 PostService에 포함되는 거라면 PostService에서 Member를 조회하기 위해서는 memberService.findMemberById(id) 로 조회하기 보단 MemberRepository를 주입받아서 memberRepository.findById(id).orElseThrow(() -> new BusinessLogicException(MEMBER_NOT_FOUND)); 형태로 변경하는게 맞을지? Q3-2) Q1의 답변에서 MemberService의 의존성까지 PostService에 포함되는게 아니라면 PostService에서 MemberService가 아닌 MemberRepository로 조회하는게 맞을지? Member 조회가 여러곳에서 사용되고 Member findMemberById(Long id) 메소드의 내용이 여러곳에서 중복되는 걸 생각했을때처음에는 단순히 member 조회가 여러곳에서 일어나고 공통된 내용이 반복되어 MemberService의 findMemberById 로 묶어서 사용하는게 맞다고 생각했는데 의문이 들었고 예전에 의존성은 최대한 줄이라고 하셨던게 생각나서 질문드립니다.
-
해결됨[언리얼 시스템 연구 과정] UE5 스파르타 클래스: 심화편
컨트롤릭 추가 문의 (회전하는 방법)
안녕하세요바로 아래 질문을 했던 학생입니다알아보니 컨트롤릭이라는 플러그인을 설치 안해서안뜨는 현상이였더라구요 ㅠ 그런데 이것을 해결하니 또 문제가 생겨서 추가 질문을 드립니다이동을 하게 되면 이렇게 신체가 기형적으로 변하게 되는데제가 원하는 이동은이런 기계팔처럼 좌우 운동 이런 회전이 필요한데아무리 눌러도 이런 회전은 안되고 기형적인 신체 변화만 있더라구요이갓저것 눌러보았지만 잘 안되어서 ㅠㅠ기계 팔처럼 회전을 하려면 어떤 메뉴를 건드려야할까요?
-
미해결루커 스튜디오(구글 데이터 스튜디오)로 배우는 데이터 시각화 입문
실습 샘플 링크 오류
필터 만들기에서 제공해주신 실습 샘플 링크를 클릭하면, 모든 보고서 항목에 '할당량 오류'라는 표시가 나타납니다.이 부분 혹시 제 계정 오류가 맞을까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Entity Builder 패턴과 값 수정 관련해서 질문드립니다.
Entity의 경우 불변성을 위해 Setter를 사용하지 않고 Builder패턴을 사용중인데요.불편한점이 생겼습니다. 회원 Entity의 경우 필드가 30개 정도 되는데요.패스워드 3회 실패 시 상태값(isActive) 필드만 수정을 하고 싶은데Setter가 있다면 해당 회원ID로 조회 후 memberEntity.setIsActive(False)로 입력해주면DirtyChecking으로 간단하게 원하는 로직이 구현되는데builder 패턴이다 보니 아래 처럼 구현을 하고 있습니다.MemberEntity originMember = memberRepository.findById(memberId);MemberEntity memberForUpdate = MemberEntity.builder().id(originMember.getId()).address(originMember.getAddress()).isActive(true)...........build();memberRepository.save(memberForUpdate );이런 경우에 Builder패턴을 사용하면서 좋은 해결책이 있을까요? 상태와 관련된 필드만 @Setter를 넣자니(제 짧은 생각이지만 changeStatus method로 필드값 변경하는 방법도 setter와 동일해보입니다. 오히려@Setter가 코드간결성에서 더 좋아보이는 제 생각입니다.)해당 필드도 무분별하게 변경이 되면 안되는 중요한필드라 애매한 상황입니다. 도와주세요 !
-
미해결Vue로 Nodebird SNS 만들기
안녕하세요! 로그인 유지 질문 드립니다!
이것저것 만들어보다가 로그인 유지에 대한 필요성을 느꼈고https://www.zerocho.com/category/HTML&DOM/post/5918515b1ed39f00182d3048제로초님의 이 글을 보게 되었습니다!그런데 만약 로컬스토리지에서는 유저 정보가 있는데 백엔드에서는 유저 정보가 없는경우 (express-session 만료 등의 이유)가 있을수 있을것 같은데 이런 경우에는 실무에서 어떻게 처리가 될까요??단적인 생각으로는 백엔드의 세션 만료시 로컬스토리지의 정보(아이디 / 비번)로 세션을 재활성 시킨다거나 할수 있을것 같은데 혹시 이런 경우에는 어떻게 처리가 될까요??
-
미해결퍼블리셔 개인 포트폴리오 홈페이지 제작 완벽 가이드(PDF)
수강생참고자료 어디서 봐요?
수강생참고자료 어디서 봐요?
-
미해결Node.js의 모든 것
prisma timezone에 관한 질문이 있습니다.
현재 공식 레퍼런스를 보며 prisma, next를 사용해서 게시판을 만드는 프로젝트 작업을 성공적으로 끝냈지만 한가지 문제가 있었습니다. prisma의 now()가 timezone UTC를 베이스로 작동하고 있는데 이걸 설정하는 방법을 prisma에서 공식적으로 지원하지 않는다고 검색을 통해 알게되었습니다.아직 강의 내용을 수강하지는 않았기에 강의내용에서 timezone 관련 이슈를 다루는지는 모르겠지만 그 파트를 직접 찾기에는 오래 걸리는터라.... 먼저 질문부터 남겨봅니다.
-
해결됨[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
paragon-belica에셋이 5.1프로젝트에 추가가 안되는데요
안녕하세요.이 튜토리얼은 무조건 5.0으로 해야하는 건가요?!감사합니다.
-
미해결[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
axis turn 인풋값은 키를 누를 때는 무조건 0이 아니니 0이 아닌 경우 조건문 안달아줘도 되지 않나요?
게임 플레이 프레임워크에서비행기가 q,e누르면 회전하게 만드는 코드에서인풋값이 0이 아닌 경우만 적용되도록 한 거에서요 0은 그냥 키를 안 눌렀을 때 값이니까사실 키를 눌렀을 때는 항상 0이 아니니까조건문 안달아줘도 상관없는 것 아닌지 궁금합니다.
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
collection.dart 임포트할 때요.
에러는 아니지만 pubspec.yaml에 추가해달라고 워닝이 뜨는데, 이건 추가해도 되고 안해도 되는 건가요? 아니면, mapIndexde만 사용하는 정도면 펍스펙에 추가 없이 그냥 쓸수 있지만 그 이상을 사용하려면 추가해야 하는 건가요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
입력 값과 시간 복잡도 관해서 여쭙습니다!
다름이 아니라 이 입력값 N이 30인 경우,연산에 매우 오랜시간이 걸리더라구요!2중 반복문을 사용해서 구하는게 시간 복잡도상 이상적인 것인가요?아니면 DP를 사용하는 방법을 고려해야 되는건가여??
-
미해결몇 줄로 끝내는 인터랙티브 웹 개발 노하우 [초급편]
코드가 미리보기로 보여주는 확장프로그램이 뭔가요?
코드가 미리보기로 보여주는 확장프로그램이 뭔가요?
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
12강 한글복사
hwp.Run("CopyPage")row = 2while True:if not ws.Cells(row, 1).Value:hwp.Run("DeletePage")breakelse:data = list(ws.Range(ws.Cells(row,1),ws.Cells(row, 4)).Value[0])data[2] = data[2].strftime("%Y년 %#m월 %#d일")필드삽입(row-2, data)hwp.Run("PastePage")row += 1 전체 카피가 되지 않고 하나의 파일만 복사되어 엑셀첫번째 열 파일만 생성됩니다.
-
해결됨모의해킹 실무자가 알려주는, XSS 공격 기법
board 화면에 아무런 정보가 뜨지 않습니다.
이런 화면이 발생하고 있습니다.코드는 패스워드 외 수정한건 없구요~table 생성 화면테이블 select 쿼리문(db내용이 없으면 아래처럼 뜨는게 맞나요?
-
해결됨기출로 대비하는 개발자 전공면접 [CS 완전정복]
Array 조회에 대해 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Array에 저장되는 자료의 자료형이 동일하다고 가정하기 때문에 element당 차지하는 바이트 수가 같다고 생각할 수 있는 걸까요? 그렇다면 자료형이 동일하면 바이트 수가 항상 같은가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]11분 50초 쯤 요즘 세션 객체를 안쓴다고 하셨는데 그럼 토큰으로 인증을 주로 하는 건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepository 터미널 세팅 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]➜ libs java -jar jpashop-0.0.1-SNAPSHOT.jar . ____ _ /\\ / ___'_ __ (_)_ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.10)2023-03-29 10:00:16.420 INFO [,,] 33389 --- [ main] jpabook.jpashop.JpashopApplication : Starting JpashopApplication using Java 17.0.6 on yunsang-yeon-ui-MacBookAir.local with PID 33389 (/Users/sangyeon/Desktop/study/jpashop/build/libs/jpashop-0.0.1-SNAPSHOT.jar started by sangyeon in /Users/sangyeon/Desktop/study/jpashop/build/libs)2023-03-29 10:00:16.422 INFO [,,] 33389 --- [ main] jpabook.jpashop.JpashopApplication : No active profile set, falling back to 1 default profile: "default"2023-03-29 10:00:17.075 INFO [,,] 33389 --- [ main] o.s.cloud.context.scope.GenericScope : BeanFactory id=7e250d03-eb6b-3405-9b07-0ce9cd1e93022023-03-29 10:00:17.575 INFO [,,] 33389 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)2023-03-29 10:00:17.583 INFO [,,] 33389 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]2023-03-29 10:00:17.583 INFO [,,] 33389 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.73]2023-03-29 10:00:17.641 INFO [,,] 33389 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext2023-03-29 10:00:17.642 INFO [,,] 33389 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1180 ms2023-03-29 10:00:18.403 INFO [,,] 33389 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''2023-03-29 10:00:18.420 INFO [,,] 33389 --- [ main] jpabook.jpashop.JpashopApplication : Started JpashopApplication in 2.308 seconds (JVM running for 2.591)2023-03-29 10:00:27.868 INFO [,06eafb76d211bbc3,06eafb76d211bbc3] 33389 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'2023-03-29 10:00:27.868 INFO [,06eafb76d211bbc3,06eafb76d211bbc3] 33389 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'2023-03-29 10:00:27.869 INFO [,06eafb76d211bbc3,06eafb76d211bbc3] 33389 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms 이렇게 나오고 local host 8080에 들어가니Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Wed Mar 29 10:00:27 KST 2023There was an unexpected error (type=Not Found, status=404).이렇게 뜹니다.
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
왜 자기 게시글을 리트윗하는 것을 금지해야하는 지 궁금합니다.
왜 자기 게시글을 리트윗하는 것과자기게 시글을 남이 리트윗 한 거를 자기가 또 리트윗 하는 거를 금지해야하는 지 궁금합니다.실제 트위터에서 보면 제 트윗을 제가 또 리트윗 하는 것이 가능하던데 특별한 이유라도 있나요?
-
미해결실전! Querydsl
build관련 질문드립니다.
안녕하세요 영한님.스프링 입문 로드맵부터 지금까지 정말 좋은 강의 감사합니다.로컬에서는 compileQuerydsl도 정상적으로 작동되고 Q클래스도 잘 생성 되는데 결국에 배포를 하기 위해서는 build를 해야 하는데 해당 부분에서 계속 문제가 생겨서 질문드립니다.아래는 설정파일입니다.querydsl관련 중복 에러만 발생하여 다른 라이브러리는 제외하고 해당 부분만 올렸습니다. buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '3.0.3' id 'io.spring.dependency-management' version '1.1.0' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'heyuniverse' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.persistence:jakarta.persistence-api" annotationProcessor "jakarta.annotation:jakarta.annotation-api" } tasks.named('test') { useJUnitPlatform() } def querydslDir = "$buildDir/generated/querydsl" clean { delete file(querydslDir) } querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } configurations { querydsl.extendsFrom compileClasspath } compileQuerydsl { options.annotationProcessorPath = configurations.querydsl }distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip아래는 배포를 위해 build시 발생하는 에러 로그입니다.> Task :compileJava FAILEDDeprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.See https://docs.gradle.org/7.6/userguide/command_line_interface.html#sec:command_line_warnings3 actionable tasks: 3 executedFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':compileJava'.> Compilation failed; see the compiler error output for details.Attempt to recreate a file for type xxxx.xxxx.QClassAttempt to recreate a file for type xxxx.xxxx.QClassAttempt to recreate a file for type xxxx.xxxx.QClassAttempt to recreate a file for type xxxx.xxxx.QClass인텔리제이 ,gradle 양쪽 다 캐쉬 삭제 후 실행 해봐도 결과는 같았고,gradle 버전이 문제인가 하여 8.0으로 업그레이드 해봐도 해결이 되지는 않았습니다.이틀 넘게 종일 매달려봐도 도무지 질문할 곳이 없어서 남겨봅니다 ,,
-
해결됨깃헙 블로그(Github blog)로 차별화 된 나만의 홈페이지 만들기!
타이포라 유료네요ㅠㅠ
유료인데 써야하나요? 혹시 대체재는 없나요?