묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[백문이불여일타] 데이터 분석을 위한 기초 SQL
해커랭크에서 문제풀다가 이해가 안되서 여쭤봅니다.
안녕하세요 선생님. 아래 문제 풀어보았는데 틀린이유를 도무지 모르겠어서 여쭤봅니다 알려주시면 감사하겠습니다 ㅜ
-
미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
ScrollChangeListener관련
강의에는 scrollX, oldScrollX 이렇게 파라미터가 되어 있어서 보기 편한데 최신 버전에는 아래와 같이 되서 불편합니다. 자동 생성된 파라미터를 이전 버전처럼 생성되게 할 수 있나요? val listener1 = object : View.OnScrollChangeListener { override fun onScrollChange(p0: View?, p1: Int, p2: Int, p3: Int, p4: Int) { when(p0?.id) { R.id.scroll1 -> { } } }}
-
미해결애플 웹사이트 인터랙션 클론!
강사님 질문있습니다.
main.add.js파일을 복붙해서 넣었는데 오류가 발생되어서 제 아무리 찾아봐도 어디서 오타인지를 못찾아서 도움을 요청하려고 글을 남깁니다. 오류는 콘솔로그에 Uncaught TypeError: Cannot read property 'style' of null at playAnimation (main.js:257) at scrollLoop (main.js:355) at main.js:361 라고 뜹니다. 제 스스로 찾아야하는데 도움부탁드립니다. 우선 제 js코드를 올려드리겠습니다. (() => { let yOffset = 0; //window.pageYOffset 대신 쓸 변수 let prevScrollHeight = 0; // 현재 스크롤 위치(yOffset)보다 이전에 위치한 스크롤 섹션들의 스크롤 높이값의 합 let currentScene = 0; // 현재 활성화된(눈 앞에 보고있는) 씬(scroll-section) let enterNewScene = false; // 새로운 scene이 시작된 순간 true 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, // type normal에서는 필요 없음 scrollHeight: 0, objs: { container: document.querySelector('#scroll-section-1') } }, { // 2 type: 'sticky', heightNum: 5, 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, scrollHeight: 0, objs: { container: document.querySelector('#scroll-section-3'), canvasCaption: document.querySelector('.canvas-caption') }, values: { } } ]; 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 } sceneInfo[i].objs.container.style.height = `${sceneInfo[i].scrollHeight}px`; } 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 / scrollHeight; if (values.length === 3) { //start ~ end 사이에 애니메이션 실행 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 { 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; switch (currentScene) { case 0: // console.log('0 play') 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)`; } if (scrollRatio <= 0.82) { // in objs.messageD.style.opacity = calcValues(values.messageD_opacity_in, currentYOffset); objs.messageD.style.transform = `translate3d(0, ${calcValues(values.messageD_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageD.style.opacity = calcValues(values.messageD_opacity_out, currentYOffset); objs.messageD.style.transform = `translate3d(0, ${calcValues(values.messageD_translateY_out, currentYOffset)}%, 0)`; } break; case 2: // console.log('2 play'); if (scrollRatio <= 0.32) { // 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.67) { // in objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_in, currentYOffset)}%, 0)`; objs.messageB.style.opacity = calcValues(values.messageB_opacity_in, currentYOffset); objs.pinB.style.transform = `scaleY(${calcValues(values.pinB_scaleY, currentYOffset)})`; } else { // out objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_out, currentYOffset)}%, 0)`; objs.messageB.style.opacity = calcValues(values.messageB_opacity_out, currentYOffset); objs.pinB.style.transform = `scaleY(${calcValues(values.pinB_scaleY, currentYOffset)})`; } if (scrollRatio <= 0.93) { // in objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_in, currentYOffset)}%, 0)`; objs.messageC.style.opacity = calcValues(values.messageC_opacity_in, currentYOffset); objs.pinC.style.transform = `scaleY(${calcValues(values.pinC_scaleY, currentYOffset)})`; } else { // out objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_out, currentYOffset)}%, 0)`; objs.messageC.style.opacity = calcValues(values.messageC_opacity_out, currentYOffset); objs.pinC.style.transform = `scaleY(${calcValues(values.pinC_scaleY, currentYOffset)})`; } 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) { if (currentScene === 0) return // 브라우저 바운스 효과로 인해 마이너스가 되는 것을 방지(모바일) enterNewScene = true; 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); })();
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
file 옵션
안녕하세요. print(a,file=b)라고 하면 파일 옵션이 a를 b에 쓴다고 설명해주셨는데 이 부분이 어떤 의미인지 잘 이해가 가지 않아서요, python file 옵션으로 검색해봐도 file open에 대한 내용이 주로 나오는데 추가적인 설명 부탁드릴 수 있을까요?
-
미해결자바스크립트 비기너: 튼튼한 기본 만들기
default 질문 있습니다
강의 코드3에서 맞는 케이스가 없으면 디폴트가 실행된다 되어있는데 디폴트 실행 후 케이스 2도 실행되는거면 왜 실행값이 700, 200이 아니라 200만 나오나요?? 디폴트 값인 700은 수행되지 않는건가요?
-
미해결웹 게임을 만들며 배우는 자바스크립트
로또 만들기 배열 map 메서드
forEach문으로 map을 구현했는데 이게 어떤면에서 억지스러운 것인지 궁급합니다!
-
미해결시스템엔지니어가 알려주는 리눅스 기초편 Bash Shell Script
안녕하세요 안되는부분이있서서요
터미널에서 pwd 치고 그다음 cd /vqgrqnt/ 치면 디렉토리가없다고나오네요
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
윈도우에 visual studie code 에서 도커 볼륨이 안될떄,
window 는 -v %cd%:/usr/src/app 맥 은 -v (pwd):/usr/src/app powershell -v ${PWD}:/usr/src/app 입니다 아마 윈도우에서 비쥬얼스트디오 코드를 사용하시면 파워쉘로 하셔야 할거예요
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
19:28 질문이요!
Hover 했을때 카드가 살짝 위로 올라가는 생동감을 주기위해서 .card:hover { transform: translateY(-20px) } 로 작성하셨는데 .card:hover { top:20px } 로 작성해도 똑같이 작동하더라구요요. 혹시 둘의 차이점을 알 수 있을까요?
-
미해결파이썬 사용자를 위한 웹개발 입문 A to Z Django + Bootstrap
request.user가 SimpleLazyObject를 반환합니다.
19:34처럼 comment.author = request.user를 하면 아래와 같은 에러가 발생합니다. ValueError: Cannot assign "<SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x000002CE4219A0A0>>": "Comment.author" must be a "User" instance. request.user가 SimpleLazyObject를 반환하는거 같은데,PostCreate에서 request.user를 사용할 때는 문제없이 잘 되는데 여기에선 에러가 나는 이유를 모르겠습니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
LOAD_POSTS_SUCCESS 시 mainPosts의 content : null
위 이미지처럼 포스트 로드 성공 시 mainPosts 펼쳐보면 id값은 정상인데 content가 null로 찍혀나오더라구요.. 이런 부분은 백엔드 부분에서 잘못된걸까요?
-
미해결더 자바, 코드를 조작하는 다양한 방법
JIT 컴파일러와 인터프리터에 대한 질문..
안녕하세요 기선님, 질문 하나만 드리겠습니다 ㅠ.ㅠ 제가 이해하기로는, 또한 인터넷에서 찾아본 결과로는 자바는 JIT 컴파일러를 default로 사용한다고 하길래, JIT 컴파일러가 인터프리터 역할까지 한다고 생각을 하는데, 강의 내용에서는 (제가 잘못들은 것 일 수 있지만) JIT 컴파일러가 먼저 캐싱만 해두고, 그 이후에 인터프리터를 사용하는 것처럼 보이는데 어떤게 맞는건지 알수 있을까요?? 또한 기선님이 주신 참고자료에서 보았을 때, JIT 컴파일러가 최적화를 위해서 블록단위로 코드를 컴파일하여 최적화를 한다는 내용도있는데, 어떤 내용이 맞는건지 궁금합니다.
-
미해결리버스쿨 Level1 - 리버싱 분석 초급과정
우분투 링크 갱신 부탁드립니다.
안녕하세요. 이제 실습으로 들어가려고 하는데 Win7 링크만 갱신되어있고 우분투 링크는 깨졌으며 아예 갱신 주소가 없습니다. 우분투도 다운로드 받을 수 있게 링크 갱신 부탁드립니다. 그리고 우분투는 Virtual Box 버전이 없나요??
-
미해결따라하며 배우는 리액트, 파이어베이스 - 채팅 어플리케이션 만들기[2023.12 리뉴얼]
채팅내용 화면렌더링이 안돼요 ㅜㅜ
<div className="main" > <MainPanel key={currentChatRoom && currentChatRoom.id} /> </div> </section> 이렇게 키값도 설정하고 renderMessage = (messages) => { messages.length > 0 && messages.map(message => ( <Message key={message.timestamp} message={message} user={this.props.user} /> )) }; renderMessage도 만들어서 <section className="mainPanel"> <MessageHeader /> <div className="messages"> {this.renderMessage(messages)} </div> <MessageForm /> </section> mainPanel에서 호출해줬는데 콘솔로 찍어보면 state에 메세지들은 나오는데 화면에 뿌려지질 않아요 ㅜㅜ https://github.com/jellybrown/chatApp 깃헙 주소입니다,, 도와주세요!!!!
-
미해결홍정모의 따라하며 배우는 C언어
. precision * 에 대한 예제
앞에서 .precision* 에 대한 예제를 이용해서 설명해 주신다 했는데 보이지가 않습니다. 제가 혹시 놓쳤을 까봐 질문 드립니다.
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
Union&Find vs DFS
안녕하세요 강사님. 저는 강의를 듣기 전 이번 문제를 인접리스트를 만든 후 DFS를 이용해서 풀었습니다.(66번 경로탐색 처럼)두 경우 모두 테스트케이스를 통과하였습니다.혹시 시간이나 메모리 효율성을 고려했을 때 어느 방법을 선택하는 것이 더 좋을지 알 수 있을까요?
-
미해결정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)
length 길이 비교 문의드립니다
안녕하세요 강의 잘 보고 있습니다~ 제가 혼자 디버깅하며 결과를 확인하는데에 에러사항이 있어 질문드립니다. (이클립스로 코딩하고 있는데 에러가 쉽사리 해결되지 않네요ㅜㅜ) 본 강의에서는 "ccaabbb"에 대해서만 디버그하셨는데 제가 소스코드를 보면서 이해한 바로는 "ccccaabb" 의 경우 결과값이 6이 되어야하는데 b를 만나면 counter가 2보다 크게 되어 c가 다 날아가 버리고 start가 a부터 다시 시작해서 결과값이 4가 나오지 않나요..? 감사합니다.
-
해결됨스프링 데이터 JPA
converter에 관한 질문
기본적으로 DomainClassConverter 는 도메인의 id 를 기준으로 데이터바인딩을 해주는데, 만약 id 값이 아닌 다른 프로퍼티를 사용해 컨버팅하고싶다면 직접 컨터버를 만들어주면 되는거죠!? 예를들어 account 라는 도메인에서 id 는 long으로 auto generated 되는 값을 쓰되, accountEmail 이라는 String타입의 프로퍼티로 컨버팅을 하고싶다면 Formatter 를 커스터마이징하거나 다른 converter를 커스터마이징해 사용하면 되는게 맞나요?
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
피쳐데이터변환
선생님, 안녕하세요 : ) log, standard, minmax를 이용하여 피쳐엔지니어링을 해주실 때, 함수에 보면 fit_transform(input_data) 혹은 np.log1p(input_data)라고 되어 있습니다. input_data에는 categorical과 numerical 변수가 섞여 있는데 (질문1) numerical 변수만 엔지니어링하도록 standardscaler() minmaxscaler()가 구성되어 있는 것인가요~?? 아니면 categorical 변수도 같이 엔지니어링을 해주는 것인가요?? 혹시 같이 엔지니어링을 해준다면 그 이유는 무엇인가요?? (질문1) log의 경우에는 categorical변수도 로그값으로 변경해준 것 같은데 categorical변수는 왜 피쳐엔지니어링하는지 모르겠어서 이렇게 질문 남깁니다. 감사합니다 : )
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
PDF 16쪽 오타가 있습니다
상품은 제고 관리가 필요하다 > 상품은 재고 관리가 필요하다