묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Next + React Query로 SNS 서비스 만들기
package.json의 dependencies와 devDependencies의 차이
강의 잘 듣고 있습니다. dependencies와 devDependencies의 차이에 대해서 궁금한데요, 둘의 차이점은 앱 배포 시 포함이 되느냐 안되느냐의 차이로 알고 있습니다. 그런데 tanstack-query나, date-fns를 devDependencies에 설치하고 vercel에 배포를 하더라도 배포된 프로덕션 환경에서 정상적으로 작동하는데요, 이에 대한 챗 gpt의 답변은 다음과 같습니다. Vercel의 배포 프로세스Vercel은 next build를 실행하여 프로젝트를 빌드하고, 필요한 의존성을 설치합니다. 이때 dependencies와 devDependencies 모두가 설치됩니다.배포 환경에서도 devDependencies의 패키지가 포함될 수 있는 이유는 Next.js의 빌드 시점에 이 패키지가 필요하기 때문입니다.예를 들어, @tanstack/react-query는 런타임에 필요한 라이브러리인데, 이를 devDependencies에 넣어두었더라도 next build 과정에서 번들된 코드에 포함됩니다. 따라서 Vercel에서 배포 후에도 런타임에 사용 가능합니다.React Query와 런타임 의존성@tanstack/react-query는 런타임에 작동해야 하는 의존성입니다. 따라서 빌드 결과물에 포함되며, devDependencies에 설치된 상태라도 번들링 과정에서 런타임에 필요한 모든 코드를 포함합니다.@tanstack/react-query-devtools는 개발 도구용이지만, 프로덕션 환경에서는 기본적으로 UI가 렌더링되지 않아 에러를 발생시키지 않습니다.dependencies와 devDependencies의 차이dependencies: 런타임에 반드시 필요한 의존성.devDependencies: 개발 및 빌드 단계에서만 필요한 의존성.Next.js에서는 빌드 과정에서 사용하는 패키지든, 런타임에 사용하는 패키지든 모두 번들링되기 때문에 devDependencies에 패키지가 있어도 문제가 없는 것처럼 보일 수 있습니다.Vercel이 에러 없이 작동하는 이유@tanstack/react-query는 devDependencies에 있지만, 빌드 과정에서 번들링되어 클라이언트 코드로 전달되었기 때문에 런타임에서 정상적으로 작동합니다.프로덕션 환경에서 ReactQueryDevtools가 기본적으로 비활성화 상태라 에러가 뜨지 않습니다.답변이 잘 이해가 안되어서 그러는데 빌드 시점에 dependencies와 devDependencies에 있는 모든 라이브러리가 설치되는건가요? 아니면 devDependencies에 있는 라이브러리라도 런타임 시점에 필요하다면 빌드 시에 설치가 되어 프로덕션 환경에 포함되는건가요?제가 이해한 바로는, devDependencies에 있는 라이브러리더라도, 런타임 환경에서 필요한 라이브러리라면 알아서 분류하여 프로덕션 환경에 포함되도록 설치한다고 이해하였는데, 이렇게 된다면 dependencies와 devDependencies의 경계가 모호해지는 것 아닌가요?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
DTO 설정과 서비스계층 만들기 강의에서 TodoServiceTests를 실행시켰는데 에러가 발생했습니다
강의를 따라서 코딩하고 실행시켜 봤는데 아래와 같은 내용으로 에러가 발생했습니다. 어떤 곳이 문제가 있는 알려 주신다면 감사하겠습니다.혹시 확인하고 싶으신 게 있다면 알려 주셨으면 합니다. :: Spring Boot :: (v3.4.1)2025-02-11T11:28:59.109+09:00 INFO 2836 --- [apiserver] [ Test worker] o.z.apiserver.service.TodoServiceTests : Starting TodoServiceTests using Java 21.0.5 with PID 2836 (started by zzamp in C:\Users\zzamp\Desktop\apiserver\apiserver)2025-02-11T11:28:59.110+09:00 INFO 2836 --- [apiserver] [ Test worker] o.z.apiserver.service.TodoServiceTests : No active profile set, falling back to 1 default profile: "default"2025-02-11T11:28:59.445+09:00 INFO 2836 --- [apiserver] [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.2025-02-11T11:28:59.484+09:00 INFO 2836 --- [apiserver] [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 32 ms. Found 1 JPA repository interface.2025-02-11T11:28:59.760+09:00 INFO 2836 --- [apiserver] [ Test worker] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]2025-02-11T11:28:59.801+09:00 INFO 2836 --- [apiserver] [ Test worker] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.6.4.Final2025-02-11T11:28:59.824+09:00 INFO 2836 --- [apiserver] [ Test worker] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled2025-02-11T11:28:59.996+09:00 INFO 2836 --- [apiserver] [ Test worker] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer2025-02-11T11:29:00.015+09:00 INFO 2836 --- [apiserver] [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...2025-02-11T11:29:00.071+09:00 INFO 2836 --- [apiserver] [ Test worker] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection org.mariadb.jdbc.Connection@72f24a842025-02-11T11:29:00.073+09:00 INFO 2836 --- [apiserver] [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.2025-02-11T11:29:00.107+09:00 INFO 2836 --- [apiserver] [ Test worker] org.hibernate.orm.connections.pooling : HHH10001005: Database info: Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)'] Database driver: undefined/unknown Database version: 10.11.10 Autocommit mode: undefined/unknown Isolation level: undefined/unknown Minimum pool size: undefined/unknown Maximum pool size: undefined/unknown2025-02-11T11:29:00.552+09:00 INFO 2836 --- [apiserver] [ Test worker] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)2025-02-11T11:29:00.580+09:00 INFO 2836 --- [apiserver] [ Test worker] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'2025-02-11T11:29:00.892+09:00 WARN 2836 --- [apiserver] [ Test worker] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning2025-02-11T11:29:01.216+09:00 INFO 2836 --- [apiserver] [ Test worker] o.z.apiserver.service.TodoServiceTests : Started TodoServiceTests in 2.251 seconds (process running for 3.134)Mockito is currently self-attaching to enable the inline-mock-maker. This will no longer work in future releases of the JDK. Please add Mockito as an agent to your build what is described in Mockito's documentation: https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#0.3WARNING: A Java agent has been loaded dynamically (C:\Users\zzamp\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy-agent\1.15.11\a38b16385e867f59a641330f0362ebe742788ed8\byte-buddy-agent-1.15.11.jar)WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warningWARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more informationWARNING: Dynamic loading of agents will be disallowed by default in a future releaseHibernate: select t1_0.tno,t1_0.complete,t1_0.content,t1_0.due_date,t1_0.title from tbl_todo t1_0 where t1_0.tno=?No value presentjava.util.NoSuchElementException: No value present at java.base/java.util.Optional.orElseThrow(Optional.java:377) at org.zerock.apiserver.service.TodoServiceImpl.get(TodoServiceImpl.java:24) at org.zerock.apiserver.service.TodoServiceTests.testGet(TodoServiceTests.java:20) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended> Task :testTodoServiceTests > testGet() FAILED java.util.NoSuchElementException at TodoServiceTests.java:20타깃 VM에서 연결 해제되었습니다. 주소: 'localhost:4408', 전송: '소켓'2025-02-11T11:29:32.264+09:00 INFO 2836 --- [apiserver] [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'2025-02-11T11:29:32.265+09:00 INFO 2836 --- [apiserver] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...2025-02-11T11:29:32.268+09:00 INFO 2836 --- [apiserver] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.> Task :test FAILED1 test completed, 1 failedFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':test'.> There were failing tests. See the report at: file:///C:/Users/zzamp/Desktop/apiserver/apiserver/build/reports/tests/test/index.html* Try:> Run with --scan to get full insights.BUILD FAILED in 36s5 actionable tasks: 5 executed
-
미해결Flutter 고급 - 현업 수준의 아키텍처
ingredient view model의 _loadRecipe
ingredient view model 의 _loadRecipe 함수는 생성자에서실행이 안되는 이유에 대해서 궁금합니다.동일하게 _getDishesByCategoryUseCase.execute를 사용하는 _fetchDishesByCategory 는home view model에서 생성자에서 쓰이는데 어떤 차이가 있나요
-
해결됨초보자를 위한 BigQuery(SQL) 입문
4-4강 EXTRACT 함수 사용 (04:15 부근)
카일스쿨님 좋은 강의 감사드립니다!EXTRACT함수 예시 쿼리를 실행하니까 위와 같이 오류가 나서 여쭤봅니다. gpt한테 물어보니 AS DATETIME을 쓰지 말라고 하던데, 문법 자체가 바뀐 걸까요? 또한, 예시 쿼리 만드실 때 date, year 뽑는 쿼리에는 AS DATETIME을 안 쓰셨는데, month, day, hour, minute에는 쓰셨던 이유도 궁금합니다!
-
해결됨[2025] 비전공자도 가능한 React Native 앱 개발 마스터클래스
num 타입관련해서 문의드립니다
const TypedNumber = (num : any) => { setNumber((prev) => { if (prev === "0") return num; return prev+ num; }); }; num 타입으로 인해 오류가 나서 any로 지정을 해야만 하는데요.. 강사님 코드에는 any 타입을 지정안해 오류가 아나는데 차이가 뭔가요?
-
미해결[입문자를 위한 UE5] Part4. 언리얼 엔진 C++
의구심이 듭니다
어찌저찌 part4까지는 들으며 왔는데솔직히 그간 내용 전부 다 기억하고 안보고 다시 할 수 있다곤 말못하겠는데.. 오늘 DataAsset 관련 파트 보면서 이걸 여태까지 내가 들은 수업으로 이해할 수 있는걸까? 란 생각이 듭니다. 물론 여태까지 이런 부분들이 꽤나 많았지만 다음에 '필요할때' 다시 찾아보면 되지, 굳이 다시 언급되는 부분이 아니면 이런식으로 넘어왔는데. 이렇게 하나씩 하나씩 차곡차곡 모르는게 쌓이다보니 제가 제대로 하고 있는건지 의구심이 좀 드네요. c++ 문법도 아직 제대로 다루지 못하는 두 달배기 뉴비인데이런식으로 공부하는게 맞을까요..?
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
본 강의의 수강 목적(혹은 목표) 입니다.
안녕하세요. 저는 본 강의를 수강하면서 아래와 같은 지식과 방향성을 가지게 되었으면 합니다.<현재 겪고 있는 문제>최근 이직 후, 전직 대비 데이터를 더 활발하게 활용하고 있는 현직에서 데이터를 활용해야 된다는 압박막상 데이터를 활용한다고 생각하니 데이터 추출에 매몰되어 있었는데, 그보단 PM직함에서는 데이터 문해력이 중요하다고 생각하게됨 <얻고 싶은 것>데이터 기반으로 현황을 읽어내는 사고현황을 읽을 수 있는 데이터를 어떻게 수집하고 해석해야하는지현황을 파악할 수 있는 데이터로그 설계제품에 대해 잘 파악하려면 어떤 데이터들이 쌓여야하는지지속적 모니터링이 가능한 데이터 레포트 작성제품을 지속 관찰하기 위해서 효과적인 시각화가 필요<노력 방법과 향후 목표>매일 30~40분의 지속 수강매일 업무 전후 2~3개의 강의 수강수강한 당일 혹은 익일 학습한 내용을 나의 포지션에 적용하는 생각 10분이런 모습이고 싶다데이터 리터러시를 통해 어떻게, 무엇이에 대해 배우고 이후에는 실제 SQL등을 통한 추출 능력을 위한 학습으로 진행
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ArrayEx6 문제 질문입니다
System.out.println(count+"개의 정수를 입력하세요. "); for (int i = 0; i < numbers.length; i++) { numbers[i] = input.nextInt(); if (numbers[i] > max) { max = numbers[i]; } if (min > numbers[i]) { min = numbers[i]; } } 이렇게 for문 안에서 max와 min 값을 계속 비교를 해도 상관없을까요?
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
Swagger API 3.x 오류..
사진과 같이 뜹니다. 강사님과 다른 코드가 없는 것 같은데 이러네요..ㅠ 방법이 있을까요?
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
채팅방 참여자 목록 - 채팅방 입장/퇴장 실시간 이벤트 처리
해당 기능을 구현까지 완료했고, 결과는 도출합니다.궁금한 점이 사용자가 채팅방을 나간 후 퇴장 처리 메세지가 창에 나타날 때 Delay? 나간 후 한참 시간이 지난 후에 나타나는데, 자연스러운 상황인지 아니면 제가 잘못한 건지 판단이 되지 않습니다..
-
해결됨책 3권을 영상으로 만든 Unity 게임 개발
애니메이션 질문
그 처음 스워드맨 애니메이션 만들때 스워드맨idle은 스프라이트 클릭해서 이미지를 추가시켰는데 왜 스워드맨 어택모션은 추가시키지말고 드래그해서 아는지 다시 한번 설명해주실 수 있나요?? 이해가 잘 안되서요 그리고 스워드맨 idle처음 생성할때 왜 마지막 점포인트는 삭제하는지 알 수 있을까요
-
미해결인공지능을 제대로 쓰는 개발자 되기: 코딩 부트캠프 실전 특강
보충강의 섹션에는 원래 강의가 없는 건가요?
보충강의 섹션에는 원래 강의가 없는 건가요?
-
해결됨오브젝트 - 기초편
도메인의 범위
안녕하세요! 영호님. 강의 정말 잘 보고 있습니다. 강의에서 도메인을 '소프트웨어로 구현할 요구사항의 범위' 라고 해주셨고, 예시로 들어주신 음식 배달 시스템에서 메뉴, 주문, 결제가 도메인이 되었습니다. 제가 궁금한 점은 다음과 같습니다.위와 같은 방식으로 도메인을 결정한다면, 인증을 위한 access token, refresh token 등은 도메인에 포함되지 않나요?이런 기술적 구현체들은 실제 세계에는 없는 개념인데, 관련 모델과 서비스들을 어디에 배치하는 게 좋을까요?반대로 서비스를 이용할 때 본인인증(kcb와 같은)이 필요한 상황이라면, 실제 세계에서의 신분증 검사 같은 방식의 신원 확인을 대체하는 Verification이라는 도메인이 생성되는 건가요?물론 정답은 없겠지만, 도메인 모델링에서 기술 구현과 비즈니스 요구사항의 경계를 설정하는 방법에 대한 인사이트를 얻고 싶습니다. 감사합니다!
-
미해결15일간의 빅데이터 파일럿 프로젝트
cpu usage 에러
모니터링을 하고 싶은데 위 에러가 뜨더니 이후엔 Magnagement를 켜면 나머지 기능들에 에러가 나서 작동이 아예 안되는 수준입니다.
-
미해결15일간의 빅데이터 파일럿 프로젝트
쿼리 실행시 10000 에러
이런 에러가 자주 나는데 왜 나는 걸까요? 쿼리실행시 가끔 떠서 여쭤봅니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
트랜잭션 내에서 엔티티를 저장하는 경우. (+ Unique 제약 조건)
1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요! 현재 JPA 강의를 수강하고, 프로젝트를 진행중인데 의문점이 들어서 질문 드립니다. 상황은 다음과 같습니다!public UserService { @Transactional public void loginExample(String phoneNumber) { // 저장 Member member = memberRepository.save(Member.from(phoneNumber)); // JWT Logic. // // return; } }코드가 위와 같을때, Member Entity의 id 생성 전략이 IDENTITY 인 경우, save 호출 시점에 DB에 조회를 발생시켜 아이디를 가져오는 것으로 이해하였습니다. 만약 동일한 핸드폰번호로 동시에 요청이 들어오게 된다면,(핸드폰 번호는 Unique 제약 조건을 갖고 있습니다.)특정 트랜잭션 A에서 save 까지만 성공한 후, 컨텍스트 스위칭이 발생하여 트랜잭션 B에서 save 함수를 새로 호출하게 되는 시점에 트랜잭션 A가 아직 Commit 되지 않았는데 어떻게 충돌을 감지할 수 있는지 궁금합니다! * save 이후에 예외를 반환해도 Rollback이 되지 않고, 그대로 Row가 남아있는걸로 보아선, JPARepository.save 메서드는 부모 트랜잭션과 별개의 트랜잭션으로 동작하는 것일까요? 따라서, ID의 GenerationType 이 AUTO(IDENTITY)인 경우에 save 메서드는 부모 트랜잭션에 종속되지 않은 독립된 트랜잭션인 것인지가 궁금합니다..!
-
해결됨실전! 스프링 데이터 JPA
하이버네이트 프록시객체 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 영한 님 강의를 들으며 공부하던 중 findAll 메서드를 통해 가져온 List<Member> members의 각 Member들이 team 필드에 프록시 객체를 들고 있다고 말씀하셨는데, 해당 프록시 객체의 값을 디버깅해 본 결과 그 안에 이미 값이 존재 했습니다. console을 확인해보니 아직 db에 쿼리를 날리기 전인데(쿼리를 날리기 전인지 p6spy에 들어오기 전인지는 확인하지 못한 점 죄송합니다.) members의 각 Member들의 team필드에 프록시 객체가 존재하지만 그 안에 이미 team의 값이 들어있는데 em.clear()를 통해 영속성콘텍스트마저 비워줬는데 어떻게 이미 알고 있는 건가요?
-
해결됨김영한의 실전 자바 - 기본편
상속 관계에서 사용하는 this
package extends1.ex; class ClassA { String value = "A"; } class ClassB extends ClassA { String value = "B"; void printValue() { System.out.println(this.value); // this는 new ClassC()에 의해 생성된 참조로 접근하니 C가 나와야하는거아닌가? } } class ClassC extends ClassB { String value = "C"; } public class Main { public static void main(String[] args) { ClassC obj = new ClassC(); obj.printValue(); // B System.out.println(obj.value); // C } } this는 인스턴스 자기자신에 대한 참조입니다. 상속 관계에 있고 new ClassC()로 생성하였으니 this는 ClassC에 대한 참조라고 생각했습니다. main()의 obj.printValue()는 ClassC 부터 탐색하여 ClassB에서 발견되었습니다. 해당 메서드 안에서 this.value가 있는데 이 때의 this는 ClassC에 대한 참조로 접근해야하는거아닌가요? ClassB에 있는 value로 접근하는 이유가 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
"스프링이란"이라는 강의까지 듣고 질문 올려봅니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 스프링부트의 장점으로"단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성"이라는 말이 나오면서 톰캣같은 웹서버를 내장하고 있다고 해주셨는데,톰캣은 그러면 스프링부트에 내장된 “웹서버”이기도 하면서 “WAS”이기도 한 것일까요?아니면 톰캣은 "웹서버"만을 지칭하는 건가요?
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
JS 파일이 IDE(Cursor)에서 출력되지 않아요...
사진과 같구요. Node.js, Code Runner 설치했습니다.오류 코드도 구글링해 봤는데 해결 방법을 못 찾겠어서 올려 봅니당...