묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
디바이스 선택이 안됩니다
실행버튼 옆에 select device를 선택하려고 하니 not applicable for the "main.dart" configuration라고 뜨네요 ㅠㅠ
-
미해결실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
helm으로 프로메테우스 설치 시 PVC 관련 질문
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.[질문 하기]helm으로 프로메테우스 설치 시 StorageClass 관련 내용을 정의해주지 않았는데, 어떻게 프로메테우스는 NFS StorageClass를 사용하는 PVC 를 만들어 내나요?
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
사용자모드와 커널모드 피드백
유저 모드에서 I/O 장치들과 같은 특정 리소스에 접근이 불가한 것을 배웠습니다.스레드가 커널 모드가 필요하지 않는 작업을 수행할때도 어쨌든 CPU를 할당받아서 연산을 할 수 있다는 점도 직관적으로 알 수 있도록 그림이 아래와 같이 바뀌면 어떨까요?
-
해결됨[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
marker.d.ts 에러 문제
import {LatLng, MapMarkerProps} from 'react-native-maps'; // marker props의 타입을 변경 declare module 'react-native-maps' { export interface MyMapMarkerProps extends MapMarkerProps { coordinate?: LatLng; } } Interface 'MyMapMarkerProps' incorrectly extends interface 'MapMarkerProps'.Type 'MyMapMarkerProps' is not assignable to type '{ anchor?: Point | undefined; calloutAnchor?: Point | undefined; calloutOffset?: Point | undefined; centerOffset?: Point | undefined; coordinate: LatLng; ... 22 more ...; zIndex?: number | undefined; }'.Types of property 'coordinate' are incompatible.Type 'LatLng | undefined' is not assignable to type 'LatLng'.Type 'undefined' is not assignable to type 'LatLng'.ts(2430)이런 에러가 발생합니다. 강의와 동일하게 했는데 그렇습니다! 아래 질문주신분 답변에 응답이 없어서 다시 질문드리는 점 양해부탁드립니다!
-
미해결카프카 완벽 가이드 - 코어편
OrderDBHandler 에서 데이터가 다 안들어가고 누락이 됩니다.
원인을 찾아보니insertOrders 메소드에서pstmt.executeUpdate();이 부분이 문제입니다.대신에pstmt.executeBatch();이렇게 하니누락된 데이터가 없이다 들어갑니다.
-
미해결사물인터넷 통신은 내 손에 (Arduino, MQTT, Nodejs, MongoDB, Android,VS Code)
몽고DB 사용 이유 문의
보통 정해진 데이터를 받는 경우 SQL을 사용하는 것 같은데 MongoDB를 사용하시는 이유가 따로 있을까요?
-
해결됨[최신] Vue 강의 끝판왕 : Nuxt 3 완벽 마스터
.eslintrc.cjs 설정시 반대로 되는데, 혹 왜 이런지 아시는지요?
vscode와 eslint를 자주 사용하는데.. 이번에 이상해서 질문 드립니다.. ㅡ.ㅜ;우선 강의 내용대로 설정을 하고 있는데.. workspace에 vscode의 settings.json로 생성해서 알려주신거 붙여넣기 하고...eslintrc.cjs 파일로 이동해서 ctrl+s로 저장을 하면 space->tab으로, 싱글쿼터가 더블쿼터로 바뀝니다.즉, 반대로 되는거죠.. 'prettier/prettier': [ 'error', { arrowSpacing: ['error', { before: true, after: true }], singleQuote: true, semi: true, useTabs: false, tabWidth: 2, trailingComma: 'all', printWidth: 80, bracketSpacing: true, arrowParens: 'always', endOfLine: 'auto', }, ],강의 교안 그대로 붙여넣기 해서 하고 있는데.. 이처럼 설정되어 있는데.. 왜 이런지 혹시 아실까요?? 이전부터 싱글쿼터에 useTabs는 false로 해서 코딩하고 있으며, vscode의 전체의 settings.josn에는 eslint 관련된 것은 없습니다.물론 위 설정에서 그냥 useTabs를 true로 하고, singleQuote를 false로 하면 정상적으로 작동 할거 같기는 한데.. 왜 이런지는 꼭 알고 싶어서 적어봅니다.설정등은 교안 그래도 했는데.. 혹 패키지 버전이나 그런 문제로 이런 문제가 발생할 수도 있을까요??혹 짚히시는게 있을까 싶어 질문 올려 봅니다..
-
해결됨자바스크립트로 알아보는 함수형 프로그래밍 (ES5)
_go함수 _pipe.apply(null, fns) 사용하는 이유
질문1. go 함수에서 apply의 쓰임 제가 알고 있는 apply는 this바인딩 때문에 사용하는것으로 알고 있습니다. 여기서는 array-like를 array로 바꿔주는 것으로 쓰이는것 같아요?? 물어보고싶은것은 apply의 기능 1. this바인딩 때문에 사용 호출함수에서 array-like를 array로 기능하도록해준다이렇게 두 가지 기능을 한다 라고 정의를 하면 될까요??
-
미해결STM32 CAN 통신
외부 ST LINK/V2 핀맵 질문
안녕하세요.외부 ST LINK/V2 핀맵연결과 문의가 있습니다.강의 5페이지의 표 2-1을 보시면 "보드 CN7"이 보드의 CN7 영역인 것은 찾았지만, PA13(SWDIO)와 PA14(SWCLK) 라고 써져있는 부분은 보지 못했습니다. 또, ST LINK/V2에도 아예 번호와 이름이 써져있지 않은데, 어떤식으로 연결해야할 지 알고 싶습니다.좋은 강의 정말 감사드립니다.
-
해결됨Flutter로 SNS 앱 만들기
섹션2 TextFormField/ElevatedButton/TextButton사용에서
섹션2 회원가입TextFormField/ElevatedButton/TextButton사용에서 회원가입 버튼이 radius가 먹고 있는데 어디서 먹고 있는지 모르겠습니다. 안드로이드 업그레이드 하면서 이러네요. 메일 보냈습니다.
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
자바 스프링 개발자입니다.
안녕하세요. 강의 너무 잘듣고있습니다. node 기반의 강의이기에 pm2 등의 내용을 듣고있던 중, 궁금한 부분이 있어 문의드립니다.1개의 vm에서 pm2을 사용하여 nodejs app을 2개를 올리고 있습니다. 제 생각에는 nodejs가 싱글스레드여서 vm의 cpu 개수만큼 사용하기 위해서 app을 여러 개를 띄운다로 이해하였습니다. 맞을까요?맞다면, 스프링의 경우에는 멀티스레드로 제공하기 때문에 위와 같이 1개의 vm에 여러개의 app을 띄울 필요가 없이 1개의 vm에 1개의 app만 띄우면 위와 같은 동작을 기대할 수 있다고 생각했습니다. 맞을까요?1개의 vm에서 여러 개의 스프링부트 app을 띄워야한다면 pm2와 같은게 필요한거 같은데, 스프링에서 pm2와 같은게 있을까요?노드 기반 강의이기에 조금 아쉬운 부분은 있지만, 강의 재밌게 듣고있습니다. 감사합니다!
-
미해결김영한의 실전 자바 - 중급 1편
지역 클래스를 익명 클래스로 바꿀 때
익명 클래스를 사용할 때는 상위 클래스가 필요하다고 하셨는데, 만약 어떤 지역 클래스를 익명 클래스로 만드려고 하는데 해당 지역 클래스에서 implements 또는 extends 하는 게 없다면 익명 클래스를 만들 때 new Object() { ... }로 해야 하는 건가요?
-
미해결
스프링부트 그레이들과 메이븐 개발
안녕하세요 현재 그레이들 빌드로 스프링부트 공부를 하고 있는데 그 전에 메이븐으로 의존성 설정만 하고 조금 해본 기억 밖에 없네요 둘의 차이를 알고 있는 것은 그레이들이 캐시를 사용하고 속도면에서 그레이들이 우세하며 필요한 의존성 주입도 짧아서 좋다는 것인데 제일 궁금한 것이 스프링부트로 개발을 할 때 그레이들과 메이븐의 차이가 있을까요?가령 애노테이션이 서로 다르다거나 스프링 mvc 자체가 사용법이 다른 것이 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-M 반례 질문
안녕하십니까 큰돌님정답 맞추긴 했는데 틀렸던 코드 중에서 반례가 무엇이 있는지 궁금해서 질문드립니다.http://boj.kr/72c2759cc7fc49bc81d88d5c5cdbdd17
-
미해결김영한의 실전 자바 - 중급 1편
지역 클래스 인스턴스 생성 전에 지역변수의 값 변경
public class LocalOuterV4 { public Printer process(int paramVar) { int localVar = 1; class LocalPrinter implements Printer { @Override public void print() { System.out.println("localVar = " + localVar); // 지역클래스가 접근하는 지역변수 (1) System.out.println("paramVar = " + paramVar); // 지역클래스가 접근하는 지역변수 (2) } } paramVar = 20; localVar = 10; Printer printer = new LocalPrinter(); // 지역 클래스의 인스턴스를 생성할 때, 지역 클래스가 사용하는 지역변수를 캡쳐해서 멤버로 포함시킨다. return printer; } }위 코드와 같이 LocalPrinter 인스턴스를 생성하기 전에 paramVar와 localVar의 값을 수정하려고 했습니다. 그러면 지역변수 캡쳐 전이니까 2, 1이 아닌 바뀐 20, 10을 캡쳐해서 지역 클래스의 인스턴스에 포함시키면 되겠다고 생각했습니다.그런데, paramVar와 localVar의 값을 수정하는 코드를 new LocalPrinter()의 이후에 적든, 이전에 적든에 관계없이 컴파일 오류가 발생합니다.제가 생각한 이유는 이미 자바 차원에서, 지역클래스가 사용 중인 지역변수는 값이 바뀌는 것 자체를 막아두었기 때문이라고 생각합니다. 제 생각이 맞는지 알려주시면 감사하겠습니다
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
실제 안드로이드 스토어에 배포할려면?
혹시 실제 안드로이드 스토어에 배포할려면 어떤 강의를 들어야 할까요?
-
미해결스프링 핵심 원리 - 기본편
test 오류를 못찾겠습니다..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. https://drive.google.com/file/d/1eaGwuFK0ptwt7-5tXkKBmLXL6c_8wVCr/view?usp=drive_link
-
해결됨코딩테스트 [ ALL IN ONE ]
bfs 시간복잡도 관련 질문입니다!
안녕하세요! 열심히 수강하다가 질문이 생겨 작성하게 되었습니다:> '''질문 : 이 함수의 시간복잡도는 O(n^3)인가?'''def bfs(graph, start_v): visited = [start_v] queue = deque(start_v) while queue: cur_v = queue.popleft() for v in graph[cur_v]: if v not in visited: visited.append(v) queue.append(v) return visited 위의 코드를 템플릿처럼 외우라고 하신 함수 시간복잡도가 궁금합니다!제가 생각하기로는 n(vertax의 수만큼 while문 실행) x n(for문) x n(리스트 in 연산자 수행) -> O(n^3) 이라고 생각하는데 이게 맞는걸까요??
-
해결됨Next + React Query로 SNS 서비스 만들기
무한 스크롤 prefetch SSR 로그인 쿠키 관련 질문
안녕하세요 제로초님,api/users/{id} 에서 Followers 데이터는제가 상대방을 팔로잉 했고 로그인 정보 쿠키가 잘 전달되면상대방의 팔로워 수와 관계없이 제가 팔로우 했다면 저의 userId만 배열에 담겨서 돌아오기 때문에 api/posts/followings 혹은 api/posts/recommends의Comments 데이터도 이와 동일할 것이라고 생각했습니다. 추천 포스트는 prefetch를 진행하고(Suspense를 적용하지 않음)팔로잉 포스트는 SSR을 할 때 서버에서 로그인 여부를 판단하는 쿠키를 함께 보내야 하기 때문에prefetch에서는 next의 cookies를 사용해서 쿠키를 전달했습니다.하지만 Comments 배열에 로그인 유저가 아닌 다른 유저의 id도 함께 날라옵니다. 추천 포스트가 아닌 팔로잉 포스트는 useSuspenseInfiniteQuery를 사용했는데로그인 유저의 id만 잘 전달받았습니다. 이게 Suspense 내부에 있어서 그런가 싶어서Suspense를 걷어내고 prefetch만 사용했을 때도동일하게 로그인 유저가 아닌 다른 유저의 id도 확인할 수 있었습니다.왜 로그인 쿠키를 보내는데도 다른 유저의 정보도 날라오는지 궁금합니다.어디가 잘못된 것일까요?useSuspenseInfiniteQuery를 사용한 팔로잉 포스트는 추천 포스트와 어떤점이 달라서 정상 작동한 것일까요?추가) 이 글 작성하고 추천 포스트에도 useSuspenseInfiniteQuery를 적용했는데 팔로잉 포스트처럼 안 나오고 이전과 동일하게 다른 유저의 id도 함께 날라오는데 왜 그럴까요? 추천 포스트 결과현재 로그인 한 유저의 id는 'jihwan3'Comments에 'jihwan2'도 함께 날라오는중 팔로잉 포스트 결과현재 로그인 한 유저의 id는 'jihwan3'Comments에 'jihwan3'만 날라오는 중Hearts도 jihwan3가 좋아요를 안 눌러서 비어있는 모습page.tsximport { Suspense } from "react"; import { auth } from "@/auth"; import { Container } from "./_component/styled"; import HomeTab from "./_component/HomeTab"; import HomeTabProvider from "./_component/HomeTabProvider"; import PostForm from "./_component/PostForm"; import SuspenseDecider from "./_component/SuspenseDecider"; import Loading from "../_component/LoadingUI"; export default async function Home() { const session = await auth(); return ( <Container> <HomeTabProvider> <HomeTab></HomeTab> <PostForm me={session} /> <Suspense fallback={<Loading />}> {/* @ts-expect-error Server Component */} <SuspenseDecider /> </Suspense> </HomeTabProvider> </Container> ); } SuspenseDecider.tsximport { QueryClient, HydrationBoundary, dehydrate } from "@tanstack/react-query"; import getRecommendPosts from "../_lib/getRecommendPosts"; import getRecommendPostsServer from "../_lib/getRecommendPostsServer"; import PostDisplay from "./PostDisplay"; export default async function SuspenseDecider() { const queryClient = new QueryClient(); await queryClient.prefetchInfiniteQuery({ queryKey: ["posts", "recommends"], queryFn: getRecommendPostsServer, initialPageParam: 0, getNextPageParam: (lastPage, pages) => lastPage.at(-1)?.postId, pages: 1, }); return ( <HydrationBoundary state={dehydrate(queryClient)}> <PostDisplay /> </HydrationBoundary> ); }getRecommendPostsServer.tsimport { QueryFunction } from "@tanstack/query-core"; import { Post as IPost } from "@/model/Post"; import { cookies } from "next/headers"; type Prop = { pageParam: number; }; const getRecommendPostsServer: QueryFunction<IPost[], [_1: string, _2: string], number> = async ({ pageParam }: Prop) => { const response = await fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/api/posts/recommends?cursor=${pageParam}`, { method: "get", headers: { Cookie: cookies().toString(), }, }); if (response.ok) return response.json(); else throw new Error(); }; export default getRecommendPostsServer;postDisplay.tsx"use client"; import { use } from "react"; import { TabContext } from "./HomeTabProvider"; import RecommendPosts from "./RecommendPosts"; import FollowingPosts from "@/app/(afterLogin)/home/_component/FollowingPosts"; export default function PostDisplay() { const { selectedMenu } = use(TabContext); if (selectedMenu === "recommend") { return <RecommendPosts />; } return <FollowingPosts />; } RecommendPosts.tsx"use client"; import { useEffect, Fragment } from "react"; import { InfiniteData, useInfiniteQuery } from "@tanstack/react-query"; import { useInView } from "react-intersection-observer"; import getRecommendPosts from "../_lib/getRecommendPosts"; import Post from "../../_component/Post"; import { Post as IPost } from "@/model/Post"; export default function RecommendPosts() { const { isFetching, fetchNextPage, hasNextPage, data } = useInfiniteQuery<IPost[], Object, InfiniteData<IPost[]>, [_1: string, _2: string], number>({ queryKey: ["posts", "recommends"], queryFn: getRecommendPosts, initialPageParam: 0, getNextPageParam: (lastPage) => lastPage.at(-1)?.postId, }); const { ref, inView } = useInView({ /* Optional options */ threshold: 0, delay: 100, }); useEffect(() => { if (inView) !isFetching && hasNextPage && fetchNextPage(); }, [inView, isFetching, hasNextPage, fetchNextPage]); if (!data) return null; // 이거 에러는...? type error인데.. -> InfiniteData로 해결 return ( <> {data.pages.map((ele: IPost[], idx: number) => ( <Fragment key={idx}> {ele.map((post: IPost) => ( <Post key={post.postId} post={post}></Post> ))} </Fragment> ))} <div ref={ref} style={{ height: "50px" }}></div> </> ); } getRecommendPost.tsimport { QueryFunction } from "@tanstack/query-core"; import { Post as IPost } from "@/model/Post"; type Prop = { pageParam: number; }; const getRecommendPosts: QueryFunction<IPost[], [_1: string, _2: string], number> = async ({ pageParam }: Prop) => { const response = await fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/api/posts/recommends?cursor=${pageParam}`, { method: "get", credentials: "include", }); if (response.ok) return response.json(); else throw new Error(); }; export default getRecommendPosts; FollowingPosts.tsx"use client"; import { Fragment, useEffect } from "react"; import { useSuspenseInfiniteQuery, InfiniteData } from "@tanstack/react-query"; import { useInView } from "react-intersection-observer"; import getFollowingPosts from "../_lib/getFollowingPosts"; import Post from "../../_component/Post"; import { Post as IPost } from "@/model/Post"; export default function FollowingPosts() { const { isFetching, fetchNextPage, hasNextPage, data } = useSuspenseInfiniteQuery<IPost[], Object, InfiniteData<IPost[]>, [_1: string, _2: string], number>({ queryKey: ["posts", "followings"], queryFn: getFollowingPosts, initialPageParam: 0, getNextPageParam: (lastPage, allPages, lastPageParam, allPageParams) => lastPage.at(-1)?.postId, }); const { ref, inView } = useInView({ threshold: 0, delay: 100, }); useEffect(() => { if (inView) !isFetching && hasNextPage && fetchNextPage(); }, [inView, fetchNextPage, hasNextPage, isFetching]); if (!data) return null; return ( <> {data.pages.map((ele: IPost[], idx: number) => ( <Fragment key={idx}> {ele.map((ele) => ( <Post key={ele.postId} post={ele}></Post> ))} </Fragment> ))} <div ref={ref} style={{ height: "100px" }}></div> </> ); }
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘
적 AI 길찾기 중 겹쳐지는 문제, 충돌 회피 관련 질문
안녕하세요 좋은 강의 감사합니다. 다름이 아니라 현재 개인 프로젝트에서 적 AI 길찾기를 구현한 상태입니다. 그런데 여기서 문제가 적 객체가 여러마리일 경우 결국 모든 적의 도착지가 플레이어로 같기 때문에 겹쳐지는 문제가 발생한다는 것입니다. 다른 게임 엔진에서는 NavMesh로 Obstacle Avoidance를 통해 적들끼리도 겹쳐지지 않도록 할 수 있다는데 현재 NavMesh가 아닌 2D 배열로 AStar를 구현한 상태에서 어떻게 적들이 서로 겹쳐지지 않도록 구현할 수 있을까요? 적 겹쳐짐 문제에 대한 마땅한 해결 방법이 떠오르지 않아 선생님의 고견을 여쭙고자 이렇게 글 남깁니다. 감사합니다.