묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
아이패드에서 2강부터 재생 불가
Part.4 게임플레이 어빌리티 시스템 2강 캐릭터와 입력 시스템부터 재생이 안됩니다.다른 파트는 정상적으로 재생됩니다..검색해보니까 인프런에 유사한 증상을 겪는 유저가 종종 있는것 같은데, 한번 살펴봐 주십시오. 실행환경: 아이패드 프로11 3세대브라우저: 크롬과 웨일 (일반/시크릿 모드에서 테스트)
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강연장부탁드립니다.
안녕하세요수강신청을 하고 수강을 하고 있었던 중에 프로젝트에 투입되면서 수강이 중간에 지연되었습니다.올해 말까지는 꼭 강의들으면서 따고싶은데 수강 기간을 연장할 수 있을까요?부탁드리겠습니다.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
(*문제 풀이)1090 테스트케이스 1번 C++
#include <iostream>#include <vector>#include <algorithm>#include <numeric>#include <string>using namespace std;int main(){ int answer = 0; int n; cin >> n; vector<pair<int,int>> pos(n); for (int i = 0; i < n; ++i) { cin >> pos[i].first >> pos[i].second; } vector<int> result(n,-1); // k번쨰 칸에 들어갈 경우 // 한 집을 정해서 최소 거리를 구한다 for (int i = 0; i < n; ++i) { vector<int> temp; for (auto p2 : pos) { int distance = abs(pos[i].first - p2.first) + abs(pos[i].second - p2.second); temp.push_back(distance); } sort(temp.begin(), temp.end()); int cnt = 0; for (int j = 0; j < n; ++j) { cnt += temp[j]; if (result[j] == -1) result[j] = cnt; else result[j] = min(cnt, result[j]); } } for (int i = 0; i < n; i++) { cout << result[i] << " "; } return 0;}안녕하세요, 해당 문제 C++로 풀어서 제출해보았는데 백준 1090문제에서 안돌아가서요. 제가 봤을 때 강의 노트 풀이랑 똑같은 것 같은데 무슨 문제가 있을까요?
-
해결됨서버개발자 과제전형 완벽가이드 - 1편
모의과제 소개
모의과제 소개 영상에서 보여주시는 모의과제 요구사항 pdf 파일은 업로드가 안 되어있는 걸까요?
-
해결됨Flutter 앱 개발 실전
수강기간 연장 부탁드립니다.
급하게 듣고, 내용이 긴가민가해서 다시 들을려고 하는데, 시간이 좀 촉박한거 같아서 요청드립니다.좋은 강의 항상 감사합니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
pyinstaller -w -F 실행 중 에러
pyinstaller -w -F를 실행하면 이런 에러가 뜹니다..ㅠㅠ .exe 파일도 생성 안 되구요어떻게 해결해야 할까요?? FileNotFoundError: Icon input file /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/PyInstaller/bootloader/images/icon-windowed.icns not found
-
해결됨면접과 취업을 부르는 '퍼블리셔 개인 포트폴리오 홈페이지' 제작
현재도 float 사용은 중요한가요?
안녕하세요 선생님 강의 들으면서 취업준비 열심히 하고 있는 학생입니다먼저 찾아봤는데 비슷한 질문들은 없는 것 같아서 질문드립니다, 같은 질문이 있었다면 죄송합니다 궁금한 점이 있는데 취업을 위해 포트폴리오를 제작할 때float를 주로(?) 사용하여 제작하되, flex와 grid를 사용한 포트폴리오도제작하여 사용 경험을 어필할 수 있어야 된다고 들었는데요이게 현재도 통용되는 이야기인지 궁금합니다이전에는 ie에서의 flex 및 grid 호환성 문제때문에float를 주로 사용한 걸로 알고있는데(아니라면 죄송합니다)ie지원종료가 된지 2년이 넘어가는 현 시점에서도 float는 여전히 중요한가요?아니면 float를 사용할 줄 알되 flex와 grid를 중점적으로 다룰 줄 알아야 할까요?
-
해결됨따라하며 배우는 리액트 네이티브 기초
진행도가 100% 안찍혀요
안녕하세요. 모두 수강했는데 진행도가 100% 안찍히는데 원인을 알수있을까요? 혹시 마지막 강의 "." 제목으로 된것 떄문인가요?이거 어떻게 수강 체크하는지 알수있을까요??
-
미해결견고한 결제 시스템 구축
멱등키에 request를 넘기는 것
uuid만을 사용해도 충분히 유니크할 것 같은데 request 자체를 넘겨서 어떻게 사용하는 건가요?
-
미해결실습으로 손에 잡히는 SQLD의 정석(2과목)
그룹 함수 데이터 모델
sales 라는 테이블이 어디 있는지 모르겠어요..깃허브에도 찾아봤는데 안보여요 ㅠㅠㅠ
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
백로그에 대한 질문이 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]서버에서는 서버 소켓으로 PORT 번호 지정해서 열어놓고클라이언트가 TCP 연결을 완료하면 서버에서 백로그큐에 연결 정보를 저장하고, 서버에서 accept()를 하면 큐에서 꺼내 소켓을 생성한다고 설명하셨습니다. 근데 GPT나 다른 사람의 내용을 종합하면 클라이언트의 TCP 연결이 요청되면 해당 연결 정보를 syn 큐에 저장하고 연결이 완료되면 os에서 백로그에 저장한 뒤, 서버에서는 accept()를 하면 단순히 백로그에 대한 정보를 꺼내서 소켓을 만든다고 합니다. 내용을 정리하던 중 헷갈려서 어떤 것이 정확히 맞을지 궁금해서 질문드립니다!
-
미해결BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[빠짝스터디 1주차 과제] ARRAY, STRUCT 연습 문제/ PIVOT 연습문제/ 퍼널 쿼리 연습 문제
삭제된 글입니다
-
미해결[유니티6] 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
03-04 배경화면 스크롤에서 MainCamera의 depth를 수정해야 되지 않나요?
원래 있던 depth -1로 했더니, 배경화면만 나와서 depth 1로 했더니 잘 되는 것 같아요.
-
해결됨친절한 블렌더 - [LV.2] 모델링 연습
섹션2 벽 부분 질문입니다.
17:45초에 울타리 크기를 키우고 있는데 s누르고x로 사이즈 키우니 이렇게 되네요.. ㅠ- 안쪽은 정상처럼 보여요.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
준영속 상태 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]준영속 상태란 persist context 안에서 한번이라도 관리된 적이 있는 entity의 상태를 의미한다고 알고 있습니다.하지만 찾아본 바에 의하면 jpa가 '한번이라도 관리된 적이 있는지' 여부를 추적하는 메커니즘을 가지고 있는 것 같지는 않고, 단순히 식별자 여부로 판단하는 것 같은데그렇다면Member memberA = em.find(Member.class, 1L);Member memberB = new Member("B", memberA.getId());memberB도 준영속 상태라고 보는 것이 맞나요?memberB가 준영속 상태가 아니라면 사실상 준영속 상태를 만드는 방법은 detach()를 호출하는 방법밖에 없는 건가요?감사합니다.
-
해결됨Next + React Query로 SNS 서비스 만들기
ISR 테스트 중 궁금점
// src/components/TanstackQueryOption.ts import { isServer, QueryClient, defaultShouldDehydrateQuery, } from '@tanstack/react-query' function makeQueryClient() { return new QueryClient({ defaultOptions: { queries: { staleTime: 15 * 1000, }, dehydrate: { shouldDehydrateQuery: (query) => defaultShouldDehydrateQuery(query) || query.state.status === 'pending', }, }, }) } let browserQueryClient: QueryClient | undefined = undefined export function getQueryClient() { if (isServer) { return makeQueryClient() } else { if (!browserQueryClient) browserQueryClient = makeQueryClient() return browserQueryClient } }// src/components/TanstackQueryProvider.tsx 'use client' import { getQueryClient } from '@/component/TanstackQueryOption'; import { QueryClientProvider, } from '@tanstack/react-query' import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; import { ReactNode } from 'react' export default function TanstackQueryProvider({ children }: { children: ReactNode }) { const queryClient = getQueryClient() return ( <QueryClientProvider client={queryClient}> {children} <ReactQueryDevtools initialIsOpen={process.env.NEXT_PUBLIC_MODE === 'local'} /> </QueryClientProvider> ) } // src/app/layout.tsx import Banner from "@/component/Banner"; import Footer from "@/component/Footer"; import Header from "@/component/Header"; import TanstackQueryProvider from "@/component/TanstackQueryProvider"; import type { Metadata } from "next"; import { Inter } from "next/font/google"; import "@/app/global.css"; const inter = Inter({ subsets: ["latin"] }); export const metadata: Metadata = { title: "Create Next App", description: "Generated by create next app", }; export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { return ( <html lang="en"> <body> <TanstackQueryProvider> <div className='container'> <Banner/> <Header/> <main>{children}</main> <Footer/> </div> </TanstackQueryProvider> </body> </html> ); } // src/app/page.tsx import ProductList from "@/component/ProductList"; import { getQueryClient } from "@/component/TanstackQueryOption"; import { getProducts } from "@/fetch/getProducts"; import { dehydrate, HydrationBoundary, QueryClient } from "@tanstack/react-query"; import Image from "next/image"; export default function Page () { const newQueryClient = getQueryClient(); newQueryClient.prefetchQuery({ queryKey:['products'], queryFn: getProducts, }) return ( <> <section className='visual-sec'> <Image src="/visual.png" alt="visual" width={1920} height={300}/> </section> <section className="product-sec"> <h2>상품 리스트</h2> <HydrationBoundary state={dehydrate(newQueryClient)}> <ProductList /> </HydrationBoundary> </section> </> ) }; 'use client' // src/components/ProductList.tsx import Product from "@/component/Product"; import { getProducts } from "@/fetch/getProducts"; import { useQuery, useSuspenseQuery } from "@tanstack/react-query"; import styles from "@/component/ProductList.module.css"; export const ProductList = () => { const {data, isLoading, isFetching} = useSuspenseQuery({queryKey: ['products'], queryFn: getProducts}); console.log(`isLoading: ${isLoading}, isFetching: ${isFetching}`) return ( <div className={styles.productList}> {data?.map((product: any) => ( <Product key={product.item_no} product={product} /> ))} </div> ) }; export default ProductList;// src/components/Product.tsx import Link from "next/link"; import Image from "next/image"; export const Product = ({product} : any) => { return ( <Link href={`/product/${product.item_no}`} prefetch> <Image src={product.detail_image_url} alt={product.item_name} width={500} height={300} /> <h3>{product.item_name}</h3> <span>{product.price}</span> </Link> ) } export default Product;// src/app/product/[id]/page.tsx export default function ProductDetailPage() { return ( <> 상품 상세페에지 </> ) }// src/fetch/getProducts.ts export const getProducts = async () => { const res = await fetch(`http://localhost:9090/api/products`, { method: "GET", headers: { "Content-Type": "application/json", }, next: { revalidate: 10, } }); const currentTime = new Date().toLocaleTimeString(); const data = await res.json(); if (typeof window === "undefined") { console.log('fetch products', 'server', currentTime); console.table(data); } else { console.log('fetch products', 'client', currentTime); console.table(data); } if(!res.ok) { throw new Error("Failed to fetch products"); } return data; }// src/server/server.js import express from "express"; import cors from "cors"; const app = express(); const port = 9090; app.use(cors()); app.use(express.json()); app.get("/api/products", (req, res) => { const currentTime = new Date().toLocaleTimeString(); console.log(`Received request at ${currentTime}`); const products = [ { item_no: 122997, item_name: '상품 1', detail_image_url: 'https://picsum.photos/id/237/500/500', price: 75000, }, { item_no: 768848, item_name: '상품 2', detail_image_url: 'https://picsum.photos/id/238/500/500', price: 42000, }, { item_no: 552913, item_name: '상품 3', detail_image_url: 'https://picsum.photos/id/239/500/500', price: 240000, }, // { // item_no: 1045738, // item_name: '상품 4', // detail_image_url: // 'https://picsum.photos/id/240/500/500', // price: 65000, // }, ]; res.json(products); }); app.listen(port, () => console.log('Server is running')); 안녕하세요, fetch와 tanstackQuery를 사용해서 ISR 동작을 테스트하고있었습니다.테스트 마다 .next 파일은 지우고 새로 build 하여 run start를 통하여 확인하였습니다.staleTime과 revalidate 의 시간이 서로 상이한데, 동일하게 설정했을때, 시간의 간격을 두었을때의 차이점을 직접 확인하려고 하였는데 어떤점에서 차이가 나는지 보고도 이해가 안가서 질문드립니다.궁금점 1. staleTime과 revalidate 는 gcTime 처럼 staleTime이 revalidate보다 적은 시간으로 설정을 해야하는지? 그렇다면 그 이유는 gcTime보다 작게 설정하는 이유와 같은지? 가 궁금합니다.2. server.js에 주석처리해놓은 item을 다시 주석을 해지하면 처음 revaildate의 10초 설정으로 인해새로고침을해도 아이템은 계속 페이지에서 3개만 노출되고있고, 상품을 클릭해서 이동을 하면서staleTime의 설정인 15초가 되었을때는 client 요청이 발생하여 아이템이 4개로 잘 노출되고있습니다.하지만 이 때 새로고침을 하게되면 처음 fetch revalidate로 cache되어있던 데이터인 아이템 3개까지만 노출이 되고 새로고침을 한번 더 진행해야 그때서야 4개로 노출이되는데 클라이언트와 서버 쪽이 서로 싱크가 안맞는거같은데 이러한 문제점이 왜 일어나는지 이해가 잘안됩니다!3. 확장된 fetch와 tanstackQuery를 어떻게 분리해서 사용해야할까도 많이 고민이 되는데.. queryFn 에 이미 fetch로 만들어둔 함수를 가져와 사용하니 분리라는 개념을 생각하면 안되는걸까요? fetch를 독립적으로 사용하는 경우도있다고하는데 이 경우는 왜 독립적으로 사용하는지 잘모르겠습니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1 모의문제 1-2 gold값 가진 데이터 수
gold값을 가진 데이터 수를 구할 때 아래의 코드처럼 조건문 대신 .str과 .sum을 사용해도 괜찮은 건가요?print(df['f3'].str.contains('gold').sum())
-
해결됨C개발자를 위한 최소한의 C++
마지막 주소록 예제 c 파일 한글 깨짐 현상
안녕하세요, 강사님! 양질의 강의 제공해 주셔서 감사합니다.완강까지 마지막 주소록 예제만을 남겨두고 있는데, 다른 cpp 예제들에서는 보이지 않던 한글 깨짐 현상이 발생해 진행에 어려움을 겪고 있습니다. 혹시 해결 방법이 있을까요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
서버 배포 관련해서 질문드립니다.
지금 올라와 있는 서버 강의를 듣던 중에 배포 관련해서 궁금하여 질문 남깁니다.c++게임서버를 aws에 배포하는 과정 내용의 강의를 올리실 생각이 있으신가요?배포하는 과정이 궁금합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
(해결) 각 테스트가 상태를 공유하지 않습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]"회원 리포지토리 테스트 케이스 작성" 강의에서 MemoryMemberRepositoryTest를 작성하시며 @AfterEach를 통해 각 테스트 케이스가 끝날 때 마다 repository 필드의 상태를 초기화해야 한다고 말씀하셨습니다.그런데 저는 별 다른 오류가 나타나진 않아서 다음과 같이 작성해봤습니다.@AfterEach void afterEach() { System.out.println(repository.hashCode()); }그랬더니 각 repository의 해쉬가 서로 다르더라구요. MemoryMemberRepository 구현 내부에서 상태를 출력하게 해보면, 매 테스트 케이스마다 새로운 상태가 되는 것으로 보입니다.제가 잘못 작성한 부분이 있는 걸까요? 아니면 스프링, 라이브러리 버전의 문제인가요? 전체 코드는 다음과 같습니다. 읽어주셔서 감사합니다.// MemoryMemberRepository.javapackage hello.hello_spring.repository; import hello.hello_spring.domain.Member; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; public final class MemoryMemberRepository implements MemberRepository { private final Map<Long, Member> store = new HashMap<>(); private long sequence = 0; @Override public Member save(Member member) { member.setId(++sequence); store.put(member.getId(), member); return member; } @Override public Optional<Member> findById(Long id) { return Optional.ofNullable(store.get(id)); } @Override public Optional<Member> findByName(String name) { return store.values() .stream() .filter(member -> member.getName().equals(name)) .findAny(); } @Override public List<Member> findAll() { return store.values() .stream() .toList(); } public void clearStore() { store.clear(); } }// MemoryMemberRepositoryTest.javapackage hello.hello_spring.repository; import hello.hello_spring.domain.Member; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.*; class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository(); @AfterEach void afterEach() { System.out.println(repository.hashCode()); } @Test void save() { var member = new Member(); member.setName("spring1"); repository.save(member); var result = repository.findById(member.getId()).get(); assertThat(member).isEqualTo(result); } @Test void findByName() { Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); var result = repository.findByName("spring1").get(); assertThat(result).isEqualTo(member1); } @Test void findAll() { Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); var result = repository.findAll(); assertThat(result).hasSize(2); } }