묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨기초부터 배우는 Next YTMusic 클론 코딩 (with next.js 14, UI 마스터)
질문있습니다.
각 페이지마다 loading과 error.tsx를 각각 주고 있는데 그냥root에 loading.tsx error.tsx를 하나만 둬서 공유하는 방식은 안되나요? 각 페이지마다 따로 둔 이유가 뭔가요? 현업에서도 layout은 보통 page마다 다르게 두나요?이전에는 프로젝트에서 그냥 root에 위치한 하나의 layout만 써와서.. 강의 잘 보고있습니다. 선생님!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
벌크연산후 createQuery 작동방식 질문
강의 처럼 벌크 연산 후int resultCount = em.createQuery("update Member m set m.age=20") .executeUpdate();clear없이 바로 createQuery를 날리면,Member result = em.createQuery("select m from Member m where m.id = :id", Member.class) .setParameter("id", member1.getId()) .getSingleResult(); System.out.println("member.getAge() = " + result.getAge());아래와 같은 select 쿼리가 날라가고 age가 원래값으로 나옵니다.Hibernate:/* selectmfromMember mwherem.id = :id */ selectm1_0.id,m1_0.age,m1_0.memberType,m1_0.TEAM_ID,m1_0.usernamefromMember m1_0wherem1_0.id=?member.getAge() = 10//////////////////////////////find처럼 selcet문이 안날라갈줄 알았는데, 날라가서 createQuery 작동방식이 궁금합니다.1.이 쿼리가 실제로 db에 날라갔는데,age=20값을 가지고오면서 영속성 컨텍스트에 들렸는데,이미 캐시가 존재해서, 쿼리 값을 업데이트 안해주고 원래값 age=10을 가지고 온건가요?2. 아니면 로그에 보이는 쿼리가 실제 db 에 날라가지 않고 생성만된채로, 영속성 컨텍스트를 찾는건가요?
-
해결됨[UI3 업데이트] 피그마 배리어블을 활용한 디자인 시스템 구축하기
브랜치 지정 사용시 개발 버전관리 문의
피그마 베리어블 강의 잘 듣고 현재 개발자와 회사 디자인 시스템 가이드 구축중입니다. 피그마에서 브런치 기능이 있는데요.. 브런치 기능과 깃업을 연결해서 버전 관리 하는 방법이 있는지 문의 드리고.혹시 그런 기능이 없다면, 개발 버전 관리를 어떤식으로 피그마에서 사용하는지 강의나 문서 볼 수 있는 곳이 있을까요? ㅜㅜ 개발자들이 문의를 하는데 암것도 모르겠네요ㅜㅜ
-
미해결스프링 핵심 원리 - 기본편
중복 오류 테스트 시 assertThrows 사용과 관련한 질문입니다.
@Test @DisplayName("타입으로 조회 시 같은 타입이 둘 이상 있으면, 중복 오류가 발생한다.") void findBeanByTypeDuplicate() { assertThrows(NoUniqueBeanDefinitionException.class, () -> ac.getBean(MemberRepository.class)); }강의에선 assertThrows 를 사용하기 전에 먼저 터트려보고 예외 클래스 이름을 확인 후에 assertThrows를 이용하는 것 같은데 실제 테스트에서도 이렇게 진행되나요...?Assertions를 assertThat으로 축약시킬때 static 을 import 하는 과정이 포함되어있는데 항상 이렇게 Assertions부터 적고 단축키로 import 해서 바꾸는 순서로 진행해야할까요?
-
해결됨[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
데이터구조- 리스트 1,2 배우면서 이상한점 ..
리스트가 너무 이상하게나와요 ㅠ - 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다)- 이외의 문의등은 평생강의이므로 양해를 부탁드립니다- 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다- 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
Post/Redirect/Get 설명에서 웹 브라우저 새로고침시 POST요청이 다시 간다는게 이해가 안됩니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]Post/Redirect/Get 설명에서 웹 브라우저 새로고침시 POST요청이 다시 간다는게 이해가 안됩니다 설명하신것 처럼 버튼 클릭으로 POST요청을 보낼 때버튼을 클릭 해야 POST요청, 단순 웹브라우저 새로고침은 GET요청이 될 거라고 생각 됩니다예시) 만약 리뷰 조회 -> 리뷰 작성 버튼 -> 리뷰 등록 버튼을 통해 새로운 리뷰를 등록한다고 가정하면GET /reviews : 리뷰들 조회GET /reviews/new : 리뷰 작성 화면 조회 (리뷰 작성 버튼 클릭시)POST /reviews/new : 리뷰 등록 (리뷰 등록 버튼 클릭 시)단순 웹브라우저 새로고침을 하면 2번 요청이 간다고 생각하는데 3번 요청을 누른 후에 새로고침을 한다고해서 3번 요청이 다시 적용된다는 것이 이해가 가질 않습니다 ㅠㅠ 버튼을 다시 클릭하는 것이 아닌데
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
gitignore 및 branch에 대한 질문
강의를 들으면서 궁금증이 생겼습니다.gitignore에 설정된 파일은 깃허브에만 노출되지 않는것인지, 아니면 git clone으로 프로젝트 다운 시에는 폴더 안에 존재하는지 궁금합니다.만약 clone으로 다운 시 존재하지 않는다면 다른 사람이 제 프로젝트를 clone 하더라도 로컬에서 제대로 돌아가지 않는 게 제 생각인데 맞을까요?ec2에서 현재 프로젝트에 여러 branch가 있을 때, 그 중에서 어떤 branch의 코드를 사용할지는 어떻게 정해지는지 궁금합니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
Token 재발급 관련 궁금증
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요!강의를 잘 듣던 중 궁금한 점이 생겨 질문드립니다. 해당 강의대로 진행하면 access token과 refresh token 모두 만료 전에 재발급받아 token을 연장시키는 개념으로 이해가 됩니다.그러나 각 token의 만료 시간인 300초, 3600초가 지나지 않은 상태에서 token을 재발급하게 되면 1개의 계정에 다수의 token이 존재할 수 있는 상황이 될 수 있다고 생각됩니다.(예를 들어 만료가 3000초 남은 refresh token으로 refresh token을 재발급하게 되면 3000초 남은 refresh token과 3600초 남은 새로운 refresh token 2개가 존재하게 됩니다.) 그래서 궁금한 점은 아래 두가지입니다.실제 production 환경에서도 이렇게 다수의 token이 존재할 가능성을 가지고 있는지.다수의 refresh token이 존재했을때 만약 해당 refresh token이 한번 탈취 당하면 계속해서 만료전에 갱신이 가능해지는 상황인데 이에 대한 대처방법이 따로 있는것인지.(개인적인 생각으로는 user 데이터베이스에 refresh token만 따로 저장하여 유효성 검사를 진행하는 방안도 있을 것 같습니다.)
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepository querydsl 적용 질문입니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]querydsl 강의를 듣고 복습하면서 적용해보고 있는데, memberRepository 부분에서 @RequiredArgsConstructor을 사용했더니 compileJava부분에서 em의 초기값이 없다는 예외가 발생했습니다. 생성자를 활용해서 해결되긴 했는데 그 전의 코드에서 왜 작동이 안되었는지 궁금해서 질문드립니다.@RequiredArgsConstructor을 사용한다던가 하는 더 간단한 방법도 있는지 궁급합니다.코드파일입니다https://drive.google.com/file/d/1ezwW4PrReG_BX-lmAC1uiOL8Syk3GbFW/view?usp=sharing
-
해결됨[2025 리뉴얼] 스스로 구축하는 AWS 클라우드 인프라 - 기본편
pem 키를 ppk 로 바꿔주는 이유
[실습] Public EC2 인스턴스 생성 및 LAMP 웹서버 구성 이 강의에서 pem 키를 ppk 로 바꿔주는 이유가 궁금합니다.
-
미해결실전! Querydsl
querydsl fetchjoin + Projections.bean을 활용한 특정필드 dto 매핑(feat. query specified join fetching, but the owner of the fetched association was not present )
queryFactory.select(Projections.bean(GetMyCommentResponse.MyCommentInfo.class, commentEntity.id.as("commentId"), commentEntity.content.as("content"), commentEntity.likeCount.as("likeCount"), commentEntity.createDateTime.as("createDateTime"), Projections.bean( GetMyCommentResponse.MyCommentedPopUpInfo.class, postEntity.id.as("postId"), postEntity.name.as("postName"), postEntity.mainImageUrl.as("mainImageUrl"), ).as("postInfo"), // commentEntity // 엔티티도 같이 조회하면 에러가 나지 않음 )) .from(commentEntity) .join(commentEntity.post, postEntity).fetchJoin() 안녕하세요 영한님!강의 잘 듣고 있습니다.공부 중에 코드를 작성하다query specified join fetching, but the owner of the fetched association was not present in the select list이런 에러가 발생했는데, fetchjoin시 실제 질의하는 대상 Entity를 select절에 쓰지않아서 에러가 나더라구요. select절에 commentEntity를 추가하면 에러가 발생하지 않지만 이미 commentEntity의 필드들은 모두 가져왔는데, 또 조회하는게 불필요한 작업이라고 생각되어서요. 그렇다고, fetchjoin이 아닌 일반 조인을 써버리면 코멘트마다 포스트에 대해서 n+1 문제가 발생할 것이라고 생각되구요이러한 상황에서 좋은 해결방법이 있을까요? 감사합니다
-
미해결프로젝트로 배우는 Python 챗봇 & RAG - LangChain, Gradio 활용
OPENAI_API_KEY 인식중에 에러가 발생하네요,
안녕하세요. .env에서 OPENAI_API_KEY 설정도 제대로 했어요. 실행시 이미지 같은 에러는 어떻게 해야 할까요? 혹시나 해서 openaai에서 api상태도 확인했는데 사용 가능 상태이거든요.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
left join이 안돼요
강의하신 코드랑 같고try { Team team = new Team(); team.setName("teamA"); em.persist(team); Member member = new Member(); member.setUsername("member"); member.setAge(10); member.setTeam(team); em.persist(member); em.flush(); em.clear(); String query = "select m from Member m left join m.team t"; List<Member> result = em.createQuery(query, Member.class) .getResultList(); tx.commit(); } catch (Exception e) { tx.rollback(); e.printStackTrace(); } finally { em.close(); } 결과Hibernate: /* select m from Member m left join m.team t */ select m1_0.id, m1_0.age, m1_0.TEAM_ID, m1_0.username from Member m1_0 left join이 안나가네요, jpql로 join까지 썻는데 왜 안나가는걸까요
-
해결됨처음 만난 리액트(React)
Custom Hook에 관해 질문이 있습니다!
안녕하세요. 소플님.Custom Hook에 대해서 질문이 있어 글을 남깁니다.import {useState, useEffect} from 'react'; // 커스텀 훅 function useUserStatus(userId){ const [isOnline, setIsOnline] = useState(null); useEffect(() =>{ function handleStatusChange(status){ setIsOnline(status.isOnline); } ServerAPI.subscribeUserStatus(userId, handleStatusChange); return () =>{ ServerAPI.unsubscribeUserStatus(userId, handleStatusChange); } }); return isOnline; }function UserStatus(props){ // 중복된 로직을 custom hook으로 추출하고 호출하여 간편하게 사용 const isOnline = useUserStatus(props.user.id); if (isOnline == null) return "대기중..."; return isOnline ? '온라인' : '오프라인'; } function UserListItems(props){ // 중복된 로직을 custom hook으로 추출하고 호출하여 간편하게 사용 const isOnline = useUserStatus(props.user.id); return ( <li style={{color: isOnline ? 'green':'black'}} > {props.user.name} </li> ); }위 방식은 강의 내용대로 중복된 로직을 추출하여 Custom Hook을 만들고 함수 컴포넌트 내에서 호출하여 사용하는 방식입니다. 강의 내에서 " 여러 개의 컴포넌트에서 하나의 공통된 Custom Hook을 사용할 때 컴포넌트 내부에 있는 모든 state와 effects는 전부 분리되어 있다." 라고 말씀하셨는데 Custom Hook도 본질은 JS함수이기에 함수의 선언의 parameter와 사용의 argument는 다른 것과 같기 때문으로 이해해도 될까요? 좋은 리액트 강의 감사합니다. 꼭 완강하겠습니다!
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
5강 캐릭터 콤보액션에서 콤보액션데이터가 안잡히는대 왜그런건가요
24분 부분에 콤보액션데이터를 설정하는곳이 안잡힙니다.데이터에셋은 만들었고 cpp에서 빠진부분이 있는건가요?
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
time out 질문
현재 github actions 실행할때마다 계속 Run Command timeout 뜨는 상태입니다. swap 생성을 해주었는데도 계속 실패하네요..아래는 yml 코드입니다.# Workflow의 이름 # Workflow : 하나의 yml 파일을 하나의 Workflow라고 부른다. name: Deploy To EC2 # Event : 실행되는 시점을 설정 # main이라는 브랜치에 push 될 때 아래 Workflow를 실행 on: push: branches: - step3 # 하나의 Workflow는 1개 이상의 Job으로 구성된다. # 여러 Job은 기본적으로 병렬적으로 수행된다. jobs: # Job을 식별하기 위한 id deploy: # Github Actions를 실행시킬 서버 종류 선택 runs-on: ubuntu-latest # Step : 특정 작업을 수행하는 가장 작은 단위 # Job은 여러 Step들로 구성되어 있다. steps: - name: SSH(원격 접속)로 EC2에 접속하기 # Step에 이름 붙이는 기능 uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.EC2_HOST }} # IP 주소 username: ${{ secrets.EC2_USERNAME }} key: ${{ secrets.EC2_PRIVATE_KEY }} # 키페어 값 script_stop: script: | cd /home/ubuntu/spring-gift-point git pull origin step3 ./gradlew bootJar -x test sudo fuser -k -n tcp 8080 || true nohup java -jar build/libs/*SNAPSHOT.jar > ./output.log >&1 &
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
SkeletonParagraph()에 관한 질문입니다.
안녕하세요."Skeleton 사용하기"의 강의 내용을 구현하고 있습니다.pubspec.yamldependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.6 dio: ^5.5.0+1 flutter_secure_storage: ^9.2.2 json_annotation: ^4.9.0 retrofit: '>=4.0.0 <5.0.0' logger: any #for logging purpose flutter_riverpod: ^2.5.1 riverpod_annotation: ^2.3.5 skeletons: ^0.0.3restaurant_detail_screen.dart에서import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:skeletons/skeletons.dart'; return DefaultLayout( title: '불타는 떡볶이', child: CustomScrollView( slivers: [ renderTop( model: state, ), renderLoading(), // if (state is RestaurantDetailModel) renderLabel(), // if (state is RestaurantDetailModel) // renderProducts( // products: state.products, // ), ], ), ); }// SkeletonParagraph Logic SliverPadding renderLoading() { return SliverPadding( padding: EdgeInsets.symmetric( horizontal: 16.0, ), sliver: SliverList( delegate: SliverChildListDelegate( List.generate( 3, (index) => SkeletonParagraph( style: SkeletonParagraphStyle( lines: 5, ), ), ), ), ), ); }을 구현하고 재실행하면 다음과 같은 에러가 발생하고 있습니다.Skeleton용하기이미지가 작아서 텍스트로 붙여넣었습니다.Launching lib\main.dart on sdk gphone64 x86 64 in debug mode...Running Gradle task 'assembleDebug'...../../../../AppData/Local/Pub/Cache/hosted/pub.dev/skeletons-0.0.3/lib/src/widgets.dart:56:42: Error: The getter 'backgroundColor' isn't defined for the class 'ThemeData'. - 'ThemeData' is from 'package:flutter/src/material/theme_data.dart' ('/C:/flutter/packages/flutter/lib/src/material/theme_data.dart').Try correcting the name to the name of an existing getter, or defining a getter or field named 'backgroundColor'. color: Theme.of(context).backgroundColor, ^^^^^^^^^^^^^^^../../../../AppData/Local/Pub/Cache/hosted/pub.dev/skeletons-0.0.3/lib/src/widgets.dart💯46: Error: The getter 'backgroundColor' isn't defined for the class 'ThemeData'. - 'ThemeData' is from 'package:flutter/src/material/theme_data.dart' ('/C:/flutter/packages/flutter/lib/src/material/theme_data.dart').Try correcting the name to the name of an existing getter, or defining a getter or field named 'backgroundColor'. color: Theme.of(context).backgroundColor, ^^^^^^^^^^^^^^^Target kernel_snapshot failed: Exception여러가지로 찾아보았지만, 해결되지 않았습니다.이 문제에 대한 해결 방법에 대해 질문을 드립니다.감사합니다.
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
똑같은 변수의 이름을 바꿀때 한번에 바꾸는 단축키가 먼가요? 강의에서는 shift + f6 이라고 나오는데 맥북은 단축키가 먼지 궁긍하네요 ㅠ
똑같은 변수의 이름을 바꿀때 한번에 바꾸는 단축키가 먼가요? 강의에서는 shift + f6 이라고 나오는데 맥북은 단축키가 먼지 궁긍하네요 ㅠ
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
아이템 장착 Pt.1 ~ Pt.2 파트 문의
안녕하세요 선생님유니티 왕초보 질문 드립니다.강의 수강 도중 Pt.1 마지막 부분 Equipment UI 창 부분에서아이템 클릭 시 모든 아이템의 백그라운드 이미지가 Legendary(빨강색)로 설정되어 있는 것으로 보이는데요,Pt.2 파트로 넘어오니 작업한 게 없는거 같은데 각 아이템의 백그라운드 이미지가 등급에 맞게 조절되어 있는거 같습니다.현재 Pt.4 파트 수강 중인데 아이템 장착 / 탈착 시각 파츠에 EquippedItemIcon이 제대로 표기되지 않는거 같아 문의드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
url을 못찾겠답니다...
이거 컨트롤러안에있는 파일에서 import가 자동으로 되지도 않고 html에서는 url이 등록되지도 않았다하네요 실행시키면 Null만 받아오네요