묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
객체지향 문법 질문 드립니다.
11:04 객체 attribute값을 바꾸기 위해 quad1.height=10 quad1.width=10 등으로 객체 호출하셨지요. 그런데 string.split()처럼 객체 이름. method이름(인자)가 공식 아닌가요?? 그러면 quad1. quad_name() 이어야 할 것 같은데, 왜 메서드 (quad_name) 대신 인자(height, width)가 들어갔는지 궁금합니다.
-
해결됨프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
Hint 부분관련해서 질문 드립니다.
def tot_length1(word: str, num: int) -> int: def tot_length2(word: str, num: int) -> None: 여기서 맨우측 int와 none의 차이는 무엇인가요?? 또한 word:str, num:int라고 선언한 것은 word에 들어가는 인자는 str값이라는 것을 확인해줌으로 써 혹시나 하는 형 변환을 방지시켜주는 역할을 하는 것인가요??
-
미해결쉽고 자연스럽게 배워보는 Javascript 입문 - 코드스쿼드 마스터즈 코스 레벨1
질문 있습니다!
안녕하세요 선생님, 꾸준하게 강의 듣고 있는데 이번 연습문제가 너무 어렵게 느껴져서 함수, input태그를 써서 조건문에서 풀었던 소수판별 프로그램 먼저 익히려고 하는데요, 77, 81같은 숫자를 입력했을 때 조건문이 먹히지가 않아서 질문 드립니다. 어떤 부분을 어떻게 수정해야 할지 모르겠는데 힌트 부탁드립니다..! <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>소수판별 프로그램</title> </head> <body> <h1>소수판별 프로그램입니다.</h1> 입력할 숫자 : <input type="text" id="num"> <button onclick = "display()"> 확인</button> <script> function display(){ var strN = document.getElementById("num").value; var n = Number(strN); for(i = 2; i < n; i++){ if(n % i === 0){ console.log(n + "은 소수가 아닙니다."); break; } else{ console.log(n + "은 소수입니다."); } } } </script> </body> </html> 함수, 객체 부터 내용이 어려워졌는데 포기하지 않겠습니다ㅜ
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
질문있습니다.
선생님 안녕하세요! 강의를 듣다가 award 부분에 스크롤이 도달했을 때 opacity : 0 이었다가 opacity : 1로 스르륵 나타나게 하고싶은데 js를 모르겠어요 ㅠㅠ 혹시 알려주실 수 있으실까요?
-
미해결타입스크립트 입문 - 기초부터 실전까지
마지막강의
코로나관련 게시물 프로젝트가 업데이트 예정과 강의소개에서 사라졌던데 강의계획에서 사라진것인가요?
-
해결됨[리뉴얼] 처음하는 MongoDB(몽고DB) 와 NoSQL(빅데이터) 데이터베이스 부트캠프 [입문부터 활용까지] (업데이트)
6:30 윈도우즈의 몽고DB 실행
sudo service mongod start 명령이 맥 운영체제에서 brew services start mongodb와 동일한 명령어라 생각해도 될까요? sudo service mongod start 으로 실행시키고 진행했는데 선생님의 강의대로 특별히 오류메시지가 뜨지는 않았어요.
-
미해결[백문이불여일타] 데이터 분석을 위한 기초 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 깃헙 주소입니다,, 도와주세요!!!!