묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(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.30) - {{ x86-64, arm64 }}
맥 vagrant up 안됩니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 실습이 안되는 경우 안되는 부분과 함께 관련 상황을 파악할 수 있는 화면 및 수행 내용등을 함께 주시면 답변에 도움이 됩니다. * 중요 * Vagrant와 관련한 질문은 자주 묻는 질문을 통해서도 해결이 어려운 경우에는 도움을 드리기가 매우 어렵습니다. 자주 묻는 질문에도 기입해두었지만, 개개인의 환경에 따른 차이로 생기는 문제들이기 때문에 개인의 환경을 제가 모두 파악할 수가 없습니다. 오프라인 강의라면 이 부분이 가능하지만 온라인 강의의 한계로 인한 부분이기 때문에 진행자체가 매우 어려워서 강의에 가치를 느끼지 못하신다면, 인프런 환불 요건(진도율 7%, 구매 1주일 이내)에 따라 환불을 도와주실 것이니 인프런에 문의해 주세요. 이 부분에 대해서 이해를 부탁드립니다. - 실습과 연관성이 있는 질문의 경우에는 상황을 이해하기 위해 아래의 정보들이 필요합니다. >> 정확한 질문 내용 >> 현재 하고 있는 업무와 주요 다뤘던 기술 >> 알아야 하는 이유 >> 알기 위해 검색 및 수행했던 내용과 현재 이해하고 있는 내용 >> 기타 답변에 참고가 되는 내용 * 참고 * 강의에서 다루지 않는 쿠버네티스 범위를 넘는 질문은 쿠버네티스 오픈 채팅 및 유저 그룹을 이용하는게 도움이 될 수 있습니다. (https://open.kakao.com/o/gxSooElb {암호: kubectl}- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결파이널 코딩테스트 : 프론트엔드
overflow: hidden;
좋은 수업 감사드립니다. .cont-company .cont-coInfo { position : relative; overflow : hidden; width: 1189px; margin: 0 auto; } 위의 footer css 작성하는 부분에서 overflow: hidden;을 왜 주는지 이해가 잘 안 갑니다. overflow: hidden을 주석처리해버리면 <dl class="list-coInfo"> 부분의 background가 없어지던데 왜 그러는거죠...?
-
미해결AWS(Amazon Web Service) 중/상급자를 위한 강의
dynamoDB관련 질문
안녕하세요 선생님! 다이나모 디비 공부 중에 궁금한 사항 몇 가지 질문 드립니다. 1. TTL TTL 디폴트 시간을 48시간이 아닌 다른 시간으로 정할 수 있나요? 2. PTE 다이나모디비는 오토스케일링을 지원하는 걸로 알고 있는데, 그럼에도 불구하고 PTE가 발생하는 이유는 차마 오토스케일링이 되기도 전에 요청이 폭등하면 발생하는 건가요? 그럼 어느정도로? 요청이 올라가야 안전하게 오토 스케일링이 되고 PTE가 발생하지 않나요? 3. DynamoDB Streams 기본강의를 듣고 생긴 의문이긴 하지만 질문 남기는 김에 한 번에 남깁니다(선생님 기본 강의도 듣고 있습니다!) 스트림스는 24시간 동안 보관된다고 배웠는데, 이 디폴트 시간을 바꿀 수 있나요? 강의 늘 감사히 잘 듣고 있습니다 :)
-
미해결홍정모의 따라하며 배우는 C++
vector에 대해 질문드립니다.
6장의 마지막에 vector에 대한 내용이 있느나, 혹시나 싶어 질문드립니다. 6.17 For-each 반복문 강의 영상에서 array를 동적 할당으로 받아오면 사용할 수 없다고 하셨습니다. 그리고 동적 할당 array대신 vector을 자주 사용하신다고 하셨는데, 여기서 질문드립니다. 그렇다면 vector을 동적할당(?)으로 받아서 For-each문에서도 사용할 수 있는 건가요? 아직 동적할당에 대한 개념이 제대로 머릿속에 박히지 않아서.. 스스로 코드를 짜며 이해하기에는 힘들어서 질문드립니다. 여러번 반복해야겠어요 ㅠㅠ 강의 내용에서의 vector는 동적할당으로 사용한 것이 아니라서 문의드립니다!
-
미해결ESXi 가상 인프라 구축과 보안 솔루션을 활용한 이상징후 탐지 모니터링
리눅스민트 아이피 변경
안녕하세요 sudo xed /etc/netplan/1-network-manager-all.yaml 을 열었는데 어드레스 입력 부분이 나타나지 않습니다. 어떻게 해야하나요?
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
선생님, 질문이 있습니다.
선생님, 강의 항상 잘 보고 있습니다. 다름이 아니라 이번에 제가 관심이 가는 논문을 하나 정해서 읽고 있는데, 머신러닝 수학에서 사용하는 표기법에 대해 정말 아는 바가 없어서 난항을 겪고 있습니다ㅜ.ㅜ 혹시 이에 대해 어떻게 읽는 것인지 도와주실 수 있나요? 일단 사진 상으로 표기된 식들을 올려드릴텐데 Mq Wm 이런 것들? Mns 아래 첨자로 표기되는 것들이나 O안에 x나 +가 들어가는 형태 그리고 bi E R1 등 뭔가 집합 기호처럼 보이는 것들 Wm E RkxC 이런 것들에 대해 이해가 되고 있지 않고 있습니다. 그리고 혹시 이런 표기법에 대해 한번 정리할 수 있는 과목이나 참고 자료(서적 등)에 대해서도 혹시 가능하시다면 알려주시면 감사합니다.
-
미해결React 기반 Gatsby로 기술 블로그 개발하기
[해결완료!!] Error: Something went wrong installing the "sharp" module
Error Something went wrong installing the "sharp" module Cannot find module '../build/Release/sharp-darwin-arm64v8.node' Possible solutions: - Install with the --verbose flag and look for errors: "npm install --ignore-scripts=false --verbose sharp" - Install for the current runtime: "npm install --platform=darwin --arch=arm64 sharp" - Consult the installation documentation: https://sharp.pixelplumbing.com/install not finished open and validate gatsby-configs, load plugins - 0.127s gatsby-config.js module.exports = { siteMetadata: { title: `Gatsby Default Starter`, description: `Kick off your next, great Gatsby project with this default starter. This barebones starter ships with the main Gatsby configuration files you might need.`, author: `@gatsbyjs`, }, plugins: [ { resolve: 'gatsby-plugin-typescript', options: { isTSX: true, allExtensions: true, }, }, `gatsby-plugin-react-helmet`, // { // resolve: `gatsby-source-filesystem`, // options: { // name: `contents`, // path: `${__dirname}/contents`, // }, // }, `gatsby-transformer-sharp`, `gatsby-plugin-sharp`, // this (optional) plugin enables Progressive Web App + Offline functionality // To learn more, visit: <https://gatsby.dev/offline> // `gatsby-plugin-offline`, `gatsby-plugin-emotion`, ], } try... 노드버전 16.0.0으로 업그레이드 후, yarn add --platform=darwin --arch=arm64 sharp 해보았으나, 에러가 여전히 발생합니다. 해결 방법이 있을까요?? 그리고 좋은 강의 너무도 감사합니다! 해결완료하였습니다. 다른 분들에게 참고가 될 수 있을 거 같아서 남겨놓아요! rm -r node_modules/sharp yarn install --check-files 참고자료: https://github.com/gatsbyjs/gatsby/issues/20957
-
미해결현존 최강 크롤링 기술: Scrapy와 Selenium 정복
pipelines.py에서 process_item내에서 print문이 작동을 하지 않네요 ㅠ
- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다)- 이외의 문의등은 평생강의이므로 양해를 부탁드립니다- 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
클릭해서 ProductPage로 넘어갈시에 아무것도 보이지 않습니다
(사진)
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
앱에서 댓글이 안보입니다
댓글 확인하는거에서 파이어베이스에는 뜨는데 앱에서 확인해보면 안뜹니다 날짜/시간 content time 이렇게 뜹니다 동영상 강의 댓글 만들기에서 댓글 입력하기~불러오기 부분이요 BoardInsideActivity 안에 소스코드 // 두번째 방법 key = intent.getStringExtra("key").toString() getBoardData(key) getImageData(key) binding.commentBtn.setOnClickListener { insertComment(key) } commentAdapter = CommentLVAdapter(commentDataList) binding.commentLV.adapter = commentAdapter getCommentData(key)}fun getCommentData(key: String) { val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { commentDataList.clear() for (dataModel in dataSnapshot.children) { val item = dataModel.getValue(CommentModel::class.java) commentDataList.add(item!!) } commentAdapter.notifyDataSetChanged() } override fun onCancelled(databaseError: DatabaseError) { Log.w(TAG, "loadPost: onCancelled", databaseError.toException()) } } FBRef.commentRef.child(key).addValueEventListener(postListener) }fun insertComment(key: String) { // comment // -BoardKey // -CommentKey // -CommentData.. FBRef.commentRef .child(key) .push() .setValue(CommentModel(binding.commentArea.text.toString(), FBAuth.getTime() ) ) Toast.makeText(this, "댓글 입력 완료", Toast.LENGTH_LONG).show() binding.commentArea.setText("")}이부분 맞죠??똑같이 한거 같은데 어디가 문제일까요??그리고 파이어베이스에 저장하는게 insertComment 이부분이고 댓글로 보여주는게 getCommentData 여기인가요??