묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
이벤트 버스 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 선생님 안녕하세요. 질문이 두가지 있습니다. bus.$emit('start:spinner'); 에서 start: spinner는 무슨 구조인가요? 예를들어 객체: 메소드 뭐 이런것처럼 앞에 : 뒤에 각각 뭐를 써줘야 하는건가요? 그리고 여기서의 이벤트 버스는 스피너라는 이벤트를 NewsView, jobsView, askView에서 호출하고 그걸 App.vue에서 받아서 화면에 보여주는 거잖아요. vue.js가 모든 컴포넌트들을 app.vue에 최종적으로 모아서 하나의 페이지로 보여주는 SPA이니.. 항상 이벤트 버스의 이벤트를 받는건 APP.VUE가 되는건가요?
-
미해결초보를 위한 도커 안내서
스프링 이미지업로드 경로
스프링부트에서 이미지 경로를 file:path:/var/lib/photo 로 설정한 뒤에 compose 에서 볼륨 옵션으로 ./photo:/var/lib/photo 이렇게 설정을 했습니다. 근데 이미지파일을 업로드 해도 화면상에서는 잘 보이는데 exec bash 명령어로 해당 폴더에 들어가보아도 .png 파일이 보이지 않습니다. ㅠㅠㅠㅠㅠ 이런 경우 파일업로드 경로를 다르게 해주어야하나요??
-
해결됨스프링 시큐리티
안녕하세요 항상 감사한 정수원강사님
안녕하세요. 항상 강의 잘듣고있는 학생입니다. 스프링 시큐리티보단 스프링 프레임워크 질문쪽에 조금 더 가까울 것같아 미리 양해드립니다. 이 부분에서 userDetailsService 를 상속받는데 CustomUserDetailsService클래스의 빈네임을 @Service("userDetailService")로 따로 지정하지 않고 @Service 만 선언해주어도 따로 에러가 나지 않는 것으로 보여지는데, 왜 이런 부분이 가능한지가 궁금합니다. 또 추후 문제가 발생할 여지가 있는지도 궁금합니다. 항상 좋은 강의 감사합니다.
-
미해결코딩으로 학습하는 GoF의 디자인 패턴
multi thread 안정성 설명하신 부분 문의 드립니다
안녕하세요. 강의 56초 부분 문의 드립니다. 각 쓰레드가 다른 instance를 가지게 된다고 설명해 주셨는데요. 직관적으로 이해하면 이 때의 instance는 지역변수가 아니므로 힙 메모리를 참조하고 있으니 뒤에 오는 쓰레드가 instance에 값을 덮어쓸 것 같습니다. 메모리가 아닌 캐시를 참조한다고 해도 각 쓰레드가 같은 캐시를 참조할 수 있을 것 같아요. 혹시 이 경우에 각 쓰레드가 다른 instance를 각각 가지게 되는 이유가 무엇인지 궁금합니다..!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
CS0103 오류가 생겼습니다
안녕하세요. 강의를 따라하던 중 UI_Button.cs에서 Bind함수의 for문 안에 Util을 넣는 순간(?) 유니티에서 아래와 같은 오류가 떴습니다. 강의를 다시 보며 확인해봤지만 어느부분에서 틀린건지 찾지 못해서 도움을 요청합니다...ㅜㅠ UI_Button.cs 코드입니다 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class UI_Button : MonoBehaviour { Dictionary<Type, UnityEngine.Object[]> _objects = new Dictionary<Type, UnityEngine.Object[]>(); enum Buttons { PointButton } enum Texts { PointText, ScoreText } private void Start() { Bind<Button>(typeof(Buttons)); Bind<Text>(typeof(Texts)); } void Bind<T>(Type type) where T : UnityEngine.Object { string[] names = Enum.GetNames(type); UnityEngine.Object[] objects = new UnityEngine.Object[names.Length]; _objects.Add(typeof(T), objects); for (int i = 0; i < names.Length; i++) { objects[i] = Util.FindChild<T>(gameObject, names[i], true); } } int _score = 0; public void OnButtonClicked() { _score++; } } Util.cs 코드 입니다 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Util { public static T FindChild<T>(GameObject go, string name = null, bool recursive = false) where T : UnityEngine.Object { if (go == null) return null; if(recursive == false) { for (int i = 0; i < go.transform.childCount; i++) { Transform transform = go.transform.GetChild(i); if (string.IsNullOrEmpty(name) || transform.name == name) { T component = transform.GetComponent<T>(); if (component != null) return component; } } } else { foreach(T component in go.GetComponentsInChildren<T>()) { if (string.IsNullOrEmpty(name) || component.name == name) return component; } } return null; } }
-
미해결주니어 기획자에게 꼭 필요한 업무 스킬과 용어를 한번에!
퀴즈 접속이 안됩니다.
링크에서 퀴즈 풀고 싶은데 권한이 없다고 나옵니다.
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
소수를 입력했는데 바로 발리데이션 에러가 일어났어요 !
강의 내용에서는 소수를 입력해도 아웃풋에 정수로 변환되어 나오는데 저는 소수를 입력하면 요렇게 바로 string으로 인식해버리는것 같습니다...
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
안녕하세요 강사님
안녕하세요 강사님 지금 boiler-plate register 부분에서 막히는데요 _id : 617e90b00c0aa29d27fa84ea role : 0 __v : 0 db에 이렇게 밖에 저장이 안되네요 postman success 이구요 { "name": "test1", "email": "test12@naver.com", "password" : "12312sssss31" } 이게 계속 해결이 안되는데 혹시 몽고디비설정문제인지 모르겠네요 ㅜㅜ git 주소입니다. boiler-plate/index.js at main · speensta/boiler-plate (github.com)
-
미해결라즈베리파이 IoT 프로그램과 클라우드 입문 과정
노트북에 연결하면 화면 안뜨나요?
노트북에 연결하면 화면 안뜨나요?
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
회원가입 페이지
안녕하세요, 개복치 개발자님 회원가입을 한뒤 MainActivity로 넘어갔다가 다시 뒤로가기를 한경우 회원가입 페이지가 나오는 것을 방지하기 위해 intent.flags를 사용하셨는데, 그냥 finish()를 사용하면 안되는 건가요??
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
autocomplete-python traceback output 오류 해결법(Mac)
강의내용대로 진행하는데 autocomplete-python 패키지 에러가 떴습니다. Traceback (most recent call last): File "~\.atom\packages\autocomplete-python\lib\completion.py", line 8, in <module> 환경이 맥인데 검색을 해봐도 해결방법이 윈도우환경 밖에 없어서 한참을 헤맸네요.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
회원가입 테스트 오류로 질문 드립니다.
회원가입 테스트 시에 다음과 같은 오류가 나왔습니다. org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: m near line 1, column 8 [select m from New.Project.domain.Member m where m.name = :name]; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: m near line 1, column 8 [select m from New.Project.domain.Member m where m.name = :name] at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:374) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) at New.Project.repository.MemberRepository$$EnhancerBySpringCGLIB$$454820b5.findByName(<generated>) at New.Project.service.MemberService.validateDuplicateMember(MemberService.java:32) at New.Project.service.MemberService.join(MemberService.java:23) at New.Project.service.MemberService$$FastClassBySpringCGLIB$$f645c5ff.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) at New.Project.service.MemberService$$EnhancerBySpringCGLIB$$fe666e5a.join(<generated>) at New.Project.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:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) 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:1511) 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:1511) 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:235) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) Suppressed: org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:752) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:711) at org.springframework.test.context.transaction.TransactionContext.endTransaction(TransactionContext.java:131) at org.springframework.test.context.transaction.TransactionalTestExecutionListener.afterTestMethod(TransactionalTestExecutionListener.java:255) at org.springframework.test.context.TestContextManager.afterTestMethod(TestContextManager.java:445) at org.springframework.test.context.junit.jupiter.SpringExtension.afterEach(SpringExtension.java:206) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeAfterEachCallbacks$11(TestMethodTestDescriptor.java:253) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeAllAfterMethodsOrCallbacks$12(TestMethodTestDescriptor.java:269) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeAllAfterMethodsOrCallbacks$13(TestMethodTestDescriptor.java:269) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeAllAfterMethodsOrCallbacks(TestMethodTestDescriptor.java:268) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeAfterEachCallbacks(TestMethodTestDescriptor.java:252) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:137) ... 43 more Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: m near line 1, column 8 [select m from New.Project.domain.Member m where m.name = :name] at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188) at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:734) at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:825) at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:114) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:311) at jdk.proxy2/jdk.proxy2.$Proxy106.createQuery(Unknown Source) at New.Project.repository.MemberRepository.findByName(MemberRepository.java:32) at New.Project.repository.MemberRepository$$FastClassBySpringCGLIB$$80b35ce5.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ... 84 more Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: m near line 1, column 8 [select m from New.Project.domain.Member m where m.name = :name] at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:74) at org.hibernate.hql.internal.ast.ErrorTracker.throwQueryException(ErrorTracker.java:93) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:301) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:189) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144) at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113) at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73) at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:162) at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:613) at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:725) ... 99 more 제가 이것저것 해보았을 때, MemberService의 join에서 validateDuplicateMember(member) 를 지웠을 때는 원만히 돌아가서 이 부분이 문제인 것 같다고 추측을 했는데 어떤 부분이 문제인지는 모르겠습니다. 다음은 Member, MemberRepository, MemberService, MemberServiceTest 코드입니다. package New.Project.repository; import New.Project.domain.Member; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import java.util.List; @Repository @RequiredArgsConstructor public class MemberRepository { private final EntityManager em; public void save(Member member) { em.persist(member); } public Member findOne(Long id) { return em.find(Member.class, id); } public List<Member> findAll() { return em.createQuery("select m from Member m", Member.class) .getResultList(); } public List<Member> findByName(String name) { return em.createQuery("select m from Member m where m.name = :name", Member.class) .setParameter("name", name) .getResultList(); } } package New.Project.service; import New.Project.domain.Member; import New.Project.repository.MemberRepository; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service @Transactional(readOnly = true) @RequiredArgsConstructor public class MemberService { private final MemberRepository memberRepository; // 회원 가입 @Transactional public Long join(Member member) { validateDuplicateMember(member); // 중복 회원 검증 memberRepository.save(member); return member.getId(); } private void validateDuplicateMember(Member member) { // EXCEPTION List<Member> findMembers = memberRepository.findByName(member.getName()); if (!findMembers.isEmpty()) { throw new IllegalStateException("이미 존재하는 회원입니다."); } } // 회원 전체 조회 public List<Member> findMembers() { return memberRepository.findAll(); } public Member findOne(Long memberId) { return memberRepository.findOne(memberId); } } package New.Project.service; import New.Project.domain.Member; import New.Project.repository.MemberRepository; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.transaction.annotation.Transactional; import static org.junit.jupiter.api.Assertions.*; @SpringBootTest @Transactional class MemberServiceTest { @Autowired private MemberService memberService; @Autowired private MemberRepository memberRepository; @Test @Rollback(false) public void 회원가입() throws Exception { //given Member member = new Member(); member.setName("lee"); //when Long savedId = memberService.join(member); //then assertEquals(member, memberRepository.findOne(savedId)); } @Test public void 중복_회원_예약() throws Exception { } } package New.Project.domain; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String name; @Embedded private Address address; @OneToMany(mappedBy = "member") private List<Order> orders = new ArrayList<>(); }
-
미해결[애플 공식 교재] iOS 앱 만들기 Part2
Photo library에 접근할때는 왜 허락을 구하는 alert이 뜨지 않을까요?
카메라에 접근할 때는 plist에 설정한 메세지가 alert을 통해 나오는데, 포토라이브러리에 접근할때는 나타나지 않습니다. 앱을 삭제하고 사진첩에 먼저 접근해보아도 별다른 허용 절차없이 바로 접근이 되는데 이래도 되는건가요..? ------추가 질문) 교재 681(mailComposeController - dismiss)과 똑같이 코드를 작성했는데요, dismiss코드가 메일 전송 버튼을 눌렀을때 실행돼야하는것 같은데 키보드만 내려가고 dismiss 되지 않습니다. (답변항상 감사드립니다!)
-
미해결AWS(Amazon Web Service) 입문자를 위한 강의
자동 백업에 관해 질문입니다.
예를 들어서 10일전으로 돌아간다고 했을 때 매초마다 저장이 되는건가요? 10일전에도 하루동안 많은 query가 일어날텐데 매초마다 저장이 되는건지 아니면 10일전 12시 이런식으로 특정되는건지 궁금합니다.
-
미해결따라하며 배우는 NestJS
many to one 프론트에서 꺼낼때 질문입니다
안녕하세요 이번 강의 완강하고 내용 복습하면서 개인적으로 연습하고 있었습니다. 저희가 entity에서 manytoone 으로 user와 board를 연결시켜 주었잖아요 그리고 user랑 board둘 중 한군데는 "eager : true" 를 안해야지 오류가 안뜨더라고요 그래서 일단 user는 eager 설정은 안했습니다 그런데 프론트에서 user가 쓴 board 리스트를 불러와야 할 때 가 있는데 (내가쓴 게시글 목록 불러오기) user.board 하니 아무것도 안뜨더라고요... (board.user 은잘뜹니다) user 에서 해당 user를 가지고있는 board를 불러올 방법이 있나요? 아니면 controller에서 따로 만들어야 하나요?
-
미해결AWS(Amazon Web Service) 입문자를 위한 강의
boot volume 관해서 질문입니다.
EBS 볼륨 타입중 ST1의 경우에는 윈도우 같은 운영체제가 사용못한다고 나와있는데 그럼 리눅스도 안된다는 뜻인가요? os가 없는데 데이터를 어떻게 저장하는건가요??
-
해결됨풀스택 리액트 토이프로젝트 - REST, GraphQL (for FE개발자)
질문) 질문있습니다^^
속 저는 접속이 안되네요
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
안녕하세요 제로초님 배포후 에러가 발생해서 문의드립니다 ㅠ
이전과 다른 프로젝트를 만들었는데 또 같은 에러가 ㅠㅠ 처음 에러나는 부분이고 회원가입이나 다른 버튼 클릭시에는 cors, mixed contents 둘다 에러가 나네요 ㅠ app.js const express = require('express'); const cors = require('cors'); const session = require('express-session'); const cookieParser = require('cookie-parser') const passport = require('passport'); const dotenv = require('dotenv'); const morgan = require('morgan'); const path = require('path'); const hpp = require('hpp'); const helmet = require('helmet'); const userRouter = require('./routes/user'); const usersRouter = require('./routes/users'); const jobRouter = require('./routes/job'); const careerRouter = require('./routes/career'); const educationRouter = require('./routes/education'); const activityRouter = require('./routes/activity'); const awardRouter = require('./routes/award'); const certificationRouter = require('./routes/certification'); const certificationsRouter = require('./routes/certifications'); const languageRouter = require('./routes/language'); const projectRouter = require('./routes/project'); const socialRouter = require('./routes/social'); const comtestRouter = require('./routes/comtest'); const comtestsRouter = require('./routes/comtests'); const teamreviewRouter = require('./routes/teamreview'); const teamreviewsRouter = require('./routes/teamreviews'); const teamsearchRouter = require('./routes/teamsearch'); const skillRouter = require('./routes/skill'); const skillsRouter = require('./routes/skills'); const userskillRouter = require('./routes/userskill'); const jobsRouter = require('./routes/jobs'); const db = require('./models'); const passportConfig = require('./passport'); dotenv.config(); const app = express(); // db.sequelize.sync({ force: true }) db.sequelize.sync() .then(() => { console.log('db 연결 성공'); }) .catch(console.error); passportConfig(); //배포를 위한 setting if (process.env.NODE_ENV === "production") { app.use(morgan('combined')) app.use(hpp()); app.use(helmet()); app.use(cors({ origin: 'https://choono.co.kr', credentials: true, // 다른 주소간 cookie 전달 })); } else { // front --> backend 요청시 터미널에 송신상태 표현됨 app.use(morgan('dev')); app.use(cors({ origin: true, credentials: true, // 다른 주소간 cookie 전달 })); } // 업로드한 이미지 보이기 위한 작업 - 경로 맞추기 / static: 정적파일 제공 / join: 현 폴더명+uploads라는 이름을 합쳐 // '/': localhost:3065"/images"" --> Postform의 경로 참조 app.use('/', express.static(path.join(__dirname, 'uploads'))); // 자리위치 고정, front(saga)에서 받은 data를 req.body로 넘겨줌 / axios형태 // 즉, front(saga)에서 받은 data를 해석하여 req.body.email 등으로 변경하도록 도움 app.use(express.json()); // 일반 form형태 data 처리 app.use(express.urlencoded({ extended: true })); // 로그인시 front와 back이 같은 data를 갖고있어야 함 // 로그인시 db의 user정보를 다시 브라우저에 보내줄 때 비번: 보안위험요소 존재(암호화해서 cookie형태로 보냄) app.use(cookieParser(process.env.COOKIE_SECRET)); app.use(session({ saveUninitialized: false, resave: false, // proxy: true, // 배포시 secret: process.env.COOKIE_SECRET, // 암호화 cookie: { httpOnly: true, // secure: false, secure: true, // 배포시 domain: process.env.NODE_ENV === 'production' && '.choono.co.kr' } })); // passport 로그인시 활용 app.use(passport.initialize()); app.use(passport.session()); app.get('/', (req, res) => { res.send('hello express'); }) app.use('/user', userRouter); app.use('/users', usersRouter); app.use('/job', jobRouter); app.use('/career', careerRouter); app.use('/activity', activityRouter); app.use('/award', awardRouter); app.use('/certification', certificationRouter); app.use('/certifications', certificationsRouter); app.use('/language', languageRouter); app.use('/project', projectRouter); app.use('/social', socialRouter); app.use('/education', educationRouter); app.use('/comtest', comtestRouter); app.use('/comtests', comtestsRouter); app.use('/teamreview', teamreviewRouter); app.use('/teamreviews', teamreviewsRouter); app.use('/teamsearch', teamsearchRouter); app.use('/skill', skillRouter); app.use('/skills', skillsRouter); app.use('/userskill', userskillRouter); app.use('/jobs', jobsRouter); app.listen(3065, () => { console.log("서버 실행중!") }); config/config.js (프론트) export const backUrl = 'https://api.choono.co.kr'; // export const backUrl = "http://3.34.2.218"; // Ubuntu 빌드시 검토 // exports.backUrl = 'http://localhost:3065'; 코드작성에는 이상없다고 생각했는데 문제를 찾아봐도 해결방법이 나오질 않네요 ㅠㅠ api.도메인.co.kr로 들어가면 잘 작동하는 것 같습니다. 부탁드립니다 ㅠ pm2 모니터시에 처음엔 db연결 완료라고 나오는데 실행중에 아무것도 뜨지 않는 부분에서 문제가 있으려나 모르겠네요 ㅠ 이건 pm2 에러 확인입니다 프론트앤드 package.json { "name": "choono-front", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "dev": "next -p 3060", "build": "cross-env NODE_OPTIONS=--max-old-space-size=8192 NODE_ENV=production ANALYZE=true next build", "start": "cross-env NODE_OPTIONS=--max-old-space-size=8192 NODE_ENV=production next start -p 3060" }, "author": "SehwanJun", "license": "ISC", "dependencies": { "@ant-design/icons": "^4.6.4", "@next/bundle-analyzer": "^11.1.2", "antd": "^4.3.0", "axios": "^0.21.4", "babel-plugin-styled-components": "^1.13.2", "cross-env": "^7.0.3", "immer": "^9.0.6", "moment": "^2.29.1", "nanoid": "^3.1.25", "next": "^9.5.5", "next-redux-wrapper": "^6.0.2", "nprogress": "^0.2.0", "pm2": "^5.1.2", "prop-types": "^15.7.2", "react": "^17.0.2", "react-dom": "^17.0.2", "react-quill": "^1.3.5", "react-redux": "^7.2.5", "react-tooltip": "^4.2.21", "redux": "^4.1.1", "redux-devtools-extension": "^2.13.9", "redux-saga": "^1.1.3", "styled-components": "^5.3.1" }, "devDependencies": { "babel-eslint": "^10.1.0", "eslint": "^7.32.0", "eslint-config-airbnb": "^18.2.1", "eslint-plugin-import": "^2.24.2", "eslint-plugin-jsx-a11y": "^6.4.1", "eslint-plugin-react": "^7.25.2", "eslint-plugin-react-hooks": "^4.2.0" } } 백앤드 package.json { "name": "choono-back", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { "dev": "nodemon app", "start": "cross-env NODE_ENV=production pm2 start app.js" }, "author": "SehwanJun", "license": "ISC", "dependencies": { "aws-sdk": "^2.1022.0", "axios": "^0.24.0", "bcrypt": "^5.0.1", "cookie-parser": "^1.4.5", "cors": "^2.8.5", "cross-env": "^7.0.3", "dotenv": "^10.0.0", "express": "^4.17.1", "express-session": "^1.17.2", "helmet": "^4.6.0", "hpp": "^0.2.3", "morgan": "^1.10.0", "multer": "^1.4.3", "multer-s3": "^2.10.0", "mysql2": "^2.3.0", "passport": "^0.4.1", "passport-kakao": "^1.0.1", "passport-local": "^1.0.0", "passport-naver": "^1.0.6", "pm2": "^5.1.2", "sequelize": "^6.6.5", "sequelize-cli": "^6.2.0" }, "devDependencies": { "nodemon": "^2.0.12" } }
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
default 값으로 vue 2 선택하고 누르면 계속 이런 에러가 뜨는데 해결방법이 있을까요ㅠ
command failed: npm install --loglevel error @vue/cli-plugin-babel@~4.5.0 @vue/cli-plugin-eslint@~4.5.t@~4.5.0 @vue/cli-service@~4.5.0 --save-dev 이 에러가 계속 뜨면서 생성이 안되는데 해결 방법있을까요ㅠ
-
미해결쉽게 시작하는 쿠버네티스(v1.35)
맥 vagrant up 안됩니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 실습이 안되는 경우 안되는 부분과 함께 관련 상황을 파악할 수 있는 화면 및 수행 내용등을 함께 주시면 답변에 도움이 됩니다. * 중요 * Vagrant와 관련한 질문은 자주 묻는 질문을 통해서도 해결이 어려운 경우에는 도움을 드리기가 매우 어렵습니다. 자주 묻는 질문에도 기입해두었지만, 개개인의 환경에 따른 차이로 생기는 문제들이기 때문에 개인의 환경을 제가 모두 파악할 수가 없습니다. 오프라인 강의라면 이 부분이 가능하지만 온라인 강의의 한계로 인한 부분이기 때문에 진행자체가 매우 어려워서 강의에 가치를 느끼지 못하신다면, 인프런 환불 요건(진도율 7%, 구매 1주일 이내)에 따라 환불을 도와주실 것이니 인프런에 문의해 주세요. 이 부분에 대해서 이해를 부탁드립니다. - 실습과 연관성이 있는 질문의 경우에는 상황을 이해하기 위해 아래의 정보들이 필요합니다. >> 정확한 질문 내용 >> 현재 하고 있는 업무와 주요 다뤘던 기술 >> 알아야 하는 이유 >> 알기 위해 검색 및 수행했던 내용과 현재 이해하고 있는 내용 >> 기타 답변에 참고가 되는 내용 * 참고 * 강의에서 다루지 않는 쿠버네티스 범위를 넘는 질문은 쿠버네티스 오픈 채팅 및 유저 그룹을 이용하는게 도움이 될 수 있습니다. (https://open.kakao.com/o/gxSooElb {암호: kubectl}- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.