묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
부모클래스에서 Init()을 실행하는 부분 질문입니다.
안녕하세요 게임오브젝트를 비활성화 시켜도 Awake() 안에있는 Init()은 실행된다는 것은 이해했는데요 14분 44초에서 부모 클래스 BaseScene.cs에서 Init()을 실행했는데 어떻게 자식클래스 GameScene.cs의 Init()까지 실행이되는건지 잘 이해가 안됩니다. 제 생각으로는 자식클래스에서 어떤 메서드를 오버라이드했더라도 부모클래스에서 그 메서드를 실행하면 부모클래스의 메서드만 실행될거같은데 유니티에서만 가능한건가요?
-
미해결취미로 해킹#3(WebGoat)
메일박스 오류 질문이요
There was an error while sending the e-mail. Is WebWolf running? I/O error on POST request for "http://localhost:9090/mail": Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect 이런식으로 오류가 나는데, webwolf와 webgoat는 정상적으로 켜져 있습니다. 포트도 문제없이 8080과 9090으로 잘 접속해있습니다. --server.address=ip주소 방식으로 접속했습니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
포트 수정문제, 로그아웃시 랜딩페이지에서 로그인버튼으로 바뀌도록 수정
지난번 문의했던 문제 말씀해주신대로 천천히 해보니 해결됐습니다 감사합니다! 또 질문이 있는데요,ㅎㅎ 1. 포트넘버를 5000으로 수정했는데도 npm run dev 실행시 계속 localhost:3000 으로 접속되는 이유는 무엇인가요? 2. 마지막 강의에서 login을 했다가 다시 logout을 한 상태에서, landing page 로 이동하면 로그인 버튼이 아니라 로그아웃 버튼이 뜨는데 이것은 어떻게 해결해야하나요??ㅠㅠ
-
미해결예제로 배우는 스프링부트 입문
jsp실행이 잘 되지 않습니다.
보여주시는 코드대로 하니 5번강좌부터 jsp 서블릿 실행이 되지 않아서 아래와 같이 코드를 추가하니 jsp맵핑이 되더라구요. 저는 스프링 부트 version '2.3.1.RELEASE' 을 사용하고 있고 starter project생성시 디펜던시로 spring web을 선택하였습니다. jsp 실행을 시키려면 계속 아래처럼 작성을 해야하는지 궁금합니다. @ComponentScan @Configuration @SpringBootApplication public class Ex06ModelApplication { public static void main(String[] args) { SpringApplication.run(Ex06ModelApplication.class, args); } @Bean public InternalResourceViewResolver setupViewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); return resolver; }}
-
파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기
write 질문입니다.
삭제된 글입니다
-
미해결실전! Querydsl
querydsl where 절 조건 관련 오류 문의드립니다.
안녕하세요.. 강의 잘 듣고 여러모로 아주 도움이 많이 되고 있습니다. 페이징 처리하는데 있어서 조건검색을 2개는 or 로. 1개는 and 조건으로 처리하고 싶은데 companyName, companyArea, Status 이렇게 3개의 조건을 받아서 처리하는데 null point exception 오류가 납니다. where 절 이부분에서 .where( ( companyNameEq(keyword) .or(companyAreaEq(keyword)) ), statusEq(status) ) .or(companyAreaEq(keyworkd) 을 빼면 오류가 안납니다. 물론 그위에 companyNameEq를 빼도 안나고요.. 먼가 조건 조합 할 때의 오류인듯한데 이리저리 해봐도 계속 오류가 나서 바쁘시지만 조언을 좀 구했으면 합니다 ^^ http://localhost/consultingList <--- 오류 http://localhost/consultingList?keyword=a&status=접수 <-- 정상동작 소스코드 @Overridepublic Page<ConsultingListDTO> searchPageSimple(String keyword, String status, Pageable pageable) { System.out.println("keyword: " + keyword); System.out.println("status: " + status); QueryResults<ConsultingListDTO> results = queryFactory .select(new QConsultingListDTO(consulting.id, consulting.companyName, consulting.companyArea, consulting.companyPhone, consulting.companyEmail, consulting.consultingStatus, consulting.insertDate )) .from(consulting) .where( ( companyNameEq(keyword) .or(companyAreaEq(keyword)) ), statusEq(status) ) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .orderBy(consulting.insertDate.desc()) .fetchResults(); List<ConsultingListDTO> content = results.getResults(); long total = results.getTotal(); return new PageImpl<>(content, pageable, total);} private BooleanExpression companyNameEq(String companyName) { return hasText(companyName) ? consulting.companyName.like('%' + companyName +'%') : null;}private BooleanExpression companyAreaEq(String companyArea) { return hasText(companyArea) ? consulting.companyArea.like('%' + companyArea + '%') : null;}private BooleanExpression statusEq(String status) { return hasText(status) ? consulting.consultingStatus.eq(ConsultingStatus.valueOf(status)) : null;} ------ 에러코드 {"timestamp":"2020-06-14T08:19:24.029+0000","status":500,"error":"Internal Server Error","message":"No message available","trace":"java.lang.NullPointerException\n\tat com.dyway.fund.consulting.ConsultingRepositoryExtendImpl.searchPageSimple(ConsultingRepositoryExtendImpl.java:47)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:371)\n\tat org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:204)\n\tat org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:657)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:621)\n\tat org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:605)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:366)\n\tat org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:178)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)\n\tat com.sun.proxy.$Proxy106.searchPageSimple(Unknown Source)\n\tat com.dyway.fund.consulting.ConsultingController.consultingList(ConsultingController.java:183)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:634)\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:741)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)\n\tat org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)\n\tat org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:118)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:150)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:158)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:117)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:92)\n\tat org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:77)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)\n\tat org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)\n\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)\n\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)\n\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)\n\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639)\n\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n\tat java.base/java.lang.Thread.run(Thread.java:834)\n","path":"/consultingList"}
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
이미지 상대주소로 저장방법
안녕하세요. 완강한 이후에 추가로 헤로쿠에서 배포하는 강의까지 수강하였고 헤로쿠에서 정상작동을 했습니다. 인터넷에 배포를 할때 , src={`http://localhost:5000/${image}`} 상대주소를 적어서 dev 모드와 prod모드에서 동시에 보여질려고 하면 어떻게 해야 하는 지 궁금합니다. 감사합니다.
-
[개념부터 실습까지] 추천 시스템 입문편
강의 관련 질문
삭제된 글입니다
-
미해결파이썬 사용자를 위한 웹개발 입문 A to Z Django + Bootstrap
댓글기능중에서
안녕하세요. 댓글을 쓸때 엔터(줄바꿈)는 댓글 남겼을때 기능을 안하는데 엔터 두번을 하면 줄바꿈 한번의 기능을 하네요. post 에서처럼 {{ comment.get_markdown_content | safe}} 쓰면 되지않을까 해서 여러곳에 놓아봤는데 해결이 안되네요. 혹시 어떻게 해결할 수 있을까요?
-
미해결네트워크 공격 유형 이해와 네트워크 위협 행위 분석
강의에 사용하신 ppt 자료 복습용 으로 사용하고 싶은데 메일로 받을수 있을까요?
강의와 관련있는 질문을 남겨주세요.• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)• 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달에도 요령이 필요합니다.• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요! 구체적인 질문일수록 명확한 답을 받을 수 있어요.• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다. 기본적인 예의를 지켜주세요.• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다.
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
@Valid관련 에러를 처리할때
@Valid관련 에러를 BindingResult로 받는거랑 Errors로 받는거에 대한 차이가 따로 있을까요?
-
해결됨[NLP] IMDB 영화리뷰 감정 분석을 통한 파이썬 텍스트 분석과 자연어 처리
코랩에서 PDF 파일로 어떻게 변환하는 방법에 대해서...
안녕하세요. 계속 박 강사님의 강의를 다 듣고 있는데요... 실습하는 파이썬 코드 노트를 오프라인으로 PDF 파일로 보면서 학습하려고 하는데 코랩에서 PDF 파일로 변환하는 방법을 도저히 인터넷에서 찾을 수 가 없어서요. 혹시 알고 계시거나 다른 방법이 있는지요?..
-
해결됨애플 웹사이트 인터랙션 클론!
main.js 적용내용 강좌에서 에러가 나서 문의 드려요~
(() => { let yOffset = 0; //window.pageyOffset let prevScrollHeight = 0; // 현재 스크롤 위치(yOffset)보다 이전에 위치한 스크롤 섹션들의 스크롤 높이값의 합 let currentScene = 0; // 현재 활성화된(눈 앞에 보고있는) 씬(scroll-section) let enterNewScene = false; //새로운 scene이 시작된 순간 const sceneInfo = [ { // 0 type:'sticky', heightNum:5,//브라우저 높이의 5배로 scrollHeight 세팅 scrollHeight :0, objs:{ container: document.querySelector('#scroll-section-0'), messageA: document.querySelector('#scroll-section-0 .main-message.a'), messageB: document.querySelector('#scroll-section-0 .main-message.b'), messageC: document.querySelector('#scroll-section-0 .main-message.c'), messageD: document.querySelector('#scroll-section-0 .main-message.d'), }, values:{ messageA_opacity_in: [0, 1, { start: 0.1, end: 0.2 }], messageB_opacity_in: [0, 1, { start: 0.3, end: 0.4 }], messageC_opacity_in: [0, 1, { start: 0.5, end: 0.6 }], messageD_opacity_in: [0, 1, { start: 0.7, end: 0.8 }], messageA_translateY_in: [20, 0, { start: 0.1, end: 0.2 }], messageB_translateY_in: [20, 0, { start: 0.3, end: 0.4 }], messageC_translateY_in: [20, 0, { start: 0.5, end: 0.6 }], messageD_translateY_in: [20, 0, { start: 0.7, end: 0.8 }], messageA_opacity_out: [1, 0, { start: 0.25, end: 0.3 }], messageB_opacity_out: [1, 0, { start: 0.45, end: 0.5 }], messageC_opacity_out: [1, 0, { start: 0.65, end: 0.7 }], messageD_opacity_out: [1, 0, { start: 0.85, end: 0.9 }], messageA_translateY_out: [0, -20, { start: 0.25, end: 0.3 }], messageB_translateY_out: [0, -20, { start: 0.45, end: 0.5 }], messageC_translateY_out: [0, -20, { start: 0.65, end: 0.7 }], messageD_translateY_out: [0, -20, { start: 0.85, end: 0.9 }] } }, { // 1 type:'normal', heightNum:5,//브라우저 높이의 5배로 scrollHeight 세팅 scrollHeight :0, objs:{ container:document.querySelector('#scroll-section-1') } }, { // 2 type:'sticky', heightNum:5,//브라우저 높이의 5배로 scrollHeight 세팅 scrollHeight :0, objs:{ container: document.querySelector('#scroll-section-2'), messageA: document.querySelector('#scroll-section-2 .a'), messageB: document.querySelector('#scroll-section-2 .b'), messageC: document.querySelector('#scroll-section-2 .c'), pinB: document.querySelector('#scroll-section-2 .b .pin'), pinC: document.querySelector('#scroll-section-2 .c .pin'), }, values:{ messageA_translateY_in: [20, 0, { start: 0.15, end: 0.2 }], messageB_translateY_in: [30, 0, { start: 0.6, end: 0.65 }], messageC_translateY_in: [30, 0, { start: 0.87, end: 0.92 }], messageA_opacity_in: [0, 1, { start: 0.25, end: 0.3 }], messageB_opacity_in: [0, 1, { start: 0.6, end: 0.65 }], messageC_opacity_in: [0, 1, { start: 0.87, end: 0.92 }], messageA_translateY_out: [0, -20, { start: 0.4, end: 0.45 }], messageB_translateY_out: [0, -20, { start: 0.68, end: 0.73 }], messageC_translateY_out: [0, -20, { start: 0.95, end: 1 }], messageA_opacity_out: [1, 0, { start: 0.4, end: 0.45 }], messageB_opacity_out: [1, 0, { start: 0.68, end: 0.73 }], messageC_opacity_out: [1, 0, { start: 0.95, end: 1 }], pinB_scaleY: [0.5, 1, { start: 0.6, end: 0.65 }], pinC_scaleY: [0.5, 1, { start: 0.87, end: 0.92 }] } }, { // 3 type:'sticky', heightNum:5,//브라우저 높이의 5배로 scrollHeight 세팅 scrollHeight :0, objs:{ container:document.querySelector('#scroll-section-3'), canvasCaption:document.querySelector('.canvas-caption') }, valeus:{ canvasCaption_opacity: [ 0, 1, { start: 0, end: 0 } ], canvasCaption_translateY: [ 20, 0, { start: 0, end: 0 } ] } }, ] function setLayout(){ //각 스크롤 섹션의 높이 세팅 for(let i =0 ; i<sceneInfo.length; i++){ if(sceneInfo[i].type==='sticky'){ sceneInfo[i].scrollHeight = sceneInfo[i].heightNum * window.innerHeight; }else if(sceneInfo[i].type==='normal'){ sceneInfo[i].scrollHeight = sceneInfo[i].objs.container.offsetHeight; } sceneInfo[i].objs.container.style.height =`${sceneInfo[i].scrollHeight}px`; } console.log(sceneInfo); yOffset = window.pageYOffset; let totalScrollHeight =0; for(let i =0;i<sceneInfo.length;i++){ totalScrollHeight += sceneInfo[i].scrollHeight; if(totalScrollHeight >= yOffset){ currentScene =i; break; } } document.body.setAttribute('id',`show-scene-${currentScene}`); } function calcValues(values, currentYOffset){ let rv; const scrollHeight = sceneInfo[currentScene].scrollHeight; const scrollRatio = currentYOffset / sceneInfo[currentScene].scrollHeight; if(values.length===3){ //start const partScrollStart = values[2].start * scrollHeight; const partScrollEnd = values[2].end * scrollHeight; const partScrollHeight = partScrollEnd - partScrollStart; if(currentYOffset >= partScrollStart && currentYOffset <= partScrollEnd){ rv = (currentYOffset-partScrollStart)/partScrollHeight * (values[1]-values[0])+values[0]; }else if(currentYOffset <partScrollStart){ rv = values[0]; }else if(currentYOffset >partScrollEnd){ rv = values[1]; } }else{ //end rv = scrollRatio* (values[1]-values[0])+values[0]; } return rv; } function playAnimation(){ const objs = sceneInfo[currentScene].objs; const values = sceneInfo[currentScene].values; const currentYOffset = yOffset - prevScrollHeight; const scrollHeight = sceneInfo[currentScene].scrollHeight; const scrollRatio = currentYOffset / scrollHeight; // console.log(currentScene); switch (currentScene){ case 0: if(scrollRatio <= 0.22){ //in objs.messageA.style.opacity = calcValues(values.messageA_opacity_in,currentYOffset); objs.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_in,currentYOffset)}%, 0)`; }else{ //out objs.messageA.style.opacity = calcValues(values.messageA_opacity_out,currentYOffset); objs.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_out,currentYOffset)}%, 0)`; } if (scrollRatio <= 0.42) { // in objs.messageB.style.opacity = calcValues(values.messageB_opacity_in, currentYOffset); objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageB.style.opacity = calcValues(values.messageB_opacity_out, currentYOffset); objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.62) { // in objs.messageC.style.opacity = calcValues(values.messageC_opacity_in, currentYOffset); objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageC.style.opacity = calcValues(values.messageC_opacity_out, currentYOffset); objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_out, currentYOffset)}%, 0)`; } break; case 1: // console.log('1 play'); break; case 2: // console.log('2 play'); break; case 3: // console.log('3 play'); break; } } function scrollLoop(){ enterNewScene= false; prevScrollHeight = 0; for(let i=0;i<currentScene;i++){ prevScrollHeight += sceneInfo[i].scrollHeight; } if(yOffset > prevScrollHeight + sceneInfo[currentScene].scrollHeight){ enterNewScene=true; currentScene++; document.body.setAttribute('id',`show-scene-${currentScene}`) } if(yOffset < prevScrollHeight){ enterNewScene=true; if(currentScene === 0) return;//브라우저 바운스 효과 방지 currentScene--; document.body.setAttribute('id',`show-scene-${currentScene}`) } if(enterNewScene) return; playAnimation(); } window.addEventListener('scroll', () =>{ yOffset=(window.pageYOffset); scrollLoop(); }) // window.addEventListener('DOMContentLoaded',setLayout); window.addEventListener('load',setLayout); window.addEventListener('resize',setLayout); })() 0.62 scrollRatio 에서 에러가 나서 문의 드려요. main.js:187 Uncaught TypeError: Cannot read property 'style' of null
-
해결됨비전공자를 위한 개발자 취업 개론
안녕하세요 튜터님
안녕하세요 강의 방금 20분전에 결제 했는데 제가 생각한 강의와 다르네요.. 혹시 환불 요청 드려도 될까요??
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
jquery는 어떤 버전을 다운받아야 하나요
jquery는 어떤 버전을 다운받아야 하나요? 다른 수업에서 자바스크립트는 전체버전과 약식 버전...즉 용량이 큰것과 작은 것이 잇다고 배웟었는데...제이쿼리는 아래 그림 준 어떤것을 다운 받아야 하는지 알려주세요
-
미해결[라즈베리파이] IoT 딥러닝 Computer Vision 실전 프로젝트
import 모듈 실패
pygame 을 설치했는데도 계속 실행이 안되어서 새로운 가상환경을 만들어 설치하다 보니 기존 설치했던 파일들 까지 import 에러가 발생합니다. path때문에 ㄱ런거 같은데 방법이 있을까요?
-
스프링 기반 REST API 개발
기선님 안녕하세요. Location header와 Redirect URL이 이상하게 나와서 질문드립니다ㅠㅠㅠ
삭제된 글입니다
-
미해결파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기
PyQt5 만들고 파이썬에서 코드작성하는데 오류가떠요
line 10, in <module> class Main(QMainWindow, Form_class):NameError: name 'Form_class' is not defined 이런오류가떠요 어떻게하죠??
-
미해결쉽게 배우는 Webpack
저도 쿠폰 부탁드립니다!
공지를 늦게 확인했네요. 지금 쿠폰 저도 받을 수 있을까요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
User.js comparePassword 부분 오타 해결
영상속 코딩을 그대로 따라했는데 postman 으로 로그인 시도시 무한로딩상태이길래 이리저리 해보다가 if (err) return cb(err), cb(null, isMatch) 윗 부분에서 문제더군요. if (err) return cb(err); cb(null, isMatch); 이렇게 바꾸어주고 해결되었습니다. 영상속 코드 내용이 잘못된 것같긴한데 확실히 말은 못하겠네요.