묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Google Drive 에서 Colaboratory 항목이 안보이는 경우
연결할 앱 더보기에서 검색해서 연결을 해주면 됩니다
-
미해결Next + React Query로 SNS 서비스 만들기
무한스크롤 구현시 발생하는 문제
강의 수강중에, 배운 무한스크롤을 바탕으로 개인 프로젝트를 진행중입니다. 위의, 데이터를 받아오는 것을 보면, 처음에는 2개를 불러오고, 그 이후에는 계속 5개를 불러오는데, 제가 원하는 방식은 처음부터 끝까지 5개씩 계속 일정하게 불러오는 것을 원합니다. 이유를 찾을려고 여러가지 검색을 해보며 해봤는데도, 해결되지않아서 질문드립니다. 이 경우 의심해볼 수 있는 부분은 어떤 부분이 있을까요?최상위 페이지에서 아래와 같이 prefetch를 해오고type HomeProps = { params: { category: string; }; }; const CategoryDetailPage: React.FC<HomeProps> = async ({ params }) => { const { category } = params; const queryClient = new QueryClient(); const college = category; // 서버에서 불러온 데이터를 클라이언트의 리액트 쿼리가 물려받음.(하이드레이트) await queryClient.prefetchInfiniteQuery({ queryKey: ['posts', college], queryFn: ({ pageParam = 1 }) => getFilteredPosts(college, { pageParam }), // searchParams 전달 // 커서 값 initialPageParam: 0 }); // hydrate라는 것은 서버에서 온 데이터를 클라이언트에서 그대로, 물려받는 것 이다. const dehydratedState = dehydrate(queryClient); return ( <HydrationBoundary state={dehydratedState}> <Container> <ListingContainerTest /> </Container> </HydrationBoundary> ); }; export default CategoryDetailPage; 실제 무한스크롤을 사용하는 곳은 아래와 같이 사용하고 있습니다.'use client'; import { getFilteredPosts } from '@/app/lib/getFilteredPosts'; import { useInfiniteQuery } from '@tanstack/react-query'; import { usePathname } from 'next/navigation'; import { Fragment, useEffect } from 'react'; import { useInView } from 'react-intersection-observer'; import ClimbingBoxLoader from 'react-spinners/ClimbingBoxLoader'; import EmptyState from '../EmptyState'; import ListingGrid from './ListingGrid'; const ListingCard = () => { const path = usePathname(); // ['', chss] const college = path.split('/')[1]; const { data: listings, fetchNextPage, hasNextPage, isFetching, isError } = useInfiniteQuery({ queryKey: ['posts', college], queryFn: ({ pageParam = 1 }) => getFilteredPosts(college, { pageParam }), initialPageParam: 0, // 가장 최근에 불러왔던 게시글 getNextPageParam: (lastPage) => lastPage.studyList.at(-1)?.id, staleTime: 60 * 1000, gcTime: 300 * 1000 }); // lastPage.jobList.at(-1)?.id, const { ref, inView } = useInView({ // div가 보이고나서 몇픽셀 정도의 이벤트가 호출될 것 인가? 보이자마자 바로 호출.그래서0 threshold: 0, // 몇초후에 딜레이 보일것인지. delay: 0 }); console.log(listings); useEffect(() => { if (inView) { !isFetching && hasNextPage && fetchNextPage(); } }, [inView, isFetching, hasNextPage, fetchNextPage]); if (isError || listings?.pages?.length === 0) { return <EmptyState />; } return ( <> <div className="pt-24 grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6 gap-8"> {listings?.pages.map((page) => // Assuming each page has a 'studyList' property page.studyList.map((listing: any) => ( <Fragment key={listing.id}> <ListingGrid data={listing} /> </Fragment> )) )} <div ref={ref} style={{ height: 50 }}></div> </div> {isFetching && ( <div className="flex items-center justify-center"> <ClimbingBoxLoader color="#36d7b7" size={20} /> </div> )} </> ); }; export default ListingCard;
-
미해결그림으로 쉽게 배우는 네트워크
스위치 강의 중 질문있습니다.
4분 전후로... 스위치에 맥 주소 table이 있을 때,pc4가 pc1로 파일을 보낼 때 맥주소는 앞에 연결된 허브의 주소를 가지고 있는거 아닌가요??어떻게 1번인지 알고 바로 보내나요??이런 이유로, 1,2번 pc 로는 스위치가 바로 콕찝에 보낼 수 없는게 아닌가 긍금합니다.
-
미해결실전! Querydsl
쿼리..질문
안녕하세요,,김영한님 강의를 열혈 수강하고 있는 김주영이라고합니다.. 다름아니라, 제가 개인 프로젝트 중 아래 쿼리문을 작성을 했는데DB조회 개수가 7개 일때, 아래의 쿼리를 실행시키면 select User문에서 쿼리가 7번 나가더라구요,, 도통 이유를 모르겠어서 질문 드립니다..@Query("select distinct new ..패키지명...user.UserScrapUserQueryDto(us, coalesce(scrap.status, false), us.selectedFirstAt) " + "from User us " + "left join fetch Work work on work.user.id = us.id " + "left join fetch UserScrap scrap on scrap.targetId = us.id and scrap.user.id = :userId " + "where us.userStatus = 'PERMITTED' and " + " us.id not in (select block.targetId from Block block where block.user.id = :userId and block.status = true) " + "and us.id != :userId and us.role = 'USER' " + "order by us.selectedFirstAt desc")내 userid에 해당하는 user는 제외,block한 유저는 제외,UserScarp과 Work는 fetch join으로 갖고오는 쿼리인데, 혹시 왜 select절이 DB 반환 개수만큼 나오는지 알려주실 수 있을까요? ㅠㅠ 아래처럼 쿼리가 한번 나간 후에Hibernate: select distinct user0_.user_id as col_0_0_, coalesce(userscrap2_.status, false) as col_1_0_, user0_.selected_first_at as col_2_0_ from "user" user0_ left outer join "work" work1_ on ( work1_.user_id=user0_.user_id ) left outer join "user_scrap" userscrap2_ on ( userscrap2_.target_id=user0_.user_id and userscrap2_.user_id=? ) where user0_.user_status='PERMITTED' and ( user0_.user_id not in ( select block3_.target_id from "block" block3_ where block3_.user_id=? and block3_.status=true ) ) and user0_.user_id<>? and user0_.role='USER' order by user0_.selected_first_at desc select 쿼리로 db에서 갖고온 개수만큼 반환합니다.. Hibernate: select user0_.user_id as user_id1_7_0_, user0_.created_at as created_2_7_0_, user0_.modified_at as modified3_7_0_, user0_.behance as behance4_7_0_, user0_.detail as detail5_7_0_, user0_.device_token as device_t6_7_0_, user0_.email as email7_7_0_, user0_.first_work_id as first_wo8_7_0_, user0_.info as info9_7_0_, user0_.instagram as instagr10_7_0_, user0_.magazine_view_count as magazin11_7_0_, user0_.notion as notion12_7_0_, user0_.role as role13_7_0_, user0_.scrap_count as scrap_c14_7_0_, user0_.selected_first_at as selecte15_7_0_, user0_.tag as tag16_7_0_, user0_.user_name as user_na17_7_0_, user0_.user_status as user_st18_7_0_, user0_.view_count as view_co19_7_0_, user0_.work_thumb_nail as work_th20_7_0_ from "user" user0_ where user0_.user_id=? 답변 주시면 정말 감사하겠습니다..
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일대다 단방향 의문점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 중 정리가 잘 되지 않아서 확인차 질문을 남깁니다. 설명에 MEMBER 테이블에 id, name이TEAM 테이블에 id, name, members가 존재하는데 이건 객체 관점에서는 존재하지만 DB관점에서 FK가 MEMBER 테이블에 존재할 수 밖에 없어다른 형태로 즉, MEMBER 테이블에 TEAM_ID 속성이 생성되는걸로 확인이 됩니다. 여기서 FK가 MEMBER 테이블에 존재할 수 밖에 없는 이유는 TEAM테이블에 FK 존재 시 FK가 다수의 값을 가지게 되어서 존재가 불가능한 것인지, 맞다면 그렇기 때문에 @JoinColumn(name = "TEAM_ID") 어노테이션을 사용하면 JPA에서 자동적으로 MEMBER테이블에 TEAM_ID 컬럼을 생성하는 건지 확인하고자 질문을 남깁니다.
-
미해결스프링 배치
incrementer 관련 구현체 생성 시 질문
안녕하세요 강사님 강의 정말 잘 듣고 있습니다! 스프링부트에서 기본 제공하는 RunIdIncrementer에서 마지막 반환값 코드를 보면 return new JobParametersBuilder(params).addLong(this.key, id).toJobParameters(); 기존 paramers에 파라미터를 새롭게 add해주는 것으로 보이는데, 수업 10분쯤, 커스텀 클래스에서는 return new JobParametersBuilder().addString("run.id", id).toJobParameters();이렇게 JobParametersBuilder 안에 params를 넣어주지 않았는데 왜 잘 동작하는 지 궁금합니다! 제가 이해를 못 했거나, 빠트린 부분이 있을까요~?
-
미해결홍정모의 따라하며 배우는 C++
함수 포인터 질문
std::function<bool(const int&)> fcnptr = isEven; cout << fcnptr << endl;이 방식의 초기화에서는 오류가 뜨고bool(*fcnptr)(const int&) = isEven; cout << fcnptr << endl;이 초기화에서는 오류가 안 뜨는 이유가 궁금합니다. 뜨는 에러 :E0349 no operator matches these operands
-
해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
class interface 질문
안녕하세요 제로초님 다른 비슷한 질문에서 다음과 같은 답변을 하셨어요 런타임에 있어서 런타임에도 타입체크를 수행하길 원하면 class로 선언하면 되고, 런타임에는 없길 원하면 interface를 쓰시면 됩니다. 런타임이 실제 코드가 실행될때라고 이해하고 있는데 런타임에 타입체크등 코드가 남아있으면 좋은점이 와닿지 않아서요!실제로 어떤 경우에 런타임에 코드가 남아있서서 좋은지, 타입체크가 되면 좋은지 여쭤봐도 될까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
a.cpp
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. a.cpp 파일을 visual studio code로 만들면 되는걸까요?
-
미해결김영한의 실전 자바 - 기본편
Static 변수 값 관리 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]static 변수 강의를 듣고 코드를 만져보다가 궁금증이 발생하여 문의드립니다.특정 인스턴스(Data)를 생성하여 필드값 초기화시 필드값을 static변수(Data.staticCount)로 선언 후 또다른 static변수(StaticData.staticCount) 값으로 초기화 했습니다. 그 후 StaticData.staticCount 값을 증가하는 코드를 추가하였는데요,여기서 의문점이 인스턴스를 새로 생성할때마다 Data.staticCount 변수의 값은 증가된 또다른 static 변수의 값으로 수정이 되어야한다고 생각이 되는데 로그로 확인해보면 증가가 되지 않습니다. 혹시 어떤 이유 때문일까요? 아래에 코드내용과 로그 첨부드립니다.Main Class :package staticVariable; public class StaticVariableMain { public static void main(String[] args) { StaticData.staticCount = 1; Data data1 = new Data("data1"); System.out.println("data1 staticCount : " + Data.staticCount); Data data2 = new Data("data2"); System.out.println("data2 staticCount : " + Data.staticCount); } }*로그내용 : Data Class :package staticVariable; public class Data { String name; static int staticCount = StaticData.staticCount; public Data(String name) { this.name = name; System.out.println("StaticData.staticCount : " + StaticData.staticCount); System.out.println("Data.staticCount : " + staticCount); StaticData.staticCount++; } } Static Classpackage staticVariable; public class StaticData { static int staticCount; }
-
해결됨Flutter로 SNS 앱 만들기
firebase collection 및 사진 등록 문제
강사님 강의 잘 듣고 있습니다. 근데 오류 난 거 없이 잘 따라가고 있는데 collection에서 users가 생성이 안되고, 사진이 안 나옵니다. 사진 안 나왔을 때 코드 긁어서 넣었는데도 안 나오는데,혹시 firebase test기간 30일이 지나서 그런가요?..
-
해결됨한 입 크기로 잘라먹는 타입스크립트(TypeScript)
PromiseUnpack<Promise<number>> 코드 질문드립니다.
type PromiseUnpack<T> = T extends Promise<infer R> ? R : never; type PromiseA = PromiseUnpack<Promise<number>>; // number타입 type PromiseB = PromiseUnpack<Promise<string>>; // string타입안녕하세요 선생님. 8:40~부터 나오는 실습코드입니다.타입스크립트의 타입 정의에 관해 헷갈리는 개념이 있습니다.PromiseUnpack<Promise<number>>에서 Promise는 정의해주지 않았는데 갑자기 나오는 이유가 궁금합니다.type Promise = 블라블라이게 없어서 궁금합니다. Promise라는 타입을 정의해준 적은 없지만 '그런 타입이 존재하는구나' 라고 타입스크립트에서 추론이 되어 Promise의 타입 정의 없이 예시로 코드를 작성하신 것일까요??
-
미해결Next + React Query로 SNS 서비스 만들기
클라이언트 컴포넌트 서버 컴포넌트 질문
클라이언트 사이드 렌더링, 서버 사이드 렌더링이 클라이언트 컴포넌트 서버 컴포넌트인가요?예전에 사용한 getserversideprops() 이거는 이젠 안쓰는건가요?그러면 use client를 선언하면 csr 이고 사용하지 않으면 ssr인가요?
-
미해결루커 스튜디오(구글 데이터 스튜디오)로 배우는 데이터 시각화 입문
일일 보고서 작성 관련 문의
안녕하세요. 구글스프레드시트 데이터가 매일 오전 5시에 추가됩니다.데이터가 추가되는 경우 보고서도 자동으로 갱신되는 건가요? 아니면 별도 설정이 필요한가요? 위 내용을 문의 드립니다. 감사합니다 ^^
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
queue를 통해 풀순 없을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/783d87e6fdf94af598c1204fe09a8c3b 반례주시면 감사하겠습니다..왜 오답인지 모르겠습니다..
-
미해결따라하며 배우는 리액트 네이티브 기초
키보드 숫자 키패드의 Enter 기능이 작동하지 않는 문제
const InputForm = () => { const [currentValue, setCurrentValue] = useState(""); const dispatch = useDispatch(); const handleSubmit = () => { if (currentValue !== "") { dispatch(addTodo(currentValue)); setCurrentValue(""); } }; return ( <KeyboardAvoidingView behavior={Platform.OS === "ios" ? "padding" : "height"} style={styles.addFormcontainer} > <TextInput placeholder='할 일을 작성해주세요.' style={styles.inputField} value={currentValue} onChangeText={setCurrentValue} onSubmitEditing={handleSubmit} /> <Pressable style={styles.addButton} onPress={handleSubmit}> <Text style={styles.addButtonText}>+</Text> </Pressable> </KeyboardAvoidingView> ); }; export default InputForm;현재 안드로이드 스튜디오 에뮬레이터 사용 중입니다.onSubmitEditing을 통해 키보드에서도 Enter를 사용해 handleSubmit 함수를 사용할 수 있도록 구현했지만 키보드 숫자 키패드의 Enter를 사용하면 handleSubmit 함수가 실행되지 않습니다. 숫자 키패드의 Enter를 통해서도 handleSubmit 함수가 실행되도록 하려면 어떻게 코드를 작성해야 하나요?
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
2:46 created 가... init() 메소드와 상관관계..?
최초 한번만 실행되는 메소드처럼 보이는데... 맞습니까?
-
미해결
데이터 베이스 강의는 언제 올라오나요?
안녕하세요 김영한 강사님의 강의를 쭉 듣고있는 학생입니다.2024년도 초에 데이터 베이스 강의가 나올 것이라는 것을 어디서 봤는데 혹시 언제 강의가 올라오는지 궁금합니다.항상 수업 잘듣고 있습니다 감사합니다.
-
미해결스프링 핵심 원리 - 기본편
CoreApplication 실행시 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예강의초반의 설명에 따라 hello.core.CoreApplicaton을 실행하니MemberServiceImpl에서 생성자가 1개의 bean을 필요로 하는데 두개의 bean이 찾아졌다고 합니다. Description에따라 MemberServiceImpl, MemoryMemberRepository, AppConfig를 확인해보았지만강의와 다른 점을 찾지 못해 해결하지 못하였습니다. Action에 적힌 것처럼 @Primary를 붙이거나 @Qualifier을 붙여서 해결해야 하는 건가요?MemberServiceImplAppConfigMemoryMemberRepositoryAutoAppConfig
-
해결됨Slack 클론 코딩[실시간 채팅 with React]
중첩 라우팅 관련
안녕하세요. v6 업데이트 후 중첩 라우터 문제가 있어 질문 드립니다.로그인 성공 시, http://localhost:3090/workspace/channel 로 이동하게 하였는데 workspace 컴포넌트에서 channel 컴포넌트를 호출하도록 중첩 라우팅 처리한 부분이 동작하지 않습니다. Workspace/index.tsximport fetcher from '@utils/fetcher'; import React, { FC, useCallback } from 'react'; import useSWR from 'swr'; import axios from 'axios'; import { Redirect, Switch } from 'react-router'; import { BrowserRouter, Routes, Route, useNavigate, Navigate, Outlet } from 'react-router-dom'; import { Header, RightMenu, ProfileImg, ProfileModal, LogOutButton, WorkspaceWrapper, Chats } from '@layouts/Workspace/styles'; import gravatar from 'gravatar'; import loadable from '@loadable/component'; const Channel = loadable(() => import('@pages/Channel')); const DirectMessage = loadable(() => import('@pages/DirectMessage')); const Workspace : FC = ({children}) => { const { data, error, mutate } = useSWR('http://localhost:3095/api/users', fetcher); // 전역 const onLogout = useCallback(() => { axios .post('http://localhost:3095/api/users/logout', null, { withCredentials: true, }) .then(() => { mutate(false); }); }, []); if (!data) { console.log('data', data); return <Navigate to="/login" replace />; } console.log("workspace page rendering"); return ( <Chats> <div>테스트</div> <Routes> <Route path="/channel/:channel" element={<Channel />} /> <Route path="/dm/:id" element={<DirectMessage />} /> </Routes> </Chats> ); } export default Workspace; pages/index.tsximport React from 'react'; import { Container, Header } from './styles'; const Channel = () => { console.log("channel page rendering"); return ( <div>채널!</div> ); } export default Channel; App/index.tsx import React from 'react'; import loadable from '@loadable/component'; import { Redirect } from 'react-router'; import { Routes, Route, Navigate, BrowserRouter } from 'react-router-dom'; const LogIn = loadable(() => import('@pages/LogIn')); const SignUp = loadable(() => import('@pages/SignUp')); const Workspace = loadable(() => import('@layouts/Workspace')); const App = () => { return ( <Routes> <Route path="/" element={<Navigate replace to="/login" />} /> <Route path="/login" element={<LogIn />} /> <Route path="/signup" element={<SignUp />} /> <Route path="/workspace/:workspace/*" element={<Workspace />} /> </Routes> ); }; export default App; http://localhost:3090/workspace/channel로그인에 성공하여 위의 주소로 이동 시, 테스트 라는 글씨만 표시되고 채널! 이라는 글씨가 표시되지 않습니다.코드는 공지사항에 있는 링크와 동일하게 작성을 하였는데 잘못 처리한 부분이 있을까요? 바쁘실텐데 확인 한번 해주시면 감사하겠습니다.