묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 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 앱의 프로필 화면처럼 구현하려고 합니다.현재 구현은 • 스크롤 내릴 때는 탭바만 상단에 고정되고 있고• 스크롤 올릴 때는 앱바, 프로필 정보, 탭바가 원래 위치로 복귀되고 있습니다. 문제는 탭바 아래 컨텐츠가 적을 때 발생하는 문제:스크롤 할 컨텐츠 양이 부족해도 스크롤이 불필요하게 탭바 고정 위치까지 이동하고 있습니다. 컨텐츠가 부족할 경우, 탭바 고정 위치까지 스크롤되지 않고, 컨텐츠 높이까지만 스크롤되도록 하고 싶은데 어떻게해야될까요?(스레드앱처럼구현되길원합니다)(스레드앱사진인데 포스트가없으면 스크롤이 되지 않습니다.) 고수분들 의견 부탁드립니다.
-
해결됨얄코의 떠먹여주는 객체지향 디자인 패턴
안녕하세요.
"구독자들에게 메시지를 보내는 발행 메소드는 발행자 인터페이스를 적용한 클래스로부터 호출 받습니다." 라고 설명해주셨는데요코드상에서는 Broker 클래스가 따로 Publisher 인터페이스를 적용하지 않은 상태인 것 같아서요.궁금하여 질문 남깁니다.
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
헤더 파일 변수 선언 질문입니다
스위치 인터럽트로 xshell에 push 문구를 띄울 때 헤더 파일을 쓰지 않고 전역 변수 cahr g_f_sw_up = 0; 선언으로 할 수 있을 것 같은데 헤더 파일을 이용해서 변수를 선언 하는 이유가 있나요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
혹시 프론트엔드 로드맵이 어떻게되나요?
선생님 강의가 마음에 들어계속 듣고싶은데요현재 프로젝트를 한달 후에 프론트엔드 부분을 맡아 진행하고있는데정식로드맵이랑간편 로드맵?빠르게 웹사이트 한개 만들 수 있게 하는 로드맵 알고 싶습니다.리액트 강의 듣고 next.js강의 들어야하는지아니면 리액트 듣고 타입스크립트 듣고 자바스크립트 듣고 next.js강의 들어야하는지..아니면 리액트만으로도 되는지 등등..
-
미해결실무 중심! FE 입문자를 위한 React
반복문 사용법은 안알려주고 주의사항만 알려주시는거군요
뭔가 편집오류인거같네요12초정도에 반복문 사용시 주의사항만 나오고 방복문 사용방법은 안알려줍니다.저야 뭐 대충알아들었는데 초보자분들은 당황스러울듯하네요
-
미해결생활코딩 - Linux
이제 cloud9는 사용이 안되네요...
이제 cloud9는 사용이 안되네요...
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
visited와 거리의 관련
안녕하세요 큰돌님 열심히 수강중인 학생입니다.이번 강의를 들으면서 조금 이해가 안가는 부분이 생겼습니다.visited는 방문 여부를 나타내기위한 배열인것으로 알고있는데 거리관련 배열을 새로 선언한것보다 visited에 거리를 추가해주는것이 더 편리한거같긴한데 나중에 문제를 풀때도 그냥 통합해서풀어도 문제가 없을까요? 한가지 배열로 두가지 역할을 하다보니 나중에 문제 풀이 중에 문제가 생기지 않을까 걱정되는 마음에 질문 드립니다!
-
미해결실무자가 알려주는 CANoe (For CAN 통신)
차종마다 다른 DBC파일을 써야하나요?
예를들어 A차종의 B라는 제어기를 측정하기 위한 DBC 파일이 있습니다. 이 DBC 파일로 F차종의 B제어기를 똑같이 측정할 수 있는건가요? 아니면 차종마다, 제어기마다 다른 DBC파일을 써야하는건가요?
-
해결됨CloudNet@ - Amazon EKS 기본 강의
EKS Cluster 생성 시 노드 IAM 역할 입력
AWS 콘솔에서 eks 클러스터 생성 시 노드IAM역할을 입력해야하는데요강의에는 클러스터 생성 후 노드 생성 전에 노드 IAM 역할을 생성합니다.강의 내 eksNodeRole을 생성 먼저 하고 해당 값을 입력하면 되나요?
-
미해결스프링 핵심 원리 - 기본편
특정 타입 모두 조회expected: 2 but was: 1 Expected :2 Actual :1
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]특정 타입을 모두 조회하기 할때expected: 2 but was: 1에러가 뜨고, ac.getBeansOfType 자동완성이 안되는 것도 있습니다. 왜그러죠package hello.core.beanfind; import hello.core.discount.DiscountPolicy; import hello.core.member.MemberRepository; import hello.core.member.MemoryMemberRepository; import hello.core.order.AppConfig; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.NoUniqueBeanDefinitionException; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; public class ApplicationContextSameBeanFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("타입으로 조회시 같은 타입이 둘 이상 있으면 중복 오류가 발생한다.") void findBeanTypeDuplicate() { // 이렇게 해서 돌려보면 멤버 리포지터리를 조회하면 두개가 튀어나오면서 예외가 ㅓ지게 된다. No Unique에러 assertThrows(NoUniqueBeanDefinitionException.class, () -> ac.getBean(MemberRepository.class)); // assertThrows + 람다식 예외가 터져야 테스트 통과 되게 } @Test @DisplayName("타입으로 조회시 같은 타입이 둘 이상 있으면, 빈 이름을 지정하면 된다") void findBeanByName() { MemberRepository memberRepository = ac.getBean("memberRepository1", MemberRepository.class); assertThat(memberRepository).isInstanceOf(MemberRepository.class); } @Test @DisplayName("타입으로 조회시 같은 타입이 둘 이상 있으면, 빈 이름을 저장한다.") void findAllBeanType() {// ctrl + shift + enter 바로 코드 컴플리션으로 넘어 감 Map<String, MemberRepository> beansOfType = ac.getBeansOfType(MemberRepository.class); for (String key : beansOfType.keySet()) { System.out.println("key = " + key + " value = " + beansOfType.get(key)); } System.out.println("beansOfType = " + beansOfType); assertThat(beansOfType.size()).isEqualTo(2); } // 그냥 이 클래스 안에다가 메서드 생성 // static 쓰면 장점 클래스안에서만 쓰겠다는 뜻 이안에다가 컨피그 만듦 @Configuration static class SameBeanConfig { // 다른 파라미터로 빈 생성 가능 // 빈의 이름이 다를 수 있고 클래스, 객체 타입이 같을수 있다 @Bean public MemberRepository memberRepository1(){ return new MemoryMemberRepository(); } @Bean public MemberRepository memberRepository2(){ return new MemoryMemberRepository(); } } }
-
미해결애플리케이션 배포 자동화와 CI/CD
안녕하세요
안녕하세요 선생님젠킨스 도커로 설치후 실행하면 이런 로딩에서 안넘어가는데 어떻게 하면 좋을까요..? 로컬에서 했을때는 비밀번호 치는걸로 바로 넘어가는데..감사합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
.ifPresent 사용법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]멤버 삭제 기능을 만들려고 하는데 이렇게 하는게 맞을까요?한개의 멤버만 받아서 삭제하고 싶은데 어떻게 처리해야 할까요? public boolean deleteProduct(String productName){ List<Product> result = em.createQuery("select p from Product p where p.productName = :productName", Product.class) .setParameter("productName", productName) .getResultList(); return true; } getResultList 로 하니까 여러개 나올거 같은데 한개만 삭제하려면 어떻게 해야 하나요? 그리고 em.remove하면 되나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
데이터 생성코드 실제 시험환경 문의
# 데이터 생성(먼저 실행해 주세요) import pandas as pd import random random.seed(2022) df = pd.DataFrame() for i in range(0, 5): list_box = [] for k in range(0, 200): ran_num = random.randint(1,200) list_box.append(ran_num) df[i+2000] = list_box df = df.T df.to_csv("data.csv", index=True)이렇게 가장먼저 데이터생성하는 코드가 디폴트값으로 적혀있는데, 실제 빅분기시험에서도 이렇게 첫 스타트를 끊는 부분은 저희가 처음부터 별도로 코딩을 하지않아도되는건가요? 실제 시험에서는 어떻게 진행되는지 궁금하네요... 처음부터 문제 읽자마자 데이터 생성을 하고 시작해야하는건지 아니면 데이터 생성코드가 입력되어있으면 그냥 코드실행바로 누르고 시작하는건지 알려주세요
-
미해결UDS 진단통신을 통한 SW 업데이트(SW ReProgramming)
SW Update관련 질문사항
안녕하세요 항상 좋은 강의 감사드립니다.질문이 있어서 질문 남깁니다.1. MCU 랑 마이컴이랑 같은건가요??2. hex파일이랑 .s19?파일 차이가 있나요?3. 주행중 다운로드 하는 경우 다운로드 시퀀스(섹션6, 시간 : 07:59)에서 ecu Reset(0x11)이 있어도 되나요?주행 중 ecu reset이 되고 다시 제어기가 on 됐을 때 A/B Swap이 된다고 해도 ecu reset이 되는동안 기능 동작이 안되면 문제가 될것 같아서 질문 드립니다.그리고 A/B Swap을 할 때는 항상 제어기가 꺼졌다가 켜져야 하는건가요? 주행중 특정 명령어나 SW기능으로 SW다운로드가 완료되면 자동으로 A/B Swap이 되는건가요?(약간의 딜레이가 있을것은 같은데 이런 딜레이조차도 주행중이니까 위험할것 같아서 질문드립니다.)4. 다음 강의 준비하고 계신게 뭔지 궁금합니다!(NM의 세부내용 강의 및 OTA세부강의도 준비해주신다면 많은 도움이 될것 같습니다~) 감사합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
route 설정이 동작을 안하는거 같아요.
RouteLocator gatewayRoutes(RouteLocatorBuilder builder)이 메소드를 만들기 위해 implementation 'org.springframework.cloud:spring-cloud-starter-gateway' 이걸로 수정했을 했는데 이후 저 메소드를 주석 처리하고 applicatio.yml을로 설정을 대체 했을 때는 동작을 안하고 implementation 'org.springframework.cloud:spring-cloud-starter-gateway-mvc'mvc로 다시 변경해줘야 올바르게 동작하는데무슨 차이가 있을까요?
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
ansible 원리
ansible copy 같은 모듈 명령어를 사용할 때요대상으로 하는 서버들에서 방화벽과 같은 그런것들을 미리 열어줘야 하고 그런 것들은 없을까요?물론 미리 ping 을 통해서 확인할 수는 있겠지만요!ansible 의 동작 원리가 궁금합니다.
-
미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
CardStackView 라이브러리 추가에 실패합니다.
둘 다 실패합니다.implementation("com.yuyakaido.android:card-stack-view:2.3.4") implementation("com.github.yuyakaido:cardstackview:2.3.4")
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
ReentrantLock과 비관적락
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.실무에서 DB 관련 데이터에 대해 동시성 이유가 있으면 비관적락을 쓰는것으로 알고 있습니다. JPA의 비관적락은 DB 계층에서 동기화 기술이고 ReentrantLock은 어플리케이션 계층의 동기화 라는데...실무에서 ReentrantLock은 언제 사용이 되나요?? ReentrantLock을 사용하면 DB 접근 동기화가 되지 않나요?? 둘의 명확한 차이점이 궁금합니다.