묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이어베이스(Firebase)를 이용한 웹+안드로이드 메모 어플리케이션 만들기
현재 2024.01.09 너무 오래된 강의입니다.
너무 오래된 강의입니다.버전이 많이 달라 구글검색을 오래해야합니다.
-
미해결Next + React Query로 SNS 서비스 만들기
Suspense 도입 관련 질문입니다.
// layout.tsx import type { Metadata } from 'next'; import { getServerSession } from 'next-auth'; import { Nunito } from 'next/font/google'; import { authOptions } from './api/auth/[...nextauth]/route'; import ClientOnly from './components/ClientOnly'; import LoginModal from './components/modals/LoginModal'; import RegisterModal from './components/modals/RegisterModal'; import Navbar from './components/navbar/Navbar'; import RQProvider from './components/providers/RQProvider'; import ToasterProvider from './components/providers/ToasterProvider'; import './globals.css'; const font = Nunito({ subsets: ['latin'] }); export const metadata: Metadata = { title: 'SMUING', description: 'SMUING에 오신것을 환영합니다.' }; export default async function RootLayout({ children }: { children: React.ReactNode }) { const session = await getServerSession(authOptions); return ( <html lang="ko"> <body className={`${font.className} dark:bg-medium dark:text-slate-100`}> <ClientOnly> <RQProvider> <ToasterProvider /> <RegisterModal /> <LoginModal /> <Navbar /> <div className="pb-20 pt-28">{children}</div> </RQProvider> </ClientOnly> </body> </html> ); } // page.tsx import { HydrationBoundary, QueryClient, dehydrate } from '@tanstack/react-query'; import Container from './components/Container'; import ListingContainer from './components/listings/ListingContainer'; import { getFilteredPosts } from './lib/getFilteredPosts'; type HomeProps = { searchParams?: { category?: string; }; }; const Home: React.FC<HomeProps> = async ({ searchParams }) => { const queryClient = new QueryClient(); const category = searchParams?.category || ''; // 서버에서 불러온 데이터를 클라이언트의 리액트 쿼리가 물려받음.(하이드레이트) await queryClient.prefetchInfiniteQuery({ queryKey: ['posts', category], queryFn: ({ pageParam = 1 }) => getFilteredPosts(category, { pageParam }), // searchParams 전달 // 커서 값 initialPageParam: 0 }); // hydrate라는 것은 서버에서 온 데이터를 클라이언트에서 그대로, 물려받는 것 이다. const dehydratedState = dehydrate(queryClient); return ( <HydrationBoundary state={dehydratedState}> <Container> <ListingContainer /> </Container> </HydrationBoundary> ); }; export default Home; 안녕하세요, 제로초님 강의를 수강하면서 현재 제가 진행하고있는 프로젝트에 Suspense를 도입해보면 좋을 것 같아 진행중입니다.layout.tsx에서 정의한 Header 컴포넌트만 먼저 보여주고, page.tsx에서 보여지는 가운데에 있는 ListingContainer 부분을 Skeleton UI 형식으로 보여주고 싶은게 제가 하고싶은 행동인데, 이 경우에는 Suspense를 어떻게 적용시켜야할지 감이 안와서 질문드립니다. ListingContainer를 ListingContainerSuspense 컴포넌트로 분리하여, searchParams와, 쿼리부분 코드를 옮겨도 제대로 동작하지 않아, 다른 좋은 접근 방식이 있을지 의견을 구하고자 질문을 남기게 되었습니다. 좋은강의 항상 감사합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
컨트롤러 테스트 (예외처리 테스트)
// 컨트롤러 코드 @PostMapping public ResponseEntity<?> postAdd(@RequestBody @Valid PostCreateRequest postCreateRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { Map<String, String> errorMap = new HashMap<>(); for (FieldError error: bindingResult.getFieldErrors()) { errorMap.put(error.getField(), error.getDefaultMessage()); } throw new ValidationException("유효성 검사 오류", errorMap); } postService.addPost(postCreateRequest.toEntity()); return ResponseEntity.status(HttpStatus.CREATED) .body(ApiResponse.of("success", "게시글 작성 성공", null)); }// 테스트 코드 @DisplayName("게시물의 제목과 본문을 반드시 작성해야 한다.") @Test void postAddWithoutTitleOrContent() throws Exception { PostCreateRequest post = PostCreateRequest.of("", " "); Assertions.assertThrows(ValidationException.class, () -> { mvc.perform(post("/api/posts") .contentType(MediaType.APPLICATION_JSON_VALUE) .content(mapper.writeValueAsString(post))) .andDo(print()); }); } 위 컨트롤러 코드를 보면 title과 content에 빈 값이 들어가면 ValidationException이 발생하고 유효성 검사 오류가 응답되어야 합니다. 그런데 응답을 보면Body = {"status":"fail","message":"유효성 검사 오류","data":{"title":"must not be blank","content":"must not be blank"}}이렇게 정상적으로 오류 발생 응답이 옵니다. 그런데 assertThrows 테스트코드는 통과하지 못합니다. 그럼 ValidationException이 발생하지 않았다는 뜻인데 응답은 예외가 발생했을 때의 응답입니다. 왜 테스트코드를 통과하지 못하는지 궁금합니다!
-
미해결스프링 핵심 원리 - 기본편
System.out.println("new member = " + member.getName()); System.out.println("findMember = " + findMember.getName()); 콘솔에 출력안되고 Gradle로만 출력되는 현상
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) 안녕하세요!"회원도메인 실행과 테스트" 부분을 듣고 있습니다. 강사님의 코드를 똑같이 따라 작성하고 MemberApp의 테스트를 위해 Run 을 누르니 강사님께서는 System.out.println의 결과가 콘솔에 찍히는데저는 Gradle에서만 확인되더라구요..저는 콘솔창이 아예 없습니다. ㅠ 강사님의 결과 화면저의 결과 화면일단 다음강의로 넘어가지만 그래도 뭔가 찝찝해서검색도 해보고 Chatgpt한테도 물어봤는데 도저히이유를 모르겠어서 질문하게 되었습니다. 저는 spring 3.2.1 버전, java 17버전을 사용중이며 IntelliJ는 유료버전을 쓰고있습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-C 질문입니다
http://boj.kr/f816b7f59d3247c7958683ceae5d6b76선생님 안녕하세요.모든 경우의 수 마다 구역을 색칠해서 dfs가 2번호출되면 최솟값을 갱신하는 로직으로 짰습니다.테스트케이스는 다맞는데 왜 틀리는지 이유를 모르겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의교재p107
if(mp.find(1) == mp.end())이런 반복문 조건이 나오는데요 mp[1]을 할당하지 않기 위해서 이렇게 조건을 쓰신것 같은데요 조건식같은경우는 일단 할당된것이 하나밖에 없으니깐 처음과 끝이같다 그래서 참이다가 맞나요?그런데 그렇게되면 할당을 한것이랑 똑같지 않나요?
-
해결됨언리얼로 만드는 게임사운드 - 중.고급 과정
메타사운드를 활용한 무기 사운드 디자인 3d hit 구현
"메타사운드를 활용한 무기 사운드 디자인" 잘 들었습니다, 알찬 내용 감사합니다, 궁금한것이 있는데요hit 사운드를 거리에 따라 소리가 작어졌다 커졌다는 어찌 하는것 일까요? 저 나름 해봤는데 이 방법이 맞나요? blue print에서 play Sound at Location 으로 연결하고 Get Actor Location 상자를 연결해 주었습니다. attenuation 프리셋값 지정해 주었구요 선생님이 사용하시는 3d사운드 거리별 감쇠 효과에 대해 정보 부탁해요. ㅜㅡㅠ 감사합니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의교재 p106 질문
cout << mp[1] << '\n'; cout << mp2["aaa"] << '\n';이 코드에서요 위의 코드는 key에 1 값에 0을 저장하는 것은 알겠습니다.그리고 두번째 코드에서도 key에 aaa까지는 알겠는데 코드 실행결과를 보면 값이 %가 나와있습니다. 왜 그렇게 값이 나오는건가요?
-
해결됨Google 공인! 텐서플로(TensorFlow) 개발자 자격증 취득
가상환경설정
가상환경설정-윈도우 링크에 Error404가 나오는데 저만 그런것일까요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 부탁드립니다.
강의자료 부탁드립니다. 메일은 wjddus0719bh@naver.com 입니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
딥러닝 수업과 컴퓨터 비전 수업
안녕하십니까 질문이 있어 문의 드립니다.현재 로드맵을 따라 다음과 같은 수업을 신청하여 수강중에 있습니다. 딥러닝 CNN 완벽 가이드 - Fundamental 편딥러닝 컴퓨터 비전 완벽 가이드 컴퓨터 비전 수업을 수강하기 위해서 1번 수업의 'CNN 모델 구현 및 성능 향상 기본 기법 적용하기' 까지만 수강해도 이해가 될지 여쭙습니다.
-
해결됨운영체제 공룡책 강의
window10 이 아니면 안되나요??
윈도우10보다 이상이면 리눅스 프로그래밍 안되는걸까요??
-
미해결TEXTOM SV로 해보는 빅데이터 분석 (정제부터 시각화까지)
concor 분석
UCINET프로그램을 활용한 분석을 교육 영상을 보며 연습하고 있었습니다. concor 분석을 하는 과정에서 input dataset 입력한 후 output dataset을 3가지 입력하는 과정에서 문제가 발생합니다. 폴더를 열면 파일형식에 Datasets로만 뜨네요. 교육 영상처럼Datasets(*.##h)라고 뜨지 않네요. 그래서 오류가 나는 것 같은데...이럴 결우 어떻게 해야 하나요? 폴더 속 문서는 모두(*.##h)로 뜹니다.
-
미해결실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지
인터뷰 예제에 관한 질문입니다.
ex1을 풀기 위해서 코딩을 했는데 어디가 틀렸는지 잘 모르겠습니다 ㅠㅠx를 input으로 받고 만약에 x가 int면 나눴을 때 나머지가 0이면 fizz 출력 0이 아니면 그대로 x 출력하고 int가 아니라면 not integer를 출력하고 싶습니다 x = input()if type(x) == int: if x % 3 == 0: print("fizz") else: print(x)else: print("not integer") 어디가 틀렸는지 알려주시면 감사하겠습니다.
-
미해결Vue3 완벽 마스터: 기초부터 실전까지 - "실전편"
PostForm.vue 분리 문의 드립니다.
PostForm.vue 파일로 컴포넌트 분리 중PostCreateView , PostForm 동작에 대해서 이해가 잘 안가서 문의 드립니다. PostCreateView 에서 PostForm 사용시 title, content 를 v-bind가 아닌 v-model 사용하는것이 어떻게 동작되는지 모르겠습니다. v-model을 사용해도 자식 컴포넌트에서 defineProps 으로 받을 수 있는건가요?PostForm 에서 $emit('update:title', $event.target.value) 하면 상위 컴포넌트에서는 어떤 동작이 발생되는지 궁금합니다.@update 와같이 받는 부부분이 없는데, update:title, update::content 가 어떤 동작을 의미하는지 모르겠습닏다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의교재p104
mp.erase("kundol"); auto it = mp.find("kundol"); if(it == mp.end()){ cout << "못찾겠네 꾀꼬리\n"; } 이 코드결과 "못찾겠네 꾀꼬리"가 실행이 되는데요 제 생각에는 kundol을 erase 했으니 mp에 find를 실행하면 kundol이 없으니깐 0을 반환해서 it이 0이되고 그리고 mp.end는 지금 key값이 3개가 있으니 인덱스값이 2가되서 if반복문이 실행이 안되야하는거 아닌가요?
-
미해결
수강기간 연장 부탁드립니다
안녕하세요 강사님, 회사 업무 병행으로 인해 수강 완료를 하지 못했습니다.기간 연장 부탁드려도 될까요ㅜㅜ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hello와 hello-static.html 의 차이
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 주소창에 입력할 때static 폴더에 있는 hello-static과 index는 확장자 (.html)을 붙여야 하고templates 폴더에 있는 hello는 .html을 붙이면 안되는? 걸로 알고 있는데 이유가 궁금합니다! hello는 th: 문법을 사용해서 그런건가요? 확실하게 이유를 알고 싶습니다 ㅎㅎ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JUNIT5 로 테스트시 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]JUNIT5 최신으로 테스트하고 싶어서 JUNIT5 로 테스트중인데요.12:35 시간에서 테스트중인 내용이, 예외 처리가 반대로 되어 질문드립니다. orderCount=9 면 테스트를 통과하고orderCoumt=11 이면 테스트를 통과하지 못합니다. Stock 초과 예외가 발생해야 테스트가 통과되는거 정상인것이 맞나요?이 조건이 맞다면 아래 코드는 왜 반대로 동작하는지 모르겠어서 질문드립니다 ㅜㅜ @Test public void 상품주문_재고수량초과() throws Exception { Member member = createMember(); ItemBook itemBook = createItemBook("시골 JPA", 10000, 10); int orderCount = 9; orderService.order(member.getId(), itemBook.getId(),orderCount); Assertions.assertThrows(NotEnoughStockException.class,() -> orderService.order(member.getId(), itemBook.getId(),orderCount) );
-
해결됨스프링 부트 - 핵심 원리와 활용
외부 설정 관련 질문 입니다.
[질문 내용]1. 외부 설정 강의에서 스프링이 지원하는 다양한 외부 설정 조회 방법으로 Environment랑 @Value랑 @ConfigurationProperties가 있다고 하셨는데, 이 방식들은 스프링 부트만 제공하는 것이아닌 스프링에서 제공하는 방법들인가요?? Datasource 외부 설정 값을 주입받고 빈으로 등록하는 과정에서 @Configuration을 사용해서 @Bean을 등록하셨는데, Bean을 등록하는 방식으로 @Component사용해서 @ComponentScan을 통해 등록하는 방식도 있는걸로 압니다. 이 두 방식의 차이점이 있을까요?? 언제 @Configuration을 사용하고 언제 @Component를 사용해야할지 감이 잘안잡히네요ㅠㅠ 감사합니다 !!