내 업무를 대신 할 파이썬(Python) 웹크롤링 & 자동화 (feat. 주식, 부동산 데이터 / 인스타그램)
Q1. 아래 강의 화면에서 , 개발자도구의 저 내용은 , 개발자도구에서 어느 메뉴를 클릭해 들어가면 나오는 내용인가요 ? 그러니까 , 왼쪽 브라우저에서는 어떤 상태이고 ( 삼성전자 내용 전체를 보여주는 상태 ?) 이고 , 오른쪽 개발자도구에서는 어떤 메뉴들을 클릭해야 저 소스코드가 보이나요 ? Q2. 강의 동영상에서는 , 브라우저에서 “ 일별시세 테이블 ” 근처에서 마우스커서를 클릭하면 , 오른쪽 개발자도구에서 , 즉시 반응하여 표시가 되는 것을 볼 수 있습니다 . ( 보라색 표시들 ) 제 PC 크롬브라우저에서는 지금까지 본 적이 없는 반응입니다 . 어떤 설정을 해줘야 하나요 ?
시퀄라이즈를 복습하던 도중 최대한 강의내용을 기억하고 공식문서를 참조하면서 해보려고 하는데 공식문서를 보면 cli 관련된 것은 없고 공식문서에 적혀있는대로 작성해보면 cli로 init 한것과는 좀많이다르고 실행시키기도 따라서 쳐보는데도 쉽지않네요 저런공식문서는 좀 잘 참조하고 사용하는법이있나요? 연차가 쌓이는만큼 공식문서를 못보면 안되는상황이라서요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 수업 잘 듣고 있는 수강생입니다 ^^ 혹시 강의를 들으면 블로그에 정리해가면서 듣고 싶은데 출처 명확하게 밝힌 후 강의 자료의 사진이나 일부 문장을 발췌해서 사용해도 괜찮을까요??
안녕하세요, 먼저 좋은 강의 감사드립니다. 강의 공부 이후 몇가지 질문이 있어 글 남깁니다 ! 1. 아래 코드에서 bcrypt . hash (user . password , salt , function ( err , hash ) { //암호화 할 데이터, 암호 해시에 사용할 솔트.숫자로 지정되면 지정된 라운드 수로 솔트가 생성되어 사용됨. //cb : 데이터가 암호화 되면 호출 발생(오류,암호화된 양식을 제공하는 콜백의 매개변수.) if (err) return next (err) ; user . password = hash ; next () ; } ) ; hash()의 콜백은 데이터가 암호화 되면 발생한다고 하였는데, 그럼 hash의 파라미터 두개가 들어온 시점에서 이미 암호화가 된것인가요? user.password = hash를 해주는 것이 암호화를 해주는 것 아닌가요? 2. userSchema . methods . generateToken = function ( cb ) { var user = this ; //jsonwebtoken을 이용해서 토큰생성하기. var token = jwt . sign (user . _id . toHexString () , " secretToken " ) ; user . token = token ; user . save ( function ( err , user ) { if (err) cb (err) ; cb ( null , user) ; } ) ; }; sign()에서 user.id를 toHexString()으로 해서 넣어줬는데, 그렇다면 만약 제가 db에 따로 id항목을 만들어서 1~관리한다고 치면 user._id가 아닌 user.id를 사용해도 괜찮은것인가요? 또한 위에서 save를 쓰는데 우리는 위에서 pre("save"를 만들었습니다. 그럼, 이 코드에서도 위에서 작성한 pre가 작동한 이후에 비밀번호가 바뀌는 경우가 아니기때문에 그냥 next()되는 것인가요? 3. 서버측 auth.js에서, let token = req . cookies . x_auth ; 이 코드는 cookies가 따로 선언된곳이나, 들어오는 request에도 쿠키가 있는지 잘 모르겠습니다. 어떻게 사용할수있는건가요 ?? 4. 서버측 user.js의 pre ("save, 중 //isModified("문서") : 가 수정된 경우 true를 반환하고, 그렇지 않으면 false를 반환한다. if (user . isModified ( " password " )) { //gensalt : generate Salt for my password which need to encrypted bcrypt . genSalt (saltRounds , function ( err , salt ) { 제가 이해한 바로는, 이 isModified는 password가 수정된 경우 true를 반환하는 함수인데, 우리는 회원가입 할 때 save 직전에 이 함수가 실행됩니다. 이 때 회원가입에서 사용되는 데이터는 클라이언트 측에서 보내온 데이터이구요. 그렇다면 password의 변경점이 없었다고 생각하는데 왜 true가 반환되어 실행되는 것인가요? genSalt도 아래에 있기에 입력숫자 -> salt변경도 아닌 것 같고, 혹시 db스키마를 만들면 기본값으로 들어있는 값이 있는것인가요 ? 5. loginPage에 onSubmit이 action Creater dispatch( loginUser(body) )에서 loginUser를 action 이 맞나요 ? 6. 혹시 //applyMiddleware : 미들웨어를 적용하는 것. //promiseMiddleware와 ReduxThunk를 적용하고, createStore를 통해 store를 만들어 준다. const createStoreWithMiddleware = applyMiddleware ( promiseMiddleware , ReduxThunk )(createStore) ; 와 같이 마지막에 (괄호)를 사용하는 문법은 어떤 문법일까요 ?(뭐라고 검색해서 찾아봐야할까요??) 저 코드를 arrow나 function 형태로 정리하면 어떤 식인가요? (아래 질문에 첨부한 코드에서 파라미터를 넣는 형식이 이해가 가지 않아서 질문합니다.) 7. 전체적인 흐름을 다시한번 파악하면서 공부중인데, redux의 type에 관해서 잘 이해가 가지 않습니다. types.js에서는 어째서 "login_user"와 같이 소문자를 넣어줬는지 (이 부분을 찾아보니 redux의 type권장 ??이라고 하는데 영어가 좀 부족해서 공식문서를 제대로 읽질 못했습니다 ㅠㅠ) _reducers 폴더에 user_reducer.js에 해당하는 내용이 어떤 파일에서 사용이 되었는지 (제가 이해하기로는 client/index.js에서 import Reducer from " ./_reducers "; < Provider store ={ createStoreWithMiddleware ( Reducer , window . __REDUX_DEVTOOLS_EXTENSION__ && window . __REDUX_DEVTOOLS_EXTENSION__ () )} > 에서 Reducer에서 자동으로 _reducers의 index.js를 파악하고, index.js 안에서 combine된 항목들 중 user reducer를 store로 올려 state를 관리하게 한다. 혹시 이게 맞을까요 ? ) 강의를 끝까지 다 들어보고 한번에 질문을 올려 질문이 너무 많은 것 같아 죄송합니다. 좋은 강의 찍어주셔서 감사합니다. 앞으로 로드맵 열심히 따라 가보도록 하겠습니다 !
내 업무를 대신 할 파이썬(Python) 웹크롤링 & 자동화 (feat. 주식, 부동산 데이터 / 인스타그램)
Q1. 아래 강의화면에서 115 행 “res.text” 하면 나온 결과에서 중간에 색깔이 파란색인 문자열들이 있습니다 . Href 뒤 문자열인 것 같습니다 . 그런데 , 저의 jupyter notebook 에서는 파란색이 없고 , 모두다 검은색입니다 … 뭘 해주면 될까요 ? Q2. 브라우저에서 현재 , 일별시세 테이블의 4 페이지를 누른 상태인데 , my_headers 변수 안에 있는 “referrer” 의 “page” 파라미터의 값이 3 인 이유는 , 4 페이지로 옮기기 “ 직전 페이지 ” 이기 때문인가요 ? 저는 일별시세 테이블 1 페이지 상태에서 , 바로 4 페이지를 눌렀더니 , referrer 의 page 가 “1” 이었습니다 . 이게 맞는거죠 ? Q3. 크롬 개발자도구에서 , 상단 메뉴 왼쪽에 “Clear” 가 있습니다 . 이 기능은 정확하게 어떤 경우에 사용해야 하나요 ? “finace.naver.com” 일별시세 표에서 , 1 페이지를 누르고 , 크롬 개발자도구를 open 한 후에 , 일별시세 4 페이지를 눌렀을 때 , 크롬 개발자도구에서 Preview/Response/Header 어느 곳에도 , 4 페이지를 눌렀던 request 가 전달되지 않았습니다 . 그런데 , 개발자도구에서 “clear” 버튼을 누른 후 , 일별시세 표의 4 페이지를 누르니까 , 개발자도구에도 반영이 되었습니다 . 그러니까 , 일별시세 표의 페이지를 변경할 때마다 , 개발자도구에서 “clear” 버튼을 눌러주어야 하나요?
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 김영한 개발자님. 항상 좋은 강의 감사합니다. 강의를 듣다가 궁금한 점이 생겨서 질문드려요. 9:39초에서 http request, response는 고객마다 데이터가 다 다르기 때문에 요청이 올때마다 계속 생성하는게 맞다는 것은 이해가 갑니다. 그런데, 왜 서블릿은 싱글톤으로 만들어야 되는지 잘 이해가 가지 않습니다. 제가 생각하기에는 만약 고객1이 /spring을 요청하고 고객2가 /hello를 요청한다면 이 둘의 데이터도 다르기 때문에 각자 생성해야되지 않나 싶어요ㅠㅠ 10:19초에서 말씀하신 것처럼 개별 요청이 오면 애플리케이션 로직을 작성하고 또 다른 요청이 오면 같은 서블릿에 또 다른 애플리케이션 로직을 작성하고.... 이런 식으로 동작하는 걸까요? 감사합니다.
void selectionsort(int arr[],int n) { int i,j,min_idx; min_idx=0; for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(arr[min_idx]>arr[j]) { min_idx=j; } swap(&arr[i],&arr[min_idx]); } } } 첫번째 for문 밑에 min_idx=i를 안쓰고 위에 처럼 코드를 써도 똑같이 출력될줄 알았는데 아니네요..(제 의도는 시작할 때 첫번째 원소를 최솟값이다! 라고 정해놓고 하려했습니다.) 이유를 잘 모르겠습니다..(혹시 변수 min_idx의 범위 때문인가요?)
안녕하세요 강의대로 프로젝트 진행 중 한 가지 문의를 드립니다 (팁 페이지 만들기 - 컨텐츠 리스트 만들기(RecyclerView 1) 강의 진행 중입니다) ContentRVAdapter()에 3개의 값을 갖고있는 ArrayList<String> 를 넘겼으나 화면에 3개의 content가 표시되지 않는데 원인이 무엇인지 알 수 있을까요? 아래 관련 소스를 이미지로 첨부하였습니다 확인 한번 해주시면 감사하겠습니다! 0. 콘텐츠 3개가 표시되지 않음 1. ContentRVAdapter -디버깅으로 getItemCount() items.size의 값은 3을 확인 - onCreateViewHolder(), onBindViewHolder() 한 번 씩만 호출되는 것으로 보이는데 놓친 개념이 있는 걸까요? 2. ContentListActivity 3. content_rv_item 4.activity_content_list
먼저 좋은 강의 감사드립니다^^ String tmp = s.toString(); 위처럼 코드를 작성하면 정상적으로 출력되지않고, [C@6bc7c054 [C@232204a1 [C@4aa298b7 이렇게 출력되는데요.. String.valueOf(s) 와 s.toString() 과의 차이가 궁금합니다.
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
안녕하세요 강의를 거의 다 듣다가 헷갈리는 개념이 있어서 복습중입니다. this와 *this에 대해서 잘 이해가 안되는 부분이 있어서 질문 드립니다. 아래와 같이 예시 클래스를 만들어 봤을 때 (멤버변수들은 제가 메모리에서 쉽게 찾아보려고 연속되게 넣은거고 의미 없습니다) class Simple { public: Simple& operator=(const Simple& rhs) { if (this == &rhs) return *this; } private: int mNum = 1; int mNum2 = 2; int mNum3 = 3; int mNum4 = 4; int mNum5 = 5; }; 궁금한 점은 *this는 객체 자신이다 라는게 과연 정확히 뭘까가 의문입니다. this는 자신이 속한 객체의 포인터인것은 이해가 가지만 *this 객체를 자신을 넘긴다는게 어떻게 가능한지 어떤 의미인지 의문입니다. 시작주소 + 어떠한 객체에 대한 헤더정보가 넘어가는것인가요 ? 제가 헷갈리는 이유는 예를 들어서 int num = 3; int* ptr = # cout << *ptr << endl; int arr[10] = { 0 }; int* arrptr = arr; cout << *arrptr << endl; 변수와 배열에 대해서 포인터를 만들었을 때 여기서 *ptr은 값 3이고, *arrptr은 첫번째 원소의 값 0이지 int arr[10]이거나 arr의 첫번째 원소의 주소가 아니기 때문에 *this가 객체 자신을 넘긴다 ?라는게 어떤 의미일지 이해가 잘 안갑니다. 결국 return 값으로 넘길수 있는것은 뭔가 한개일테고 데이터멤버 첫번째가 값이 아니면 시작주소 아닐까 싶은데. 만약에 단순히 시작주소라면 this ==&rhs 이 문장은 *this == &rhs로 바꿔도 똑같을테고요.. 결론적으로 질문은 *this가 객체 자신을 가리킨다는것이 어떤 의미인지 ?? 입니다. 객체는 일대일 대응이 안되다보니 가리킨다 라는 개념이 안 와닿습니다. 시작주소라고 하면 ? 그냥 포인터랑 다른점이 없는거 같구요. 뭔가 헤더 정보를 가지고 있는것인가요. + 구조체로 테스트 해보려고하면 C++ 이러한 피연산자와 일치하는 연산자가 없습니다. 피연산자 형식이 std::ostream << myStruct입니다. 아예 되지가 않습니다. 조사식으로 *strptr == my인 것은 확인했습니다. 여전히 어떻게 가능한지? 잘 이해는 안되네요 ㅠ struct myStruct my; struct myStruct* strptr = &my; cout << *strptr << endl;
안녕하세요? 이 강의를 보고, 이 강의를 토대로 토이 프로젝트를 진행하고 있습니다. 근데 계속 아래와 같은 Exception이 터지고 있습니다. 다수 회원을 생성 합니다! Hibernate: insert into member (member_id, modify_date, register_date, about_me, activated, email, name, nickname, password, phone) values (null, ?, ?, ?, ?, ?, ?, ?, ?, ?) Hibernate: insert into member_authority (member_id, authority_name) values (?, ?) 2022-02-09 23:42:57.821 WARN 11871 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 23506, SQLState: 23506 2022-02-09 23:42:57.821 ERROR 11871 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : Referential integrity constraint violation: "FKASNMJAR8JR5GAXVD7966P19IR: PUBLIC.MEMBER_AUTHORITY FOREIGN KEY(AUTHORITY_NAME) REFERENCES PUBLIC.AUTHORITY(AUTHORITY_NAME) ('ROLE_FAMILY')"; SQL statement: insert into member_authority (member_id, authority_name) values (?, ?) [23506-200] 2022-02-09 23:42:57.823 INFO 11871 --- [ main] o.h.e.j.b.internal.AbstractBatchImpl : HHH000010: On release of batch it still contained JDBC statements org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [FKASNMJAR8JR5GAXVD7966P19IR]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:276) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:233) at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:566) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:743) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:711) at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:654) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:407) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:174) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) at com.sun.proxy.$Proxy142.save(Unknown Source) at org.comunity.hongga.repository.MemberRepositoryTest.lambda$회원_100명_생성_상세_조회$0(MemberRepositoryTest.java:76) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Streams.java:104) at java.base/java.util.stream.IntPipeline$Head.forEach(IntPipeline.java:593) at org.comunity.hongga.repository.MemberRepositoryTest.회원_100명_생성_상세_조회(MemberRepositoryTest.java:57) 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.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:214) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:210) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:66) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:59) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:37) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:200) at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:46) at org.hibernate.persister.collection.AbstractCollectionPersister.recreate(AbstractCollectionPersister.java:1352) at org.hibernate.action.internal.CollectionRecreateAction.execute(CollectionRecreateAction.java:50) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604) at org.hibernate.engine.spi.ActionQueue.lambda$executeActions$1(ActionQueue.java:478) at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:684) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:475) at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:344) at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:40) at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107) at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1402) at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:493) at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3285) at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2420) at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:449) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:183) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$300(JdbcResourceLocalTransactionCoordinatorImpl.java:40) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:281) at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:101) at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:562) ... 87 more Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Referential integrity constraint violation: "FKASNMJAR8JR5GAXVD7966P19IR: PUBLIC.MEMBER_AUTHORITY FOREIGN KEY(AUTHORITY_NAME) REFERENCES PUBLIC.AUTHORITY(AUTHORITY_NAME) ('ROLE_FAMILY')"; SQL statement: insert into member_authority (member_id, authority_name) values (?, ?) [23506-204] at org.h2.message.DbException.getJdbcSQLException(DbException.java:527) at org.h2.message.DbException.getJdbcSQLException(DbException.java:496) at org.h2.message.DbException.get(DbException.java:227) at org.h2.message.DbException.get(DbException.java:203) at org.h2.constraint.ConstraintReferential.checkRowOwnTable(ConstraintReferential.java:311) at org.h2.constraint.ConstraintReferential.checkRow(ConstraintReferential.java:252) at org.h2.table.Table.fireConstraints(Table.java:1163) at org.h2.table.Table.fireAfterRow(Table.java:1181) at org.h2.command.dml.Insert.insertRows(Insert.java:188) at org.h2.command.dml.Insert.update(Insert.java:135) at org.h2.command.dml.DataChangeStatement.update(DataChangeStatement.java:61) at org.h2.command.CommandContainer.update(CommandContainer.java:173) at org.h2.command.Command.executeUpdate(Command.java:252) at org.h2.server.TcpServerThread.process(TcpServerThread.java:408) at org.h2.server.TcpServerThread.run(TcpServerThread.java:191) at java.base/java.lang.Thread.run(Thread.java:831) at org.h2.message.DbException.getJdbcSQLException(DbException.java:459) at org.h2.engine.SessionRemote.done(SessionRemote.java:611) at org.h2.command.CommandRemote.executeUpdate(CommandRemote.java:237) at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:191) at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:152) at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:197) ... 107 more @Test public void 회원 _100 명 _ 생성 _ 상세 _ 조회 () { // given System . out . println( " 다수 회원을 생성 합니다 !" ) ; // 50 번까지 FAMILY // 100 번까지 GUEST IntStream . rangeClosed ( 1 , 100 ) . forEach( i -> { if ( i <= 50 ) { Authority authority = Authority . builder () . authorityName( "ROLE_FAMILY" ) . build() ; Member memberMany = Member . builder () . email( "whoami" + i + "@hongga.com" ) . password( passwordEncoder . encode( "1234" )) . name( " 손님 " + i ) . nickname( " 손님이에영 " + i ) . phoneNumber( "010-3948-4934" ) . activated( true ) . authorities( Collections . singleton ( authority )) . build() ; // when Member saveManyFamily = memberRepository . save( memberMany ) ; // then System . out . println( assertThat ( memberMany ) . isEqualTo( saveManyFamily )) ; } else { Authority authority = Authority . builder () . authorityName( "ROLE_GUEST" ) . build() ; Member memberMany = Member . builder () . email( "whoami" + i + "@hongga.com" ) . password( passwordEncoder . encode( "1234" )) . name( " 손님 " + i ) . nickname( " 손님이에영 " + i ) . phoneNumber( "010-3948-4934" ) . activated( true ) . authorities( Collections . singleton ( authority )) . build() ; // when Member saveManyGuest = memberRepository . save( memberMany ) ; // then System . out . println( assertThat ( memberMany ) . isEqualTo( saveManyGuest )) ; } // if-else 끝 }) ; System . out . println( "===============================================================" ) ; System . out . println( " 회원 조회를 시작 합니다 !" ) ; //given IntStream . rangeClosed ( 1 , 100 ) . forEach( i -> { String email = "whoami" + i + "@hongga.com" ; // when Member byEmail = memberRepository . findByEmail( email ) ; // then System . out . println( assertThat ( email ) . isEqualTo( byEmail )) ; }) ; } // 회원 _ 상세 _ 조회 () 끝 이렇게 TEST 코드를 작성해서 여러 회원을 검색하고, 비교 해 보려고 하는데 안 됩니다. 의심 가는 건 저는 회원 등급을 GUEST, FAMILY, ADMIN으로 사용하고 싶은데, 혹시 이걸 Check하거나 뭐 그러는 곳이 있나요?? 조언 부탁 드리겠습니다! https://github.com/junyharang-personal-project/hongga-community-server