묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨C개발자를 위한 최소한의 C++
new/ delete 질문
포인터 new 시, 주소값과 가리키는 Data 메모리도 동시 할당되나요?포인터 delete 시, 주소값과 가리키는 Data 도 메모리도 해제? 혹은 주소값만 해제되나요?
-
미해결AWS Certified Cloud Practitioner 자격증 준비하기
문제풀이는 실제 기출 문제인가요?
실제 기출 문제를 풀이해주시는걸까요? 그럼 총 시험당 40문제 인가요?
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
페이징 기능은 어떻게 테스트 하시나요?
안녕하세요. 강사님 강의듣고나서 새로운 시각이 열리게 된 것 같아서 요새 개발을 재밌게 배우고 있습니다. 감사합니다.배경public interface PostJpaRepository extends JpaRepository<PostEntity, Long> { @Query(value = "select new store.ppingpong.board.post.dto.PostWithWriter(p.id, p.title, p.postType, u.userInfo.nickname, p.createdAt) " + "from PostEntity p " + "join UserEntity u on p.userId = u.id " + "where p.forumId = :forumId", countQuery = "select count(p) from PostEntity p where p.forumId = :forumId") Page<PostWithWriter> findPostAndUsernameByForumId(@Param("forumId") String forumId, Pageable pageable); }(Post는 User의 id를 필드로 가지고 있고 Forum을 조회 시, forumId와 같은 Post리스트를 페이징처리하면서, User의 name필드 정보가 필요해서 다음과 같은 쿼리를 작성한 상황입니다.)페이징 기능이 필요해서, 제일 먼저 생각난게 spring data jpa에서 제공하는 페이징기능이었습니다.그런데, 테스트코드를 작성하려보니 뭔가 잘못된 것 같다고 느꼈습니다.문제상황@Override public Page<PostWithWriter> findByForumId(String forumId, Integer listNum, Pageable pageable) { List<Post> list = data.stream() .filter(post -> post.getForumId().equals(forumId)) .toList(); FakePage<Post> posts = new FakePage<>(list, pageable.getPageNumber(), pageable.getPageSize(), list.size()); posts.stream() .map() // ??? return null; }FakePostRepository를 작성하던 중 Page를 상속받은 FakePage를 구현 후, "스트림으로 PostWithWriter dto에 넣어줘야겠다" 라고 생각할 때였습니다.위 상황에서는 Post를 받는 정적 팩토리 메서드를 만들면 될 것 같긴했습니다. 그러나, 테스트코드를 위해서 메인코드를 수정해야하는 상황이 좀 이상하다고 생각했습니다.질문일단 제가 이 상황에서 드는 다양한 생각은dto는 단순히 전달목적이니 코드수정이 들어가도 상관없다.jpa의 페이징기능을 포기하고 Comparator를 구현해서 직접 정렬한다.페이징 기능에 한해서 Mock 프레임워크 기능을 이용한다. 물론 지금은 서비스가 단순히 repository를 호출하는거라 테스트 할 의미가 적은 것 같지만, 나중에 위 같은 상황에서의 대처가 궁금해서 질문올립니다.강사님의 답변을 듣고 싶습니다. 감사합니다!
-
미해결Next + React Query로 SNS 서비스 만들기
StrictResponse<any> 질문
[강의 위치]2:43~ [질문]StrictResponse<any> 로 타입을 지정하여 타입 오류를 해결하셨는데 any를 지정하지 않으려면 유저가 존재하지 않을 경우에도 아래와 같이 응답 데이터 구조를 맞춰야 할 것 같은데,일반적으로 found 또는 not found에 대해서 응답 데이터 구조를 맞추는 것이 좋은 방법인가요?const body = { id: "", nickname: "", image: "" }; return HttpResponse.json(body, { status: 404 });
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
공통 예외처리 질문 있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]예외를 던질 때 cause 예외를 함께 넘기니까공통 예외처리하는 부분에서는 Exception으로 예외를 잡아서 로그를 남기나요?
-
해결됨[코드캠프] 시작은 프리캠프
주석기능을 하고 싶은데 컨트롤+느낌표가 안됩니다 ㅠㅠ
주석기능을 하고 싶은데 컨트롤+느낌표가 안됩니다 ㅠㅠ 혹시 텐키리스 키보드는 조금 다른가요?...
-
미해결JPA & Spring Data JPA 기초
git 링크 안들어가져요 404에러
https://github.com/madvirus/jpa-basic/jpa-01git링크가 들어가면 404가 뜹니다
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
디바이스 에뮬레이터 질문
안녕하세요 bts 앱 듣고있는데 디바이스 에뮬레이터 실행하여 run app을 누르면 Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.res.ParseLibraryResourcesTask$ParseResourcesRunnable 가 나오면서 진행이 되지 않아 질문드립니다.
-
해결됨스프링 핵심 원리 - 기본편
컨테이너 생성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 강의에서 AllBeanTest 클래스에서 스프링 컨테이너 생성할 때, 구성 정보로 AutoAppConfig.class 외에도 DiscountService.class를 넣어주셨습니다.이렇게 넣어준 이유는 AllBeanTest 클래스는 Test 코드로 AutoAppConfig의 하위폴더에 속하지 않아, 따로 DiscountSerVice.class를 구성 정보로 넣어주신건가요?의존관계 자동 주입 범위를 알고 싶습니다. 구성 정보로 넣은 클래스가 속한 폴더를 포함해 하위 폴더에서 Annotation을 알맞게 기입한 클래스를 빈으로 등록하고 의존관계를 주입시켜주는게 맞을까요? DiscountService 클래스는 자동등록을 통해 빈으로 등록된건가요? 아니면 수동 등록을 통해 빈으로 등록된건가요? 전자라면 왜 @Component가 없는지 후자라면 왜 @Bean이 없는지 알고 싶습니다.
-
미해결스프링 핵심 원리 - 기본편
의존관계 주입은 어떤 형식으로도 가능한가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. DiscountService 생성자 주입을 통해 자동 의존관계 주입을 받을 때, Map과 List 형태로 의존관계를 주입 받았는데 이 형태에는 제한이 없나요?어떠한 형태로도 제가 의존관계를 주입받겠다는 annotation만 잘 적어주면, 스프링이 알아서 형식에 맞게 넣어주는건가요? Map<String, DiscountPolicy> 으로 의존관계를 주입받을 때, String은 입력받은 DiscountPolicy의 이름이 되는 것 같은데, 이렇게 입력받은 클래스의 이름을 따로 받을 수 있는 것처럼 클래스의 부가적인 정보를 알 수 있는 형식이 더 있나요?Map<int, DiscountPolicy> 이렇게 하면, 어떤 식으로 채워지나요?
-
미해결스프링 핵심 원리 - 기본편
DI에 관해 질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]다른 글의 서포터즈 님의 답변에서, DI는 인터페이스 뿐 아니라 구체클래스를 주입받을 수도 있다라고 하셨는데,만약 구체클래스로 생성자 주입을 한다면 DIP는 어긴 DI가 되는건가요? 그리고 DI가 맞다면 영상에서 설명해주신 의존관계 주입(DI)의 특징인 클라이언트 코드 변경을 하지않아도 된다는 것을 위반하게 되는데도 DI인 것인지 헷갈려서 질문드립니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
batchsize와 in 쿼리 관련해서 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]order와 orderItem의 예시의 경우 스트림의 map으로 order를 OrderDto로 바꾸는 과정에서 OrderDto의 생성자로 order 객체가 들어간 후 oderItem.getItem().getName()을 호출하면서 in 쿼리가 나가는 것 같은데 여기서 이해가 안 가는 부분이 있습니다. 조회된 order의 컬렉션이 매개변수로 넘어가는 것도 아니고 스트림은 원소를 하나씩 처리하는 것으로 알고 있는데 어떻게 조회된 모든 order의 아이디를 알고 in절 안에 넣을 수 있는 것인가요?강의를 보면 orderItem을 찾는 in 쿼리가 한 번만 나가는데 이건 첫 in 쿼리를 통해 모든 정보를 조회해서 이후에는 1차 캐시에서 조회 가능하기 때문에 그런 것인가요?
-
미해결스프링부트 시큐리티 & JWT 강의
섹션2 9강까지 듣고 질문이 있습니다. 스프링부트 버전을 다운그레이드해도 될까요?
강의나 자료의 최근 버전은 2.5.7이고, 현재 제 프로젝트의 버전은 3.2.3입니다.스프링부트가 업그레이드 되면서, 바뀐 부분에 대해서도 커뮤니티와 스프링 공식 문서를 보고 반영하였습니다.하지만 여전히 같은 에러가 반복되고, 일주일 넘게 붙잡았지만 당장 남은 시간은 없어 촉박한 상황입니다.수정한 부분: package com.cos.security1.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import com.cos.security1.config.oauth.PrincipalOauth2UserService; @Configuration // IoC 빈(bean)을 등록 @EnableWebSecurity // 위 활성화 ⇒ 이를 활성화하면 스프링 시큐리티 필터가 스프링 필터체인에 등록이 된다. //특정 주소 접근시 권한 및 인증을 위한 어노테이션 활성화 @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true) // secured 어노테이션 활성화, preAuthorize&postAuthorize 어노테이션 활성화 public class SecurityConfig { // Oauth 관련 @Autowired private PrincipalOauth2UserService principalOauth2UserService; // @Bean을 적으면 -> 해당 메서드의 리턴되는 오브젝트를 IoC로 등록해준다. @Bean public BCryptPasswordEncoder encodePwd() { return new BCryptPasswordEncoder(); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.csrf(cs-> cs.disable()); http .authorizeHttpRequests((authz) -> authz .requestMatchers("/user/**").authenticated() // authenticated(): 인증 완료해야 접근 가능 .requestMatchers("/manager/**").hasAnyAuthority("ROLE_ADMIN","ROLE_MANAGER") //인증 후, admin이나 manager권한 있어야 함 .requestMatchers("/admin/**").hasAuthority("ROLE_ADMIN")//인증 후, admin 권한 있어야 함 .anyRequest().permitAll()); // anyRequest(): 그 외 나머지 리소스들, permitAll(): 설정한 리소스의 접근을 인증절차 없이 허용한다는 의미 http.formLogin(form -> form // 로그인 페이지와 기타 로그인 처리 및 성공 실패 처리를 사용하겠다는 의미 .loginPage("/loginForm") // 사용자가 따로 만든 로그인 페이지를 사용하려고 할때 설정 .loginProcessingUrl("/login") //로그인 즉 인증 처리를 하는 URL을 설정. //해당 URL이 호출되면 시큐리티가 낚아채서 대신 로그인 인증처리를 수행. // 따라서 Controller에 /login을 만들지 않아도 된다. .defaultSuccessUrl("/")); // 정상적으로 인증성공 했을 경우 이동하는 페이지 http.oauth2Login(oauth2 -> oauth2 // oauth .loginPage("/loginForm") // 구글로그인이 완료된 후, 후처리가 필요 // !Tip! 구글 로그인이 완료가 되면 코드 X, 액세스토큰+사용자프로필 정보를 한방에 받음 .userInfoEndpoint(userInfo -> userInfo .userService(principalOauth2UserService))); return http.build(); } } 에러나는 부분:java.lang.NullPointerException: Cannot invoke "com.cos.security1.config.auth.PrincipalDetails.getUser()" because "principalDetails" is null 그래서 결론적으로는 프로젝트의 버전을 2.5.7로 다운그레이드해도 괜찮을지 여쭙고 싶습니다...프로젝트 내 다른 라이브러리도 고려해야겠지만 현업이나 다른 분들도 프로젝트할 때 버전 낮춰서 진행하는지 그래도 괜찮은지 궁금해서 질문드립니다.
-
미해결Next + React Query로 SNS 서비스 만들기
홈, 유저 프로필 페이지 prefetchQuery 사용 이유
[강의 위치]1:23~ [질문]홈 페이지와 유저 프로필 페이지에서 prefetchQuery를 사용한 이유가 해당 페이지에 왔을 때 미리 데이터를 불러와서 SEO 측면에서 유리함을 가져가기 위해서 썼다고 이해하면 될까요?
-
미해결Flutter 앱 개발 실전
파이어베이스 연결만 하면 에러가 발생해요
파이어베이스 연결하려고 하면 에러가 발생하네요그래들과 플러그인 버전의 문제인거 같기도 하고 ㅜㅜㅜ아무리 검색해도 해결방법을 잘 모르겠어요아래가 에러 내용이에요 FAILURE: Build failed with an exception.* What went wrong:A problem occurred configuring root project 'android'.> Could not resolve all artifacts for configuration ':classpath'. > Could not find com.android.tools.build:gradle:8.7. Searched in the following locations: - https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/8.7/gradle-8.7.pom - https://jcenter.bintray.com/com/android/tools/build/gradle/8.7/gradle-8.7.pom - https://repo.maven.apache.org/maven2/com/android/tools/build/gradle/8.7/gradle-8.7.pom Required by: project :* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org.BUILD FAILED in 5sRunning Gradle task 'assembleDebug'... 5.7sError: Gradle task assembleDebug failed with exit code 1
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - Part 1 NestJS Core
refresh token 재발급과 만료에 대해서
refresh token을 재발급 하기 위한 작업 과정에 대해 궁금한 것이 있어서 질문드립니다.저는 access token이 만료되면 refresh token을 통해 재발급을 받으려고 시도하고,이때 refresh token마저 만료된 상태라면 다시 로그인 하여 새로운 access token과 refresh token을 발급받아야 한다고 생각하고 있었습니다.그런데 refresh token을 재발급하는 로직도 강의 내용에 있더라구요.강의에서 refresh token이 만료되면 /auth/token/refresh api로 refresh token을 재발급 받으면 된다라고 설명해주셨는데,만료된 refresh token으로 refresh token을 재발급 받는 건 좀 이상한 것 같아서요.아니면 refresh token이 만료되지 않았는데 refresh token을 재발급 해야 하는 요청이 따로 있을까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
스프링부트 html 질문
강의 html에서는 CRUD 버튼을 js로 제어 하신 것 같은데html에서 <form action="/postuser" method="POST">이런 식으로 작성하고 어노테이션마다 /user부분을 다르게 해줘도 가능한가요?
-
미해결실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍
channels alternative?
강의에서는 공식문서 참고해서 daphne기반의 장고 채팅 앱을 구현했는데, gunicorn, uvucorn 등의 다른 asgi server 를 사용해서 channels를 이용하는데 문제 없을까요? 검색해서 확실한 답변을 찾기가 어려웠습니다.장고 4부터 공식적으로 async기능을 지원해서 channels없이도 websocket을 이용한 비동기로 정보를 주고 받는게 가능한 것으로 알고 있습니다. gunicorn 기반의 웹소켓 어플리케이션을 구현하는 예제를 보면 간단한 정보를 주고 받는 정도는 쉽게 가능 할 것 같지만, 챗 앱에 필요한 기능을 구현하기에는 channels을 사용하는 것에 비교해서 많은 시간을 요하며, channels layer처럼 multi server에 대응해서 chnnels group형태를 구현하기 막막해 보입니다. channels이외에 다른 장고 웹소켓용 유용한 패키지가 있을까요? 특히 cookiecutter-django와 호환 되었으면 좋겠습니다.
-
해결됨포트폴리오 초간단 배포하기
CORS 이슈에 대해 현업에서의 API URL 구성이 궁금합니다.
우선 좋은강의 감사드립니다. 타사이트나 *투브에서도 강의 들었는데 좋아서 인프런에서도 구매하게 됐습니다. CORS 강의를 들으면서 질문이 있어서 문의드립니다. 아래와 같이 api 서버나 dev 서버 도메인을 다르게 구성하려고 하는데, 도메인이 다르기 때문에 CORS 이슈가 하위도메인의 경우에도 적용되나요? www.domain.com : 프론트엔드 애플리케이션(프론트엔드), port : 3000api.domain.com : 백엔드 api 애플리케이션 , port : 8080dev-api.domain.com : 개발 테스트용 서버, port : 8081실제 현업에서는 백엔드의 api, auth 등을 도메인을 어떻게 구성하는지 궁금하고 어떻게 조치하는지도 궁금합니다.감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
도메인과 웹이 백, 프론트를 의미하는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]웹을 다른거로 바꾸어도 도메인은 바꾸지 않아도 된다고 설명해주신 부분이 프론트 클라이언트를 앱을 이용하든 웹을 이용하든, 리액트, html,css,is를 이용한 프론트를 이용하든 백앤드는 변경이 없어도 된다는것과 같은 말인건가요?