묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
[5.2) 풀라우트 캐시 2] fetch의 cache 옵션 기본값 질문: no-store/force-cache
안녕하세요. 수업을 듣다가 알려주신 거랑 다르게 동작하는 것 같아 질문드립니다.5.2 풀라우트 캐시2 스크립트 기준 10:09"자, 이런 Fetch 메서드는 자동으로 No Store 옵션을 갖는다고 말씀을 드렸죠?"-> 그래서 예상한 결과값은 dynamic page를 예상했는데 static page로 나오는 것 같습니다npm run build를 했을 때cache 옵션을 안 준 경우 const response = await fetch(`${process.env.NEXT_PUBLIC_API_SERVER_URL}/book`) Route (app) Size First Load JS ┌ ○ / 288 B 106 kB이렇게 static page로 나오고cache 옵션 no-store로 준 경우Route (app) Size First Load JS ┌ ƒ / 288 B 106 kB이렇게 dynamic page로 나와서next 공식 문서를 찾아보니https://nextjs.org/docs/15/app/api-reference/functions/fetchauto no cache (default): Next.js fetches the resource from the remote server on every request in development, but will fetch once during next build because the route will be statically prerendered. If Dynamic APIs are detected on the route, Next.js will fetch the resource on every request.이렇게 build 때는 static 이라고 해서 질문이 생겼습니다.어떤 블로그에서는 또 브라우저마다 다르게 동작한다고 해서 헷갈립니다..!답변 주시면 감사드리겠습니다.
-
미해결[Unity] 멀티플레이 게임 필수 기능 구현 - 서버 & 데이터 관리까지!
방만들기 기능 추가 업데이트 문의
안녕하세요! 강의 잘 듣고 있습니다.다름이 아니라 방 만들기(Room Creation) 기능과 관련해서 추가적인 커리큘럼이 업데이트될 예정이 있는지 궁금하여 문의드립니다포톤을 활용한 멀티플레이 구조를 더 깊이 있게 이해하고 싶은데 현재 강의에서 다루지 않은 부분들이 있어 혹시 확장 계획이 있으신지 알고 싶습니다.감사합니다
-
미해결
기존에 못들은 강의로 진행해도 되나요?
이번 챌린지 이전에 못들은 걸로 진행해도 되나요?
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
코드스니펫 입출력 케이스에 오류가 있는것 같아요
# 코드스니펫 입출력 예제 두번째 라인 print("정답 = ()()( / 현재 풀이 값 = ", get_correct_parentheses("))()("))코드스니펫 예제 입출력에 오류가 있는것 같습니다. 문제 조건에도 다음과 같이 명시되어 있고균형잡힌 괄호 문자열 p가 매개변수로 주어질 때, 주어진 알고리즘을 수행해 올바른 괄호 문자열로 변환한 결과를 반환하시오.프로그래머스 원문제 링크 조건에도문자열 p를 이루는 '(' 와 ')' 의 개수는 항상 같습니다.라는 조건이 있는데 해당 입력케이스는 균형잡힌 괄호 문자열이 아니므로 요구조건에 부합하지 않네요
-
해결됨
결제수단 변경 요청
11/27일에 결제했는데 회사에서 교육 지원이 가능하다고 하여 결제한 카드를 변경하고 싶은데 결제수단을 변경할 수 있을까요?
-
미해결
title과 narration 노드 구분 문의 드립니다!
해당 강의해서는 title과 narration을 한번에 뽑는데 저는 순차적으로 뽑고 싶어서요! 그 방법을 알고 싶습니다!주제 생성 노드를 작성하고 앞선 노드를 바탕으로 대본을 생성해줘! 라고 하고싶어요!
-
해결됨원클릭으로 AI가 생성해주는 Youtube 쇼츠 만들기 자동화(with n8n)
질문있습니다!
강사님! 혹시 Title 부분과 Narration을 하나씩 생성할 수 있는 방법은 없나요?예를 들어, 킬러 주제를 한 가지 뽑아줘 > 위 주제를 토대로 대본을 생성해줘!위와 같은 형태로요. 그리고 또한 작성된 대본을 spilt 노드를 통해 나눈 후 각 문장에 적합한 이미지를 생성하고 싶은데 가능할까요?
-
미해결Next.js with Spring Boot
21강 이미지 출력이 안됩니다.
http://localhost:8080/s_uuid_filename.webp으로 브라우저에서는 이미지가 잘 출력되는데,개발환경에서 next.js 서버 실행하고http://localhost:3000/product/catalog/1로 접속하면 이미지가 안 보입니다.F12로 Network탭에서 이미지가 상태코드 400이 뜹니다.next.config.mjs 파일에 remotePatterns 설정 되었어요.next.jsx 터미널창에 로그는 아래와 같습니다.GET /product/catalog/1 200 in 1251ms (compile: 1206ms, render: 45ms)⨯ upstream image http://localhost:8080/s_uuid_filename9.webp resolved to private ip ["::1","127.0.0.1"]⨯ upstream image http://localhost:8080/s_uuid_filename8.webp resolved to private ip ["::1","127.0.0.1"]⨯ upstream image http://localhost:8080/s_uuid_filename7.webp resolved to private ip ["::1","127.0.0.1"]⨯ upstream image http://localhost:8080/s_uuid_filename6.webp resolved to private ip ["::1","127.0.0.1"]GPT에게 물어보니 /** @type {import('next').NextConfig} */const nextConfig = {images: {unoptimized: true, // ← Next.js 이미지 최적화 끔},};export default nextConfig;최적화를 끄라고하는데, 이미지 최적화를 끄면 이미지는 나오지만이미지 최적화 하면서 이미지가 나오게 할 수 있는 방법 있을까요? 현재 설치된 next.js 버전은 16.0.8입니다.수업은 next.js 15버전인가요?
-
미해결한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
배포후 동일한 url 다른 기기 접속
이렇게 노트북으로 배포한 상태에서 동일한 url을 제 휴대폰으로 검색해서 들어가니까 제 휴대폰으로는 데이터들이 안 보이는데 버그인가요?
-
해결됨코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드
round
어떤 강의에 대한 질문인지 자세하게 알려주시면 답변을 드리는데 도움이 됩니다. 스크린샷윈도우키 + 쉬프트키 + S(윈도우)을 자세히 첨부하시면 답변 드리는데 많은 도움이 됩니다. 동영상 재생 관련 같은 인프런 서비스 관련 문의는 1:1 문의하기를 이용해 주세요.강의 내에서 사용했던 roundcube webmail은 어떤 경우에 사용하는 메일인가요?
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
구글에 색인이 잘되다가 갑자기 안됩니다.
구글에 색인이 잘 되다가 갑자기 안됩니다.강사님의 blogagent.kr 도 글 수에 비해서 색인 숫자가 많이 부족한데 이유가 뭘까요?
-
미해결
26년도 1회차 필기 대비 관련
수강신청 전 입니다. 혹시, 25년도 1차,2차 기출 문제 반영한 신규 강의 및 자료도 반영됐을까요~? 아니면 지금 강의 신청하고 자료 다운 받아 미리 공부 시작하면 추후에 업로드 될까요..?
-
해결됨Flutter 앱 개발 기초
SharedPreferences prefs 초기화 시기 문제
제 식대로 코드를 수정했습니다. MultiProvider로 CatService(prefs)를 호출하는 시기와 prefs를 초기화하는 시기가 비슷하여, 문제가 생겼습니다. "CatService 내부에서 async로 초기화하게 만들고생성자에서 바로 prefs를 쓰지 않도록 수정"하는 방식을 추천하는데 그게 맞을까요? 에러 메세지는 다음과 같습니다 [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel: "dev.flutter.pigeon.shared_preferences_android.SharedPreferencesApi.getAll"., null, null) 주요 코드import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); SharedPreferences prefs = await SharedPreferences.getInstance(); runApp( MultiProvider( providers: [ ChangeNotifierProvider(create: (context) => CatService(prefs)), ], child: const MyApp(), ), ); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: HomePage(), theme: ThemeData(textTheme: GoogleFonts.getTextTheme('Sunflower')), ); } } class CatService extends ChangeNotifier { SharedPreferences prefs; List<String> catImages = []; List<String> favoriteImages = []; CatService(this.prefs) { getRandomCatImages(); favoriteImages = prefs.getStringList("favorites") ?? []; } void getRandomCatImages() async { Response result = await Dio().get( 'https://api.thecatapi.com/v1/images/search?limit=10&mime_types=jpg', ); for (var i = 0; i < result.data.length; i++) { catImages.add(result.data[i]["url"]); } notifyListeners(); } void toggleFavoriteImages(String image) { if (favoriteImages.contains(image)) { favoriteImages.remove(image); } else { favoriteImages.add(image); } prefs.setStringList("favorites", favoriteImages); notifyListeners(); } } <전체 코드>import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); SharedPreferences prefs = await SharedPreferences.getInstance(); runApp( MultiProvider( providers: [ ChangeNotifierProvider(create: (context) => CatService(prefs)), ], child: const MyApp(), ), ); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: HomePage(), theme: ThemeData(textTheme: GoogleFonts.getTextTheme('Sunflower')), ); } } class CatService extends ChangeNotifier { SharedPreferences prefs; List<String> catImages = []; List<String> favoriteImages = []; CatService(this.prefs) { getRandomCatImages(); favoriteImages = prefs.getStringList("favorites") ?? []; } void getRandomCatImages() async { Response result = await Dio().get( 'https://api.thecatapi.com/v1/images/search?limit=10&mime_types=jpg', ); for (var i = 0; i < result.data.length; i++) { catImages.add(result.data[i]["url"]); } notifyListeners(); } void toggleFavoriteImages(String image) { if (favoriteImages.contains(image)) { favoriteImages.remove(image); } else { favoriteImages.add(image); } prefs.setStringList("favorites", favoriteImages); notifyListeners(); } } class HomePage extends StatefulWidget { const HomePage({super.key}); @override State<HomePage> createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { @override Widget build(BuildContext context) { return Consumer<CatService>( builder: (context, catService, child) { return Scaffold( appBar: AppBar( backgroundColor: Colors.yellow, title: Center(child: Text("랜덤 고양이")), actions: [ IconButton( onPressed: () { Navigator.push( context, MaterialPageRoute(builder: (context) => FavoritePage()), ); }, icon: Icon(Icons.favorite, color: Colors.red), ), ], ), body: SafeArea( child: Container( color: Colors.brown.shade100, child: GridView.count( crossAxisCount: 2, mainAxisSpacing: 8, crossAxisSpacing: 8, padding: EdgeInsets.all(8), children: List.generate(catService.catImages.length, (index) { String catImage = catService.catImages[index]; return Stack( children: [ Positioned.fill( child: GestureDetector( onTap: () { catService.toggleFavoriteImages(catImage); }, child: Image.network(catImage, fit: BoxFit.cover), ), ), Positioned( right: 0, bottom: 0, child: Icon( Icons.favorite, size: 40, color: catService.favoriteImages.contains(catImage) ? Colors.pink.shade200 : Colors.transparent, ), ), ], ); }), ), ), ), ); }, ); } } class FavoritePage extends StatelessWidget { const FavoritePage({super.key}); @override Widget build(BuildContext context) { return Consumer<CatService>( builder: (context, catService, child) { return Scaffold( appBar: AppBar( backgroundColor: Colors.yellow, title: Center(child: Text("좋아")), ), body: SafeArea( child: GridView.count( crossAxisCount: 2, mainAxisSpacing: 8, crossAxisSpacing: 8, padding: EdgeInsets.all(8), children: List.generate(catService.favoriteImages.length, ( index, ) { String catImage = catService.favoriteImages[index]; return Stack( children: [ Positioned.fill( child: GestureDetector( onTap: () { catService.toggleFavoriteImages(catImage); }, child: Image.network(catImage, fit: BoxFit.cover), ), ), Positioned( right: 0, bottom: 0, child: Icon( Icons.favorite, size: 40, color: catService.favoriteImages.contains(catImage) ? Colors.pink.shade200 : Colors.transparent, ), ), ], ); }), ), ), ); }, ); } }
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
DP 알고리즘 index 0 이유?
💡 질문 작성 가이드보다 빠르고 정확한 답변을 위해, 아래 사항을 참고해 질문을 작성해주세요.1. 간단한 내용은 ChatGPT로 먼저 확인해보세요.기본 개념이나 용어 설명은 ChatGPT를 활용하는 것이 더 빠르고 효율적일 수 있습니다.2. 질문하실 때, 아래 내용을 함께 적어주시면 좋아요.어느 파트인지풀이 코드 > Bottom-Up 방식의 구현내가 이해한 내용 + 궁금한점cost = [[0, 0, 0]]dp = [[-1, -1, -1] for _ in range(N + 1)]해당 부분을 제거 하고cost = [list(map(int, input().split())) for _ in range(N)]dp = [[-1, -1, -1] for _ in range(N)]초기값 처리에서도 1번째가 아닌 0번째 초기화 처리for문에서도 range(2, n+1)이 아닌 range(1, n) 처리 이렇게 0번째 배열부터 사용하도록 해도 같은 결과를 추출 할 수 있는데굳이 0번째 배열을 [0,0,0], [-1,-1,-1]로 저장해놓는 이유가 있는지 궁금합니다.0번째 배열을 쓰는 문제가 있는건지,,, 놓친 부분이 있는건지,, 해서 여쭤봅니다.N = int(input()) cost = [list(map(int, input().split())) for _ in range(N)] dp = [[-1, -1, -1] for _ in range(n)] dp[0][0] = costs[0][0] dp[0][1] = costs[0][1] dp[0][2] = costs[0][2] # DP Table 갱신 for i in range(1, n): # dp[i][0 ~ 2] # dp[i][0] dp[i][0] = costs[i][0] + min(dp[i - 1][1], dp[i - 1][2]) # dp[i][1] dp[i][1] = costs[i][1] + min(dp[i - 1][0], dp[i - 1][2]) # dp[i][2] dp[i][2] = costs[i][2] + min(dp[i - 1][0], dp[i - 1][1])
-
해결됨AI 시대의 혁신적인 게임 개발 입문 with Unity6
Sceene에서 시점을 변경하려고 하는데 잘 안됩니다.
Sceene에서 아래와 같은 기본 시점이 그림<1>처럼 세팅되어 있는데, 이중에 시점을 바꾸면 그림<2>처럼 변경됩니다. 그림<2> 상태에서 그림<1> 상태로 변경하려면 어떻게 해야 하나요? 단축키 이런게 있나요?두번째 질문 그림<2>에서 가운데 사각형을 누르면 Front가 변경되는데 이게 무슨 기능인가요? 그림<1> 그림<2>
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
18강 질문
설정을 똑같이 했는데 강의에서는 url, sizl 등 여러가지가 나오는데 저는 저렇게만 나오는데 잘못된걸까요..?
-
미해결입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
Windows 환경에서 작업중
안녕하세요, 윈도우 환경에서 작업중입니다.다름이 아니라 Gradle을 IDEA로 변경하면 Build 시에 Error가 떠서 AI에게 물어보니 Gradle로 변경하라 하여 변경하니 되는데 이렇게 작업해도 상관 없는 부분일까요? 오류메세지:Kotlin: [Internal Error] java.lang.NoClassDefFoundError: org/jetbrains/kotlin/com/intellij/psi/PsiElement at org.jetbrains.kotlin.noarg.fir.KtErrorsNoArg.<clinit>(KtErrorsNoArg.kt:32) at org.jetbrains.kotlin.noarg.fir.FirNoArgExtensionRegistrar.configurePlugin(FirNoArgExtensionRegistrar.kt:15) at org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar.configuredExtensionFactories_delegate$lambda$0(FirExtensionRegistrar.kt:294) at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:86) at org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar.getConfiguredExtensionFactories(FirExtensionRegistrar.kt:291) at org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar.configure(FirExtensionRegistrar.kt:270) at org.jetbrains.kotlin.fir.session.FirAbstractSessionFactory.createSharedLibrarySession(FirAbstractSessionFactory.kt:107) at org.jetbrains.kotlin.fir.session.FirJvmSessionFactory.createSharedLibrarySession(FirJvmSessionFactory.kt:53) at org.jetbrains.kotlin.cli.pipeline.jvm.JvmFrontendPipelinePhase.prepareJvmSessions$lambda$0(JvmFrontendPipelinePhase.kt:326) at org.jetbrains.kotlin.cli.common.SessionConstructionUtils.prepareSessions(FirSessionConstructionUtils.kt:324) at org.jetbrains.kotlin.cli.pipeline.jvm.JvmFrontendPipelinePhase.prepareJvmSessions(JvmFrontendPipelinePhase.kt:322) at org.jetbrains.kotlin.cli.pipeline.jvm.JvmFrontendPipelinePhase.executePhase(JvmFrontendPipelinePhase.kt:137) at org.jetbrains.kotlin.cli.pipeline.jvm.JvmFrontendPipelinePhase.executePhase(JvmFrontendPipelinePhase.kt:47) at org.jetbrains.kotlin.cli.pipeline.PipelinePhase.phaseBody(PipelinePhase.kt:68) at org.jetbrains.kotlin.cli.pipeline.PipelinePhase.phaseBody(PipelinePhase.kt:58) at org.jetbrains.kotlin.config.phaser.NamedCompilerPhase.invoke(CompilerPhase.kt:102) at org.jetbrains.kotlin.backend.common.phaser.CompositePhase.invoke(PhaseBuilders.kt:22) at org.jetbrains.kotlin.config.phaser.CompilerPhaseKt.invokeToplevel(CompilerPhase.kt:53) at org.jetbrains.kotlin.cli.pipeline.AbstractCliPipeline.runPhasedPipeline(AbstractCliPipeline.kt:109) at org.jetbrains.kotlin.cli.pipeline.AbstractCliPipeline.execute(AbstractCliPipeline.kt:68) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecutePhased(K2JVMCompiler.kt:79) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecutePhased(K2JVMCompiler.kt:45) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:90) at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.kt:352) at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1617) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360) at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200) at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197) at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840)Caused by: java.lang.ClassNotFoundException: org.jetbrains.kotlin.com.intellij.psi.PsiElement at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:592) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ... 42 more
-
해결됨<머신러닝, 핵심만 빠르게!> 완독 챌린지
강의확인 체크가 안됩니다
45. 8.1 불균형한 데이터셋 다루기 부터52. 8.8 알고리즘 효율성 까지 진행 확인체크가 안됩니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
다형성 캐시 문제
제가 옛날에 서적에서 다형성을 활용하면 가상함수테이블 관련해서 캐시활용하는 면에서 성능이 나빠진다고 알고있는데,매니저같은 클래스에서 객체들을 부모클래스로 들고있는 경우에 대해 어떻게 생각하시는지 궁금합니다.예전에는 타입 그대로 들고있는 방식으로 해결했었는데.. 그 정도로 각박하게 코딩할 정도는 아닌걸까요???
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
워드프레스 와 DB 커넥션 오류
계속 인증서 문제로 워드프레스가 Data Base에 접속이 되지않는다고 로그인 창도 안뜨네요,,,하루 종일 Perplexity 와 싸움하며 수정해보려 했지만 DB에서 SSL을 강제로 비활성화를 하는 환경변수를 주어도 계속 아래와 같은 에러메세지만 보내서 접속을 할 수 없습니다. ERROR 2026 (HY000): TLS/SSL error: SSL is required, but the server does not support it 도와 주세요 ㅠㅠ