묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결화이트해커가 되기 위한 8가지 웹 해킹 기술
4_ 칼리리눅스 설치 관련 질문드립니다
칼리리눅스를 설치하고 버츄얼박스를 통해 프로그램을 가져오려는데 계속 설치할 수가 없다고 뜹니다... ㅠㅠ 혹시 가져오는 과정에서 문제가 있는 것 같아 과정을 올려봅니다 1. 2. 3.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일반 조인에서 m, t 로 화면 어떻게 되나요?
안녕하세요. 일반 조인 select m, t from Member m join m.team t 를 실행하면 어떻게 되나요?
-
미해결코로나맵 개발자와 함께하는 지도서비스 만들기 1
안녕하세요 이동훈 강사님 질문있습니다!
https://github.com/um314567/js_covid19 제 깃허브입니다 마크가 2개가 생성이 되지 않고 마크에 마우스를 갖다대면 어떠한 텍스트도 뜨지 않는데 어떤 부분이 부족해서 그런 것인지 궁금합니다ㅠㅠ
-
미해결성공적인 SQL 인젝션 공격을 위한, SQL 기본 문법
실행 안 됨
이렇게 엔터를 계속 눌러도 '>만 추가되고 실행이 안 됩니다. 왜 이런건가요? 강의와 관련있는 질문을 남겨주세요.• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)• 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달에도 요령이 필요합니다.• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요! 구체적인 질문일수록 명확한 답을 받을 수 있어요.• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다. 기본적인 예의를 지켜주세요.• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다.
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
파일 인식을 못한다고 합니다.
안녕하세요 좋은 강의 잘 듣고 있습니다. 하지만 파일 경로에 타이타닉 파일을 복사하고 실행을 하는데 파일 디렉토리에 없다고 합니다. 그래서 다시 저장하고 위치까지 확인한 다음에 다시 해봐도 같은 에러가 나오네요 1장에서 했던것처럼 똑같이 했는데 혹시 다른 방법이 있을까요?
-
미해결파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
/와 // 차이
가 무엇인가요?
-
미해결인터랙티브 웹 개발 제대로 시작하기
유튜브 자바스크립트 파트3 강의 질문 여기다가 해도 되나요?ㅎㅎ
dom script 유튜브 먼저 보고 수강하고 이벤트도 유튜브 먼저 보고 수강하려고 하는데 유튜브 내용에서 질문이 있어서요! 1:52 쯤 방법 3번째에서 전역변수를 만드셨었는데, var currentMenu; 이렇게 선언하셨는데 요즘은 const를 많이 쓰잖아요. 근데 const는 var과 다르게 정의 ? =으로 값을 넣어주어야만 선언할 수 있는데 const를 넣을 경우 코드 변경을 어떻게 해야할까요? ^^ 계쏙 반복 반복 보고있어요~ 인터렉스웹 강의 보기전에 이걸루 반복 학습중이에요~ 또 한가지 질문인데요. const currentMenu; // 현재 활성화된 메뉴를 담을 변수(저장 공간) const menuLinks = document.querySelectorAll('.menu-link'); function clickMenuHandler( ) { if (currentMenu) { currentMenu.classList.remove('menu-active'); this.classList.add('menu-active'); currentMenu = this; } for (const i = 0; i < menuLinks.length; i++) { menuLinks[i].addEventListener('click', clickMenuHandler); } 왜 menu-active에는 그냥 넣어주나요? currentMenu.classList.remove('menu-active'); this.classList.add('menu-active'); 위에 클래스는 .으로 들어가 있는데
-
미해결파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
print 안에
따옴표 안 넣어도 되나요?
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
자막이 있으면 좋겠어요..
자막파일 따로 다운받아서 놓친부분 찾기도 좋고 중간중간에 목소리 끊기는 부분도 있고 학교과제하느라 제가 시간도 많이 부족해서..... 다음 영상제작부터 자막이 있으면 계속 구매하고싶어요!!
-
미해결[라즈베리파이] IoT 딥러닝 Computer Vision 실전 프로젝트
환경설정 질문
안녕하세요. 훌륭한 강의 잘 보고 있습니다. 본격 라즈베리파이 사용 전 노트북에서 미리 테스트를 한다고 했을 때 아나콘다를 설치하고 쥬피터 노트북이 아닌 spyder 에서 코딩을 따라하면 되는거죠? 라즈베리파이는 3 B+와 4 둘 다 가지고 있어서 둘 다 같은 방법으로 따라하면 되는거죠?
-
해결됨Vue.js 시작하기 - Age of Vue.js
$emit 은 어떤 상황일 때 사용하나요?
v-on:click 이벤트와는 사용하는 상황이 다른 것 같은데 $emit은 어떤 상황일 때 사용하나요? 사용하는 방법은 강의를 보면서 이해를 한 것 같은데 그래서 이 $emit 은 언제 사용하는 거지? 라는 의문이 생겨서요.. 하위 컴포넌트에 $emit 으로 이벤트 이름을 지정해주고 지정된 이름을 상위 컴포넌트 메서드와 연결해주기 위해 사용하는 걸까요 ?? v-on 이벤트 강의를 듣고 나서 $emit 에 대해 다시 보는데 제 머리속에서 정리가 안 되서 여쭤봅니다..
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
네비게이션 메뉴 눌렀을 때 페이지의 처음부터 보이게 하는 방법
안녕하세요, 이번 강의 마지막 부분에 전반적으로 모바일버전이 잘 작동하는지 확인하시는 과정에서 네비게이션 메뉴를 눌러 각 페이지로 이동하는지도 보여주셨는데요, 이 과정에서 상단에 고정되어 있는 header가 페이지의 내용을 일부 가리게 되는 현상이 보입니다. 이를 조정해서 페이지의 전체가 보이도록 하는 방법이 있을까요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
구글 코랩
구글 코랩도 IDE라고 할 수 있나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
plugin 오류가 계속 나요ㅠ(해결완료)
안녕하세요. 강의를 듣고 있는 수강생입니다. plugin 오류로 인해 환경 설정 후 진도를 못나가고 있습니다ㅜ 처음 build 하면 아래와 같이 에러가 나고, External Libraries에도 gradle관련 것들이 안나옵니다. java도 11버전이고 무엇이 문제일까요ㅠ 도움 부탁드립니다. (zipkyh@naver.com <- 요이로 파일 압축하여 메일 드렸습니다.)
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
무한 로딩 에러처리
back routers, models, passport font sagas reducers 부분 오타 확인하구 강의도 다시 돌려봤는데 못잡겠어서 문의 납깁니다 어디 부븐을 확인해야 할까요? 기초적인 질문 죄송합니다ㅠ
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
노드
노드라는것은 정확하게 무엇인지알수있을까요?
-
미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part1
문의 드립니다.
아래 코드에서 오류가 발생합니다. 잘못 입력된 부분이 있는지 확인이 가능할까요? sns.relplot( x="PBR(IFRS-연결)", y="수익률(%)", col="size", hue="베타 (M,5Yr)", data=df, palette="coolwarm", ) ValueError: could not broadcast input array from shape (28279,2) into shape (28279)
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
씨름 선수 문제관련 질문
안녕하세요. 강의 잘 듣고 있습니다. 씨름 선수(그리디) 문제에서 잘 이해가 되지 않는 부분이 있습니다. 키순으로 정렬해서 두번째 지원자(181 60) 는 선발이 안되는 이유가 자기보다 큰(183)선수보다 몸무게가 작아서 라고 하셨는데요. 선발 원칙을 보면 “다른 모든 지원자와 비교하여 키와 몸무게 중 적어도 하나는 다른 지원자보다 키가 크거나 몸무게가 많이 나가는 지원자만 뽑기로 했습니다.” 라고 되어 있으니 다른 모든 지원자와 비교하면 키는 180인 지원자 보다 크니 해당 조건에 맞는 것 아닌가요? 적어도 하나는 키가 크거나 몸무게가 많으면 되니까요. 하지만 강의에서 보면 비교 대상이 자신보다 키가 큰 사람으로 한정하고 있습니다. 적어도 하나를 만족하려면 이미 자신보다 키가 작은 사람이 존재하기 때문에 키로는 조건을 만족한다고 봐야 하는것 아닌지요. 또, 그 다음 문장을 보면 A 지원자가 다른 모든 지원자와 비교하여 키와 몸무게가 모두 작거나 가벼운 경우가 한 번이라고 있다면 A지원자를 뽑지 않는다는 것입니다. 이 부분은 키와 몸무게가 모두 다른 사람과 비교해서 불리한 사람이라는 의미인가요? 그렇다면 항상 모든 지원자중 가장 키가 작고 몸무게가 가벼운 한명만 해당하는 것 아닌가요? 처음 문제를 읽었을때 선발조건과 입력예제, 출력예제와 맞지 않는다는 생각이 들었고. 강의를 듣고 나니 의도하신 조건과 문제에 기술된 설명이 차이가 있는 것 같다는 생각이 들었습니다.
-
미해결애플 웹사이트 인터랙션 클론!
선생님 질문이 있습니다.
/** *ECMA6 SCRIPT STUDY */ //const arr=[1,2,3]; //바람직한 패턴이 아닙니다. (()=>{ //const arr=[1,2,3]; //지역변수로 선언하고 코딩하는 것을 제안. const sceneInfo=[ { type:'sticky', //0 heightNum:5, //브라우저 높이의 5배로 scrollheight 세팅. scrollHeight:0, //문서길이에 대해서 섹션의 애니메이션 구간을 미리 설정합니다. //일단 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 }] } }, //각구간을 4개로 나눴습니다. { //1 type:'normal', heightNum:5, scrollHeight:0, objs:{ container: document.querySelector('#scroll-section-1') } }, { type:'sticky', //2 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', scrollHeight:0, heightNum:5, objs:{ container: document.querySelector('#scroll-section-3'), canvasCaption: document.querySelector('.canvas-caption') }, values:{ } } ]; let yOffset=0; let prevScrollHeight=0; //현재 스크롤위치보다 이전에 위치한 스크롤 섹션들의 스크롤 높이값의 합. let currentScene=0; //활성화된 씬 let enterNewScene=false; //새로운 scene이 시작되는 순간. function setLayout(){ for(let i=0; i<sceneInfo.length; i++){ if (sceneInfo[i].type==='sticky'){ sceneInfo[i].scrollHeight = sceneInfo[i].heightNum * window.innerHeight; sceneInfo[i].objs.container.style.height=`${sceneInfo[i].scrollHeight}px`; //기본적으로 문자열을 설정해야하나 ${--- } << ---이부분에 변수이름을 적용 가능 }else if(sceneInfo[i].type==='normal'){ sceneInfo[i].scrollHeight = sceneInfo[i].objs.container.style.offsetHeight; } sceneInfo[i].objs.container.style.height=`${sceneInfo[i].scrollHeight}px`; } //정확하게 한번더 선언. 재선언 가능의 LET yOffset=window.pageYOffset; //load이벤트와 연관지어야하는 이유. let totalScrollHeight=0; for(let i=0; i<sceneInfo.length; i++){ totalScrollHeight+=sceneInfo[i].scrollHeight; if(totalScrollHeight >= yOffset){ currentScene=i; break; /* *총 전체스크롤 높이가 현재 커서하고있는 페이지 스크롤 위치보다 크면, *break를 사용하여 for 문을 탈출합니다. *그리고 i값을 currentscene으로 세팅해줍니다. */ } } document.body.setAttribute('id',`show-scene-${currentScene}`); } function calcValues(values, currentYOffset){//스크롤 비율 계산 let rv; let scrollRatio=currentYOffset/sceneInfo[currentScene].scrollHeight; let scrollHeight=sceneInfo[currentScene].scrollHeight; //currentYOffset은 playanimation에서 한개의 씬을 넘길때마다 초기화되는 스크롤의 값. //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=(yOffset-prevScrollHeight) / scrollHeight; switch (currentScene){ case 0: //let messageA_opacity_0=values.messageA_opacity[0]; //let messageA_opacity_1=values.messageA_opacity[1]; if(scrollRatio<=0.22){ objs.messageA.style.opacity=calcValues(values.messageA_opacity_in,currentYOffset); objs.messageA.style.transform=`translateY(${calcValues(values.messageA_translateY_in,currentYOffset)}%)`; } else{ objs.messageA.style.opacity=calcValues(values.messageA_opacity_out,currentYOffset); objs.messageA.style.transform=`translateY(${calcValues(values.messageA_translateY_out,currentYOffset)}%)`; } 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: break; } } function scrollLoop(){ prevScrollHeight=0; enterNewScene=false; for(let i = 0; i<currentScene; i++){ prevScrollHeight+=sceneInfo[i].scrollHeight; } if (yOffset>prevScrollHeight+sceneInfo[currentScene].scrollHeight){ enterNewScene=true; currentScene++; } if (yOffset<prevScrollHeight){ enterNewScene=true; if(currentScene===0) return;//모바일기기의 위로 올릴경우 -가 될 때를 방지 currentScene--; } document.body.setAttribute('id',`show-scene-${currentScene}`); //"setAttribute 속성은 id 값을 두번재 인자값으로 줄 수 있다. 라는 의미" console.log(currentScene); if (enterNewScene) return ; playAnimation(); } window.addEventListener('resize',setLayout); window.addEventListener('load',setLayout); //각 스크롤 높이를 로드, 리사이즈 될 때 스크롤의 높이를 잡아줍니다. window.addEventListener('scroll',()=>{ yOffset=window.pageYOffset; scrollLoop(); }); setLayout(); })(); 지금까지 따라 작성한 내용들인데 body요소의 id가 0 , 1,2,3 이런식으로 바뀌어야하는데 0, 1 까지만 바뀌고 2-3으로는 바뀌지가 않아서 2씬에서 핀위의 글씨가 보이지 않습니다 어딘지 잘모르겠습니다...
-
미해결타입스크립트 입문 - 기초부터 실전까지
Delete ␍ eslint (prettier/prettier) 에러
실습하다가 위와 같은 에러가 세미콜론 끝에서 계속 떠서 검색해보니까 prettier 2.0이상 부터 endOfLine 옵션 default가 auto'에서 'lf'변경되면서 뜨는것 같습니다! 강제로 아래와 같이 설정해주면 안뜨네요. .eslintrc.js 파일 내 아래와 같이 추가설정 rules: { 'prettier/prettier': [ 'error', { endOfLine: 'auto' }