묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
6.5 에러핸들링 router.refersh() -> useRouter.refresh()를 사용하면 될까요?
🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨질문 하시기 전에 꼭 확인해주세요- 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다)- 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다)- 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢)질문 하실때 꼭 확인하세요- 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X)- 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지)- 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우)- 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요- 강의의 몇 분 몇 초 관련 질문인지 알려주세요!- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결
AWS S3 파일 업로드 질문입니다 제발 답변 해주세요 ㅠㅠ
AWS S3 파일 업로드를 구현중인데 궁금한게 생겨서 여쭤봅니다!현재 프론트에서 서버로 presignedURL 생성 API 요청보내면,서버에서 presigendURL과 downloadURL을 내려주도록 했습니다.그러면, 생성된 presigendUrl로 프론트가 직접 PUT으로 버킷에 업로드하고, downloadUrl로 보여주는 구조로 작업을 했습니다.1. presignedURL 만료시간 5분설정.2. 생성 API는 로그인된 사용자만 가능하도록 설정3. downloadURL CDN설정 (도메인 적용)이정도 보안은 해두었는데 presignedURL에 버킷주소 노출 되는건 괜찮을까요..? 찾아보았을때에는 presignedURL은 버킷주소를 도메인같은거로 가릴수는 없다고 하길래 어떻게 해야할지 여쭤봅니다. 실제 운영하고 싶은 서비스라서 답변 부탁드려요 ㅠㅠ
-
미해결[2025년 출제기준] 웹디자인기능사 실기시험 완벽 가이드
D,E,F유형 포토샵 질문
D,E,F유형 작업시 슬라이드,배너,갤러리 이미지는 어떤사이즈로 제작해야하는지 시험지에 기재 돼 있는 부분일까요?
-
미해결김영한의 실전 자바 - 기본편
OCP원리 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]12. 다형성과 설계 강의 자료에서 OCP원리를 보면 코드 수정은 닫혀 있다는 의미에서 "새로운 차를 추가하게 되면 기능이 추가되기 때문에 기존 코드의 수정은 불가피하다. 당연히 어딘가의 코드는 수정해야 한다."라고 되어 있습니다. 기존 코드의 수정이 불가피하다고 하는데 왜 코드 수정은 닫혀 있다고 표현하는 건가요?
-
해결됨그림으로 쉽게 배우는 운영체제
LRU 관련 질문
안녕하세요,좋은 운영체제 강의 감사드리며, 수강 중 한가지 의문점이 생겨서 질문드립니다.LRULeast Recently Used 는, 최근에 가장 사용이 적은 페이지를 선택하는 방법이라고 설명해주셨습니다. 그렇다면 가장 오랜 기간 사용하지 않은 페이지를 교체하는 방법에 해당되는 것으로 보이는데, 4:40 그림과 함께 설명되는 부분은 (최근에 들어온 페이지의 참조 수를 계산한다고 설명 주신 부분은) 계수-기반 페이지 교체 Counting-Based Page Replacement에서참조 횟수가 가장 작은 페이지를 교체하는 방법인 LFULeast Frequently Used 방식에 해당하는 설명이 아닌가 생각됩니다. 오랜기간 사용하지 않은 페이지를 교체한다면, 예시의 마지막 LRU 교체는 "D" 에서 이루어져야하는 것이라 판단됩니다.. 감사합니다.
-
미해결[EduAtoZ] 빅데이터분석기사 필기
시공간데이터
공간데이터는 공간과 시간데이터를 따로 추출할수있는데, 계산에 의해서는 추출못한다는건 무슨의미일까요?일반적으로 공간데이터와 시간데이터가 따로 관리될때는 추출을 할 필요가 있나요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
#define SQUARE(x)((x) * (x))에 대한 예시는 없을까요?
#define SQUARE(x)((x) * (x))에 대한 예시는 없을까요? SQUARE(x)에 ((x) * (x))를 정의하는건지SQUARE에 (x)((x) * (x))를 정의하는건지 모르겠어요
-
미해결비전공자도 합격하는 개발자 이력서/포트폴리오 작성법
작성은 구어체로? 아니면 핵심만 딱딱?
안녕하세요. 강사님 강의 잘 보고 있습니다.합격 샘플의 예시를 보면서 저의 이력서와 같이 비교 분석하고 있는데 합격하신 분은 주로 구어체로 많이 작성하셨더라고요.저의 이력서도 기존에는 구어체를 많이 사용했으나 gpt에게 프롬프트로 "백엔드 개발자의 면접관의 입장에서 신입 개발자의 이력서 수정사항을 말하라"라고 입력하고 저의 이력서를 스캔하여 보여주니 구어체는 쓰지말고 핵심만 끊어서 작성하라는 말을 많이 들었습니다.강사님의 의견은 어떠하신가요?
-
미해결FreeRTOS 프로그래밍
보드 STM32H735IG와 강의 호환 여부 문의
안녕하세요 이번에 FreeRTOS를 공부하려고 합니다.현재 보드명 : STM32H735IG / STM32H735-DK를 사용하여 FreeRTOS강의를 수강하려고 합니다. 이에 대해 강의의 코드를 참고하여 실습하는 것에 대해 문제가 없는지 문의드립니다.
-
미해결비전공자도 이해할 수 있는 AWS 입문/실전
무료도메인 elb연결 어떻게하나요?
route53에서는 도메인이 결제해야해서 보충강의처럼 내도메인한국에서 무료도메인을 받고 ip주소를 입력해서 연동을 시켜놓은 상태입니다.근데 실습4 ELB 도메인 연결하기에서는 route53에서 구입한 도메인만 연결방법이 나와있는데 따로 강의가있나요?
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
AWS 배포 시 docker-compose.yml 관리 방법 질문입니다.
현재 강의에서는 aws 인스턴스 에서 직접 compose.yml을 작성하는데 제가 현재 spring boot 프로젝트 루트 경로에 compose.yml을 구현해뒀어도 프로젝트 빌드시에는 yml이 포함되지 않아서 강의와 같이 인스턴스가 직접 생성해줘야하는 지 궁금합니다. 그리고 나중에 ci/cd를 하게 되면 github Actions같은 CI/CD 도구를 이용해야 yml파일이나 .env이런 파일을 직접 인스턴스에 구현하지 않아도 되는 것이 맞는 지 궁금합니다.
-
미해결김영한의 실전 자바 - 기본편
접근제어자, 클래스 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.class의 접근제어자를 private으로 설정시 외부 호출을 막는 것은 이해를 합니다.class의 volume 변수에 대해 실제 수정 해야 상황일 경우 (volume 200이 가능하게 되었을 때) privat로 설정된 volume 변수 수정 권한을 setting하는 것은 어떤 조직 구성과 방법으로 하는지 실제 경험을 사례로 설명을 요망합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
RunWith
프로젝트 생성부분의 마지막 강의 수강중이고, 위와 같이 코드를 작성했을 때 다음과 같은 오류가 납니다https://drive.google.com/file/d/1g1uPQj8hZvNmWr3u9NBwMTuI_NOZWSKC/view?usp=sharing프로젝트 파일도 같이 첨부합니다
-
해결됨공업수학을 위한 중학, 고교수학
전기과학생입니다.
강의의 내용과 관련이 없는 질문이나 제안은 삼가해주시기 바랍니다. 이 강의의 범위 안에서 질문해주시기 바랍니다. 이 강의에서 다루지 않은 중학, 고교수학의 내용이나 대학의 공업수학에 대해서는 답변해드리지 않습니다. 이 강의를 들으면서 문제집같은걸 풀면서 해보려고하는데요 추천하시는 중/고등 문제집이 있을까요?
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
파이어베이스 강의 문의
파이어베이스 Authentication게임이 시작되고 게스트로그인 ContinueWith을 통해 계정생성이 잘 완료되고 Realtime Database에도 USER라는 곳에 데이터가 잘 저장되고 불러오기가 되는데 (익명) 사용자가 바로 생성되지 않습니다 무슨 문제일까요?? 시간이 한참 지나면 생성되어져 있습니다. (강의영상보면 바로 생성되던데 저는 안되네요)
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
구글로그인 부분은 어디에 있나요??
구글로그인 및 파이어베이스 구글로그인은 강의가 어디에 있나요??
-
해결됨[2025 리뉴얼] 스스로 구축하는 AWS 클라우드 인프라 - 기본편
Web Application Firewall (WAF)
Web Application Firewall (WAF) 1. Enable security protectionsKeep your application secure from the most common web threats and security vulnerabilities using AWS WAF. Blocked requests are stopped before they reach your web servers.Do not enable security protectionsSelect this option if your application does not need security protections from AWS WAF.둘 중 뭐 골라야 해요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
PathVariable에 Null이 들어오는 것 같습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네[질문 내용]여기에 질문 내용을 남겨주세요.상품 수정하기를 눌렀을 때 에러코드 500이 나오고 IllegalArgumentException: Input cannot be null 에러가 나옵니다.PathVariable("itemId")로 명시적으로 지정해 주었는데도 null이 들어가는 것 같은데 해결을 못하겠습니다. 코드는 원래 파일에서 건든 것이 없고 심지어 강의 자료에 있는 코드 파일 그대로 복사 붙여넣기 해도 똑같은 에러가 나옵니다..
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
sudo가 안먹혀요
3강 진행 중에 sudo lsof -i:3306 명령어를 사용했는데 ""Sudo가 이 컴퓨터에서 사용하지 않도록 설정되어 있습니다. 사용하도록 설정하려면 으로 이동하세요. Developer Settings page 설정 앱의"" 이렇게 나와서 시작을 못하고 있습니다. 그리고 다른 질문인데 현재 프로젝트를 하고 있는데 db를 mysql을 사용하고 있는 상황이라 만약 실습을 위해서 포트를 끄면 프로젝트할때 영향이 가는지도 궁금합니다.
-
미해결
안녕하세요
안녕하세요. 현재 코드입니다.import 'package:flutter/material.dart'; import 'dart:developer' as developer; class TestSearchScreen extends StatefulWidget { const TestSearchScreen({Key? key}) : super(key: key); @override _TestSearchScreenState createState() => _TestSearchScreenState(); } class _TestSearchScreenState extends State<TestSearchScreen> with SingleTickerProviderStateMixin { late TabController _tabController; late ScrollController _scrollController; @override void initState() { super.initState(); _tabController = TabController(length: 3, vsync: this); _scrollController = ScrollController()..addListener(_scrollListener); WidgetsBinding.instance.addPostFrameCallback((_) { _logScreenInfo(); }); } @override void dispose() { _scrollController.removeListener(_scrollListener); _scrollController.dispose(); _tabController.dispose(); super.dispose(); } void _scrollListener() { developer.log('현재 스크롤 위치: ${_scrollController.offset}', name: '스크롤 디버그'); developer.log('최대 스크롤 범위: ${_scrollController.position.maxScrollExtent}', name: '스크롤 디버그'); developer.log('최소 스크롤 범위: ${_scrollController.position.minScrollExtent}', name: '스크롤 디버그'); developer.log( '현재 스크롤 방향: ${_scrollController.position.userScrollDirection}', name: '스크롤 디버그'); developer.log('스크롤 위치가 범위 내에 있음: ${_scrollController.position.outOfRange}', name: '스크롤 디버그'); developer.log('현재 뷰포트 크기: ${_scrollController.position.viewportDimension}', name: '스크롤 디버그'); } void _logScreenInfo() { final mediaQuery = MediaQuery.of(context); developer.log('화면 정보:', name: '스크롤 디버그'); developer.log(' 화면 크기: ${mediaQuery.size}', name: '스크롤 디버그'); developer.log(' 화면 너비: ${mediaQuery.size.width}', name: '스크롤 디버그'); developer.log(' 화면 높이: ${mediaQuery.size.height}', name: '스크롤 디버그'); developer.log(' 상태 표시줄 높이: ${mediaQuery.padding.top}', name: '스크롤 디버그'); developer.log(' 바닥 패딩: ${mediaQuery.padding.bottom}', name: '스크롤 디버그'); developer.log( ' SafeArea 높이: ${mediaQuery.size.height - mediaQuery.padding.top - mediaQuery.padding.bottom}', name: '스크롤 디버그'); } @override Widget build(BuildContext context) { developer.log('TestSearchScreen 빌드 호출됨', name: '스크롤 디버그'); return Scaffold( body: SafeArea( child: NestedScrollView( controller: _scrollController, headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) { // 헤더 부분에 들어갈 슬리버 위젯들 return <Widget>[ SliverAppBar( title: const Text('Test Search'), floating: true, snap: true, forceElevated: innerBoxIsScrolled, ), SliverToBoxAdapter( child: _buildProfileInfo(), ), SliverPersistentHeader( pinned: true, delegate: _TabBarDelegate( TabBar( controller: _tabController, onTap: (index) { developer.log('탭 변경됨: $index', name: '스크롤 디버그'); }, tabs: const [ Tab(text: 'Tab 1'), Tab(text: 'Tab 2'), Tab(text: 'Tab 3'), ], ), ), ), SliverToBoxAdapter( child: _buildFilter(), ), ]; }, // 본문 부분에는 TabBarView 배치 body: TabBarView( controller: _tabController, children: [ _buildTab(1, Colors.red), _buildTab(5, Colors.green), _buildTab(1, Colors.blue), ], ), ), ), ); } Widget _buildProfileInfo() { return Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text('User Profile', style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold)), const SizedBox(height: 8), Container(height: 100, color: Colors.grey[300]), const SizedBox(height: 16), ], ), ); } Widget _buildFilter() { return Padding( padding: const EdgeInsets.all(16.0), child: Row( children: [ Expanded( child: ElevatedButton( onPressed: () {}, child: const Text('Filter 1'))), const SizedBox(width: 8), Expanded( child: ElevatedButton( onPressed: () {}, child: const Text('Filter 2'))), ], ), ); } // 탭 컨텐츠를 위한 새로운 메서드 Widget _buildTab(int count, Color color) { return Builder(builder: (BuildContext context) { // NestedScrollView의 내부 스크롤 동작을 위해 Builder 사용 return GridView.builder( padding: const EdgeInsets.all(16), // NestedScrollView 내부의 스크롤에 맞는 physics 사용 physics: const BouncingScrollPhysics(), gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, crossAxisSpacing: 10, mainAxisSpacing: 10, ), itemCount: count, itemBuilder: (context, index) { developer.log('그리드 아이템 빌드: index=$index', name: '스크롤 디버그'); return Container( color: color, child: Center(child: Text('아이템 $index')), ); }, ); }); } } class _TabBarDelegate extends SliverPersistentHeaderDelegate { final TabBar tabBar; _TabBarDelegate(this.tabBar); @override double get minExtent => tabBar.preferredSize.height; @override double get maxExtent => tabBar.preferredSize.height; @override Widget build( BuildContext context, double shrinkOffset, bool overlapsContent) { return Container( color: Theme.of(context).scaffoldBackgroundColor, child: tabBar, ); } @override bool shouldRebuild(covariant SliverPersistentHeaderDelegate oldDelegate) { return false; } } Threads 앱의 프로필 화면처럼 구현하려고 합니다.현재 구현은 • 스크롤 내릴 때는 탭바만 상단에 고정되고 있고• 스크롤 올릴 때는 앱바, 프로필 정보, 탭바가 원래 위치로 복귀되고 있습니다. 문제는 탭바 아래 컨텐츠가 적을 때 발생하는 문제:스크롤 할 컨텐츠 양이 부족해도 스크롤이 불필요하게 탭바 고정 위치까지 이동하고 있습니다. 컨텐츠가 부족할 경우, 탭바 고정 위치까지 스크롤되지 않고, 컨텐츠 높이까지만 스크롤되도록 하고 싶은데 어떻게해야될까요?(스레드앱처럼구현되길원합니다)(스레드앱사진인데 포스트가없으면 스크롤이 되지 않습니다.) 고수분들 의견 부탁드립니다.