orderItems.size 를 테스트 할때 같은 인스턴스가 orderitem에 중복저장 되는 것 같습니다. 1이 아닌 2가 나와요. List<OrderItem> orderItems = getOrder.getOrderItems(); for(OrderItem orderItem : orderItems) { sout (orderItem); } 하니까 같은 래퍼런스값을 가진 게 2번 똑같이 나왔습니다. 어디서 발생한건지 찾을 수 없어서 질문드려요
안녕하세요. 초보 개발자 명아주입니다. 궁금한게 있어서 문의드립니다. 제가 공부하다가 놓친걸 수도 있는데 아직 잘 이해가 안되는 부분이 하나 있습니다. 예를들어서 Member member = new Member(); member.setName("hello"); em.persist(member); member.setName("jpa"); 이런 코드가 있을때 예상 : member가 영속성 컨텍스트에 들어감 트랜잭션 종료 때, flush할때 변경감지까지 포함해서 한 번의 쿼리만 나감 insert into member values (1, 'jpa'); 실제 : insert into member values (1, 'hello'); update member set name = 'jpa'; 영속성 컨텍스트에 들어가있다가 아직 플러시 되지 않은 상태에서 변경되면 마지막에 변경된 사항으로 insert 한번만 나갈 줄 알았는데 실제 동작은 insert, 그리고 변경감지에 의한 update가 발생하더라구요. 저번에 말씀하셨던 것중 얼핏 기억나는 스냅샷? 같은 걸로 영속성에 들어간 상태를 스냅샷 찍어놓고 그거에 대한 insert 쿼리가 나가고 그 후에 변경감지를 처리하는건가요?? 궁금합니다! 감사합니다.
안녕하세요. Test 코드에서 public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; 이렇게 돼있던데요. 여기서 @Autowired로 주입을 받아야 하는 이유가 무엇인가요? 그냥 MemberRepository memberRepository = new MemberRepository(); 로 해도 될거같아서 해봤는데 에러가 나더라고요... Member 클래스는 그냥 Member member = new Member(); 이 형태로 쓸 수 있는데, MemberRepository 클래스는 어차피 예제 상황이라 싱글톤으로 안써도 되는 상황인데도 왜 굳이 의존성 주입으로만 해야하는건지 궁금합니다.
App 파트에서 workspace다음 와일드카드/* 를 표시해주셔야 합니다 workspace 안에서는 path에 /workspace/:workspace를 쓰면 App에서 workspace/:workspace/* 가 있어서 두개가 중복되기때문에 바로 /channel/: channel 로 path를 작성하시면 됩니다.
안녕하세요. 환경설정 영상에도 next.config.js 파일이 없는데 이번영상에서 next.config.js파일을 수정하는 부분이 있습니다. 해당 파일은 영상을 따라해도 생성되지 않는데 확인을 요청드립니다. server쪽 폴더에도 작업한 내용이 없는데 영상에는 파일들이 있는것 같습니다. 아마 이전영상에 이어 촬영되지 않은것 같은데 확인을 요청드립니다.
안녕하세요 강의를 듣고 복습하다가 유니크 제약조건에 대해서 궁금한 점이 생겨서 이렇게 질문을 드립니다. 책에서는 @Table(name = "Member", uniqueConstraints = @{UninqueConstraint ~~}) 이런식으로 적혀있는데 그러면 유니크 제약조건을 Member라는 테이블 에 있는 모든 colum에 거는건가요? 그리고 인터넷에서 찾아보니 @Column(unique = true)이렇게도 사용하던것 같던데 이렇게 사용하면 해당 @Column에만 유니크 제약조건을 거는 것이 맞나요?
강의자료로 제공해주신 소스코드를 모두 확인했는데도 계속 NullPointException 에러가 납니다. 한 가지 다른 점이 있다면 @RunWith를 @ExtendWith으로 변경했습니다. 이유를 알 수 있을까요? java.lang.NullPointerException at jpabook.jpashop.service.MemberServiceTest.회원가입(MemberServiceTest.java:30) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
환경 OS : Mac M1 Pro macOS Monterey Version 12.1 Intellij : Intellij IDEA 2021.3.1(Ultimate Edition) Build #IU-213.6461.79, built on December 29, 2021 Java Version : openjdk version "11.0.11" 2021-04-20 오류 메시지 Could not load wrapper properties from '{프로젝트 경로}/{프로젝트 명}/gradle/wrapper/gradle-wrapper.properties'. 현상 start.spring.io에서 [프로젝트 환경설정] - [프로젝트 생성] 후 Intellij에서 Open을 통해 프로젝트의 build.gradle Open - 오픈 -> 오픈시 Open as Project를 클릭 Window 10에서는 별다른 설정 없이 Gradle에서 라이브러리를 정상적으로 다운 하였으나, Mac에서는 Build 에러 발생(오류 메시지 참조) 해결을 위한 진행 사항 1. 'Could not load wrapper properties from Intellij' 키워드로 검색결과 gradle 버전 문제로 확인되었으나, 해당 프로젝트로 Window 10환경에서 정상적으로 gradle Build되어 해당 케이스 제외 2. Intellij에서 제공하는 New Project를 사용하여 Gradle 프로젝트 Build가 성공 ※ 정상적으로 build를 성공 하였으나, 원인 확인을 위한 분석 진행 분석 사항 1. start.spring.io에서 생성한 프로젝트(이하 spring)와 Intellij에서 생성한 프로젝트(이하 Intellij)의 gradle-wrapper.properties 비교 spring의 distributionUrl : https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip Intellij의 distributionUrl : https\://services.gradle.org/distributions/gradle-7.1-bin.zip 두 설정의 gradle 버전은 각 7.3.3-bin.zip과 7.1-bin.zip으로 버전차이가 있음 Case 1. Intellij 프로젝트의 설정파일을 spring 프로젝트의 설정파일로 덮어씌웠으나 동일한 에러 발생 Case 2. spring 프로젝트의 설정파일을 Intellij 프로젝트의 설정파일로 덮어씌웠으나 정상 결과 : 설정파일 또는 버전의 문제가 아님. 2. 구글링 중 Intellij와 Gradle sync에러 관련 글 확인결과 블로거가 Intellij의 log를 확인 한것을 따라 Intellij의 로그 체크결과 권한 관련 사항이 문제 에러로그 : java.nio.file.FileSystemException: '{프로젝트 경로}/{프로젝트 명}/gradle/wrapper: Operation not permitted' [결론 및 해결 방안] 권한의 문제로 시스템 환경설정 - 보안 및 개인 정보 보호 - 전체 디스크 접근 권한 - Intellij IDEA.app 권한 부여 [질문사항] 1. 권한 허용을 하지 않아도 Intellij에서 생성된 프로젝트는 Build성공한 이유가 궁금합니다. 2. 추가로 Mac에서는 '전체 디스크 접근 권한'을 허용하고 진행하는 것인지, 혹시 환경의 문제가 있는건지 궁금합니다. 긴 질문사항 읽어주셔서 감사합니다 .
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. PHP 학습을 위해 비트나미를 PC에 설치했습니다. 그런데 설치 도중에 It seems you have an antivirus running. In some cases, this may slow down or interfere the installation of the software. Please visit the following link to learn more about this. 라는 문구가 떴는데 설치는 문제 없이 되는 것 같아 대수롭지 않게 넘어갔었습니다. 그런데 며칠 사용하고 나니 아파치가 정상적으로 실행되지 않습니다. 확실치는 않지만, norton 백신 프로그램에서 (ip)의 침입 시도가 차단되었습니다. 라는 메시지가 뜬 이후로 문제가 있는듯합니다. 도중에 아파치 웹서버를 재시작하는 경우가 있어 로그가 조금 길지만 비트나미 에러 로그를 통해 봤을 때는 다음과 같이 나왔습니다. [Sun Jan 23 22:10:30.258215 2022] [mpm_winnt:notice] [pid 6176:tid 476] AH00422: Parent: Received shutdown signal -- Shutting down the server. [Sun Jan 23 22:10:32.283605 2022] [mpm_winnt:notice] [pid 10760:tid 612] AH00364: Child: All worker threads have exited. [Sun Jan 23 22:10:32.303958 2022] [mpm_winnt:notice] [pid 6176:tid 476] AH00430: Parent: Child process 10760 exited successfully. [Sun Jan 23 22:12:20.085106 2022] [ssl:warn] [pid 20908:tid 648] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name [Sun Jan 23 22:12:20.125116 2022] [ssl:warn] [pid 20908:tid 648] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name [Sun Jan 23 22:12:20.147121 2022] [mpm_winnt:notice] [pid 20908:tid 648] AH00455: Apache/2.4.51 (Win64) OpenSSL/1.1.1l PHP/7.4.27 configured -- resuming normal operations [Sun Jan 23 22:12:20.147121 2022] [mpm_winnt:notice] [pid 20908:tid 648] AH00456: Apache Lounge VC15 Server built: Oct 8 2021 10:03:59 [Sun Jan 23 22:12:20.147121 2022] [core:notice] [pid 20908:tid 648] AH00094: Command line: 'C:\\Bitnami\\WAMPST~1.27-\\apache2\\bin\\httpd.exe -d C:/Bitnami/wampstack-7.4.27-0/apache2 -f C:\\Bitnami\\WAMPST~1.27-\\apache2\\conf\\httpd.conf' [Sun Jan 23 22:12:20.153123 2022] [mpm_winnt:notice] [pid 20908:tid 648] AH00418: Parent: Created child process 8232 [Sun Jan 23 22:12:20.986920 2022] [ssl:warn] [pid 8232:tid 540] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name [Sun Jan 23 22:12:21.028930 2022] [ssl:warn] [pid 8232:tid 540] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name [Sun Jan 23 22:12:21.048935 2022] [mpm_winnt:notice] [pid 8232:tid 540] AH00354: Child: Starting 64 worker threads. 현재 이 로그도 막 재설치한 상태이기에 구동은 됩니다만, 이전에도 이러다가 아파치 웹 서버가 작동하지 않았기에 이또한 문제가 될 것이라 생각됩니다. 비트나미에서는 다음 링크를 통해 설정을 바꿔주라고 했는데 백신 프로그램도 다르고 해서 어떤 부분을 어떻게 바꿔줘야 할지도 모르겠습니다.. https://bitnami.com/antivirus
선생님 안녕하세요 강의 무지 잘 보고 있습니다. 주니어 개발자 이기도 하고, 웬만해서는 security 코딩할 기회가 없다보니 소문을 듣고 찾아와서 듣게 되었습니다. 요즘 선생님이 하시는 말씀이나 답변들을 보면서 대단하다고 느끼는 중, 저도 이러한 학식을 배우고 싶어 글을 남기게 되었습니다. 다름 아니라, 혹 공부하시는 방법이 따로 있을까요?? 배워야 할건 많고 영어도 못하여 한계가 느껴져서 어떠한 방식이 있을까 싶어 연락드려봤습니다.. 제가 여러 강의는 몇번 보았는데요..타 강의 선생님이 절대 낮은 수준은 아니신데 개인적으로 한단계 레벨이 더 높은거 같아서 학습방법이라던지, 혹은 제가 따라할 수 있는 방법이 없을까 해서 연락드렸습니다.. 개인적으로는 메일로 소통하고 싶지만 바쁘신거 같아 무례를 범하는거 같지만 이렇게 공개적인 게시판에 남기게 되었습니다. ps.메일 주소 주시면...감사하겠사옵니다..ㅜㅜ올 한해도 대박 나시길 바랍니다. 좋은강의 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] build.gradle 파일에 jdbc 라이브러리를 추가하고, Load Gradle Changes도 해보고 File -> Open -> build.gradle을 선택해서 Open as Project도 해보았는데 JdbcTemplate을 import 못하고 있습니다. 어떤 부분에 문제가 있는 건가요?
mobx react next 로 하고 있는데 runInAction 에서 비동기처리를 하려면 어떻게 해야되나요? Component.tsx const store = useIndexStore(); useEffect(() => { const fetchData = async () => { await store.loadNewMemberData(); console.log(store.newMember) } fetchData(); }, []) 일단 훅스 컴포넌트에서 useEffect에서 store 에 저장된 정보를 불러와야되는데 Promise 기때문에 따로 함수를 만들어줘서 호출을 했고요. useEffect 뜯어보니 함수 리턴타입이 void|Destructor(?) 라 Promise 타입을 못받아서 저렇게 만들었습니다. 1. useEffect 에서 비동기 작업을 할때 저렇게 async 함수 만들어서 호출해야되는건가요? 2. async 함수를 만들었으면 꼭 await 으로 호출안해도 되는건가요? store.ts class IndexStore { root; repository rtrMenu: MenuItem[] = []// constructor(root: RootStore, repository: BaseRepository) { this.root = root this.repository = repository makeAutoObservable(this) } loadRealtimeRequestData = async (): Promise<void> => { runInAction(() => { this.rtrMenu =this.repository.getRealTimeRequestItem() }); } } store에선 loadRealtimeRequestData() 함수에서 네트워크 요청한 결과를 받습니다. await this.repository.... 여기가 await axios.get() 이런 역할을 하게 되는데 then 을 하면 쉽게 해결될문제지만 async awiat 으로 runInAction 안에서 처리할려면 어떻게 해야되나요?
안녕하세요, 강의 잘 듣고 있습니다 :) 다름이 아니라, Gradle 설정 후 sourceset 으로 되지 않고 ClassPath 로 뜨더라고요. 왠만한 설정들은 다 똑같은데 버전 차이인지 모양은 조금씩 다른 것 같습니다. 그대로 진행해도 괜찮을까요? 답변 미리 감사드립니다 :)