묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C언어
배열이 매개 변수로 사용 될 때 포인터로 바뀔 때 내부 상황이 궁금합니다.
포인터에 배열이름으로 배열의 첫 주소를 저장할 때와 같은 배열이름이 포인터처럼 작동할 때는 메모리를 사용하는 게 아니라 단순히 컴파일러가 변환시켜주는 것으로 알고 있습니다. 그런데 매개변수로 사용할 때는 그 크기가 포인터의 크기로 나오면 메모리에 실제로 포인터 변수가 만들어진 건가요? 그게 아니라면 어떻게 sizeof연산자를 사용했을 때 포인터의 크기가 나오는지 잘 모르겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
Nginix
Ngnix서버라는것이 있다고 아는데 여기 있는 내용과 어떻게 연결되는것으로 이해해야하나요. 여기 나온 내용이 구현된 다른형태의 솔루션같은건가요 개념이 안서네요
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
서버 프레임워크
여기서 배운 웹서버와 api서버하고 많이 다른가요 그리고 코딩한 내용이 프레임워크와 같이 된것이 c# 에도 있는지요
-
미해결게임 프로그래머 취업 전략 가이드
현업자 입장에서 좋은 게임 회사란 어디인가요?
항상 좋은 강의 잘 듣고 있습니다. 업계에서도 좋은 회사는 입소문을 많이 탈것 같다는 생각에 질문드립니다. 개발자 처우나, 회사 복지 등을 기준으로 현재 상위급 회사가 어디일가요? 업계 밖에 입장에서는 펄어비스나 데브시스터즈가 평이 좋은 상태입니다. 현업자 입장에서 어떤 회사가 평이 좋은곳 인가요?
-
미해결IT 회사에서 비개발자가 살아남기 위한 모든 개발 지식 A to Z
빌드
빌드라는 것을하면 apk파일이 생성되는것을 알고있습니다. 빌드라는 것이 구체적으로 무엇을하는 과정일까요
-
미해결스프링 부트 업데이트
application 이 실행되지 않습니다... .m2/repository 에러 발생
서버실행시 에러 로그입니다. Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springSecurityFilterChain' defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.security.oauth2.client.registration.ClientRegistrationRepository' available project structure 설정 repository 에러 발생 !! .m2/repository 폴더를 삭제하고 의존성 파일들을 다시 받아도 에러가 사라지지 않습니다. spring boot version 을 2.5 까지 낮춰보았는데도 현상은 같습니다. 원인을 알려주실수 있을까요? 원본 파일은 github https://github.com/castinglife/springboot-oauth-test 에 있습니다.
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 요청
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키안녕하세요. 강의를 듣고있는 수강생입니다. 아침에(2021.12.09)에 gist 권한을 요청했는데 승인됐는지 확인할 수 없습니다. 인프런 아이디 : 한병식 인프런 이메일 : bskhan912@gmail.com 깃헙 아이디 : bskhan 깃헙 Username : bskhan -- 수강생 맞는데 자동 로그인 되서 ID가 맞는지 모르겠습니다. 틀리면 알려주세요
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
time.deltatime 질문드립니다.
강사님 포지션은 방향 , 거리(시간*속도)로 델타타임을 곱해주어 거리를 구하고 프레임 속도를 1프레임 2프레임으로 비교해서 결국은 1초에 1이라는 값을 가져서 뚝뚝끊길지라도 동일한 거리를 이동하는걸로 아는데요 이 델타타임을 왜 로테이션이나 럴프계열함수에도 다 곱해주는지 이해가가지않아서 질문드립니다. ㅇ
-
해결됨비전공자를 위한 진짜 입문 올인원 개발 부트캠프
chrome개발자도구에서 재선언/재할당 관련 질의 (Chrome 버전 96.0.4664.93(공식 빌드) (64비트), Windows 10)
ㅇ 테스트 환경 : Chrome 버전 96.0.4664.93(공식 빌드) (64비트), Windows 10ㅇ 테스트 내용 - 같은 선언자로 선언한것은 재선언/재할당 가능 (즉, var로 선언한것은 var로 재선언 /재할당 가능, let으로 선언한 것은 let으로 재선언/재할당 가능, 심지어 const도 const로는 재선언/재할당 가능) - 다른 선언자로 선언/재할당은 안됨 (예를 들어, var로 선언/값할당 후 let으로 재선언/할당은 안됨) 처럼 되네요. const도 재선언/재할당이 가능하던데요. 이건 chrome 개발자 툴의 특성인가요? 감사합니다.
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
Batch Normalization 질문 드립니다
안녕하세요 딥러닝호형님! 궁금한 점이 생겨 질문드립니다. 1. Image Data Normalization과 Batch Normalization의 차이가 어떻게 되나요? 2. Image Data Normalization을 해준 데이터를 모델에 넣어 Batch Normalization을 해주게 될 경우 데이터는 중복으로 normalization되는 것인가요? 우문일 수도 있지만 너무 궁금해서 질문드립니다. ㅠㅠ 그럼 답변 기다리겠습니다. 감사합니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시 단원에서 말씀하신 프록시 객체와 실제 객체
안녕하세요 강사님 질문에 앞서 토이 프로젝트 진행 중에 회원 정보 수정에서 트랜잭션을 사용하지 않아 이틀 동안 고민했다가 해결했습니다.. 두 번째 날에 이거 진짜 답이 없다 생각했는데 그 순간 영한님이 말씀해주신 JPA는 트랜잭션 단위로 돌아간다는 말씀이 떠올라서 해결했습니다.. 별 게 아닐 수 있지만 이제 저에게는 JPA == 트랜잭션 단위 를 잊을 수가 없게 됐습니다.. 가르침에 감사하다는 말씀드리고 싶었습니다 ! ================================= 이제 질문입니다!! 프록시 강의 부분에서 프록시 객체와 실제 객체에 구애받지 않는 코드를 작성하는 것이 좋다라고 말씀해주셨습니다. 프록시가 Member를 상속하는데 당연히 코드를 작성하면서 어느 누가 프록시를 사용한다고 해놓을까? 이런 생각이 들면서.. 혹시 둘의 차이로 인해 생긴 버그를 하나 예로 들을 수 있을까요?? 처음에 듣고 너무 궁금해서 질문을 올리려 했는데, 강의 끝 부분에 말씀해주실 것 같아서 아껴놨다가 해당 챕터를 다 듣고 난 뒤에 질문드립니다!! 물론 구글링을 해봤지만 제가 원하는 답을 찾지 못했습니다..
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요 영한님 스프링 부트 관련 질문 드립니다.
이번 강의를 들으면서 H2데이터베이스가 아닌 MySQL에 적용을 해보고 싶어서 시도를 해봤는데요, 도커에 MySQL을 띄우고 실행을 하였는데 궁금증이 생겨 질문 드립니다. 스프링 부트의 application.properties에 적는 MySQL환경 설정과 docker-compose.yml에 적는 MySQL환경 설정을 둘다 입력해 줘야 하나요?? 한곳만 입력해줘도 괜찮은가요? 좋은 강의 감사합니다 ㅎㅎ
-
미해결스프링 핵심 원리 - 기본편
의존관계 주입시 구현체 변경?
추상화 클래스를 바라보고 짜는 설계를 보다가 궁금한게 구현체를 손쉽게 갈아 끼울수 있다고 하셨는데 생성자 주입을 통해 자동 주입을 하게되면 예제코드에서 할인정책에 대한 구현 객체를 애플리케이션 실행중에 바꿔서 쓸 방법이 있는건가요? 중간중간에 구현체를 바꿔서 주입시켜 쓰고싶다면 수정자 메서드를 만들어서 호출해야하는건지 잘 모르겠네요,,
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)
HP 연동 질문있습니다
유익한 강의 감사드립니다. 플레이어가 게임을 나갈 때 DB에 저장하는 Job이 불리어지고 이 Job이 처리되기 전에 플레이어가 재 로그인에 성공한다면 이전에 DB에 저장된 HP로 로그인이 가능할 수 있지않은가요.
-
미해결
C++ Thread 사용시 문법 관련 질문입니다.
안녕하세요 저가 서버쪽 공부하려고 책을 보는데 Thread사용시의 문법이 이해가 안되어 서요. C++ 문법중에 1번.thread t([&] { result = 1 + 2; });2번. shared_ptr<thread> thread(new thread([&]() { while (true) { int n; { lock_guard<recursive_mutex> num_lock(num_mutex); n = num; num++; } if (n >= MaxCount) break; if (IsPrimeNumber(n)) { lock_guard<recursive_mutex> primes_lock(primes_mutex); primes.push_back(n); } } })); 위처럼 ([]{}) 이런식으로 사용했는데... 이게 어디서 온 문법인지 아니면 F3을 눌러봐도 함수내에 이런 내용이 있는지 찾을수가 없어서요. 위처럼 사용하는것도 함수포인터의 일종인가요?? 저가 아는 함수 포인터는 void(*bp2)() 이런 형태인데... ([]{}) 형태가 되니까 어떤 문법인지 궁금합니다..
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Sequence & generated by default as identity 질문 입니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 요즘 강의 보면서 많이 배우고 있는 수강생입니다! MemoryMemberRepository에 등록된 sequence가 없어도 DB에서 generated by default as identity 를 통해서 숫자를 자동으로 증가 시킬 수 있는건가요? 그렇다면, 2개를 같이 적용하는 이유가 있을까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
갑자기 중복_회원_예외가 Tests failed 떠서 질문드립니다.
안녕하세요 스프링 데이터 JPA를 수강하던 중에 @Test 중복_회원_예외 부분에서 Tests가 failed 되어 질문합니다. 분명 setName으로 설정해준 값도 같은데 말이죠.. 왜 failed가 됐고 성공하려면 어떻게 해야할까요? 다음은 에러 코드입니다. 2021-12-09 22:56:32.154 INFO 5676 --- [ main] o.s.t.c.transaction.TransactionContext : Began transaction (1) for test context [DefaultTestContext@37052337 testClass = MemberServiceIntegrationTest, testInstance = com.example.hellospring.service.MemberServiceIntegrationTest@4ba1f425, testMethod = 중복_회원_예외@MemberServiceIntegrationTest, testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@2320fa6f testClass = MemberServiceIntegrationTest, locations = '{}', classes = '{class com.example.hellospring.HelloSpringApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.autoconfigure.actuate.metrics.MetricsExportContextCustomizerFactory$DisableMetricExportContextCustomizer@51891008, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@9816741, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@2f67a4d3, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@49b2a47d, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@1a5a4e19, org.springframework.boot.test.context.SpringBootTestArgs@1, org.springframework.boot.test.context.SpringBootTestWebEnvironment@5e955596], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.populatedRequestContextHolder' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.resetRequestContextHolder' -> true, 'org.springframework.test.context.event.ApplicationEventsTestExecutionListener.recordApplicationEvents' -> false]]; transaction manager [org.springframework.orm.jpa.JpaTransactionManager@2b4954a4]; rollback [true] Hibernate: select member0_.id as id1_0_, member0_.name as name2_0_ from member member0_ where member0_.name=? Hibernate: insert into member (id, name) values (null, ?) Hibernate: select member0_.id as id1_0_, member0_.name as name2_0_ from member member0_ where member0_.name=? 2021-12-09 22:56:33.381 INFO 5676 --- [ main] o.s.t.c.transaction.TransactionContext : Rolled back transaction for test: [DefaultTestContext@37052337 testClass = MemberServiceIntegrationTest, testInstance = com.example.hellospring.service.MemberServiceIntegrationTest@4ba1f425, testMethod = 중복_회원_예외@MemberServiceIntegrationTest, testException = org.opentest4j.AssertionFailedError: Expecting: <"~~~ 이미 존재하는 회원입니다. validateDuplicateMember"> to be equal to: <"이미 존재하는 회원입니다."> but was not., mergedContextConfiguration = [WebMergedContextConfiguration@2320fa6f testClass = MemberServiceIntegrationTest, locations = '{}', classes = '{class com.example.hellospring.HelloSpringApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.autoconfigure.actuate.metrics.MetricsExportContextCustomizerFactory$DisableMetricExportContextCustomizer@51891008, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@9816741, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@2f67a4d3, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@49b2a47d, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@1a5a4e19, org.springframework.boot.test.context.SpringBootTestArgs@1, org.springframework.boot.test.context.SpringBootTestWebEnvironment@5e955596], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.populatedRequestContextHolder' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.resetRequestContextHolder' -> true, 'org.springframework.test.context.event.ApplicationEventsTestExecutionListener.recordApplicationEvents' -> false]] org.opentest4j.AssertionFailedError: Expecting: <"~~~ 이미 존재하는 회원입니다. validateDuplicateMember"> to be equal to: <"이미 존재하는 회원입니다."> but was not. Expected :"이미 존재하는 회원입니다." Actual :"~~~ 이미 존재하는 회원입니다. validateDuplicateMember" <Click to see difference> at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at com.example.hellospring.service.MemberServiceIntegrationTest.중복_회원_예외(MemberServiceIntegrationTest.java:55) 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:688) 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$6(TestMethodTestDescriptor.java:210) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108) 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:96) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) 다음은 MemberServiceIntegrationTest의 중복_회원_예외 부분입니다. @Testpublic void 중복_회원_예외() throws Exception { //Given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); //When memberService.join(member1); IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));//예외가 발생해야 한다. assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");} 다음은 MemberService의 join부분입니다. @Transactionalpublic class MemberService { //private final MemberRepository memberRepository = new MemoryMemberRepository(); private final MemberRepository memberRepository; // 외부에서 memberRepository를 넣어준다. ★★(DI : Dependency Injection) @Autowired public MemberService(MemberRepository memberRepository){ this.memberRepository = memberRepository; } /** * 회원가입 */ public Long join(Member member){ validateDuplicateMember(member); // 중복회원 검증 //System.out.println("~~~ MemberService join save 직전"); memberRepository.save(member); //System.out.println("~~~ MemberService join save 직후"); return member.getId(); } private void validateDuplicateMember(Member member) { memberRepository.findByName(member.getName()) .ifPresent(m -> { throw new IllegalStateException("~~~ 이미 존재하는 회원입니다. validateDuplicateMember"); }); } /** * 전체 회원 조회 */ public List<Member> findMembers(){ return memberRepository.findAll(); } public Optional<Member> findOne(Long memberId){ return memberRepository.findById(memberId); }} 감사합니다 갑자기 잘 되던 부분이 안돼서 당황스럽네요..
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘
nil 이 const면 안 되나요?
항상 '없음' 상태를 나타내는거라면 그 편이 더 나을 것 같아서요
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MySQL 사용 시 In-Memory DB 사용법
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] MySQL이나 ORACLE DB를 사용하는 환경일 때 만약 강의처럼 In-Memory DB를 사용하려고 하면 매번 의존성을 H2로 바꿔주고 DB를 H2로 사용해야하는 건가요? 다른 방법은 없을까요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
DNS서버에 조회 해서 웹브라우저에 받아오는 일련의 과정에 대해
안녕하세요.너무 잘보고있는데요.한가지 DNS서버에 조회 해서 웹브라우저에 받아오는 일련의 과정이 조금 헷갈려서 질문드립니다. 1.웹브라우저에서 구글서버로 접속하기위해 1) 먼저 DNS에 접속하여 IP주소와 port정보를 찾아냅니다. 2)그후에 DNS서버로부터 받아온 정보로 HTTP요청 메시지를 생성하는데요. 그럼 https://www.google.com:443/ 까지는 웹브라우저에서 DNS서버를 가서 조회를 해서 IP주소와 port 정보를 조회하여 그 정보만 요청한 웹 브라우저로 넘겨주게되고, 웹브라우저는 다시 DNS서버로 부터 받은 IP주소와port정보를 포함하여 HTTP요청 메시지를 만드는데 그 안에는 path뒤 부터인 /search?q=hello&hl=ko가 구글 서버에 접속해서 관련 정보를 받아온다고 생각하면되는게 맞나요? 그런데 이게 맞다면 1분11초 HTTP메시지에 Host는 www.google.com이고, 또 따로 패킷에 받아온 구글 IP주소 를 to에다가 200.200.200.2로 보내는게 맞는지가 궁금합니다. (제가 생각했을때는 DNS서버로 부터 받아온 IP주소를 Host에다가 200.200.200.2라고 적으면 된다고 생각했었는데, 다시 www.google.com이라고 적어놓으셔서 그럼 HTTP요청 메시지 패킷을 전송할때는 www.google.com와 IP주소 200.200.200.2가 모두 필요한걸까? 라는 의문이 들어서요.) 2. search가 path인데요. 그럼 예를들어 구글 서버 자체에 serarch라는 디렉토리가 있는건가요? 그래서 그 serarch안에 q=hello&hl=ko의 해당정보가 들어있는건가요?... 3. DNS서버도 따로 존재? 한다고 들었는데, 이게 또 SK, LG, KT 등 통신사에 등록이 되어있다고 들었습니다. 혹시 SK의 경우 DNS서버홈페이지같은거는 어디서 알 수 있을까요? 한 번 들어가서 구경하고 싶은데.. 검색해도 안나와서요. 3-1 또 DNS서버로 요청할때도 3way handshake로 동작해서 패킷단위로 던져지는게 맞나요? 4. 제가 생각했을때 http https ftp smtp 마다 호칭을 HTTP요청메시지 or HTTPS요청메시지 or FTP요청메시지 or SMTP요청메시지 이런식으로 각각 따로 불려야 될 것 같은데.. 이거를 그냥 어떤 프로토콜을 사용하던지 'HTTP요청메시지' 라고 통용해서 사용하는 건가요? 5. 1분49초 시작부터 , 이해가 잘 가지않는데요.그럼 지금 이 HTTP메시지 전송과정 전에 이미 DNS서버를 가서 IP주소랑 port번호를 찾아 온후! 진행되는 과정이라는 가정하에 IP주소랑 port번호를 찾았다고 말씀하시는거죠? 그리고 1)소켓라이브러리를 통해서 먼저 찾은IP주소와port번호로 2)syn- syn ack - ack 해서 (가상)구글 서버와 연결을 한 후 3) OS계층인 TCP/IP 로 전달을 합니다. 그다음 패킷을 씌운후 인터넷망으로 던져진다! 순서과정을 이렇게 이해하면 될까요?