묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트 오류 관련 질문드립니다.
테스트 오류관련 파일을 메일로 보내드리려는데 어떤형식으로 보내드려야할까요? 부탁드립니다.
-
해결됨웹 게임을 만들며 배우는 React
마지막 강의 링크 질문
안녕하세요. 유튜브에서 제공된다 제목에 나와 있는데, 첨부파일이나 링크 없이, 그저 검정화면만 뜨는데, 링크 알 수 있을까요?
-
미해결Pandas 팬더스 데이터분석 기초 실습
컬럼명이 다를 경우 어떻게 합치나요?
l1 = [{'name':'John','job':'teacher'}, {'name':'John','job':'teacher'}, {'name':'John','job':'teacher'}] l2 = [{'이름':'Ed','직업':'dentist'}, {'이름':'Jack','직업':'farmer'}, {'이름':'Ted','직업':'designer'}] 이런 경우 어떻게 합치나요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
4분 31초
폴더 선택을 누른 후에 프로젝트 탭 같은 게 안 떠요
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
dis 리스트 의 필요성
안녕하세요 지난번 송아지찾기 질문과 동일한 질문입니다. 이 문제의 경우 input 데이터를 받는 이중리스트 하나만으로도 풀이가 가능할 것 같은데 dis 리스트를 별도로 만든 것은 편의상 추가한 것으로 봐도 될까요? import sys from collections import deque def BFS(n): dQ = deque() dQ.append((0, 0)) while dQ: tmp = dQ.popleft() for i in range(4): x = tmp[0]+dx[i] y = tmp[1]+dy[i] if 0<=x<=n-1 and 0<=y<=n-1 and a[x][y]==0: a[x][y] = a[tmp[0]][tmp[1]]+1 dQ.append((x, y)) if a[n-1][n-1]==0: print(-1) else: print(a[n-1][n-1]) if __name__=="__main__": # with open('in6.txt') as sys.stdin: n = 7 a = [list(map(int,sys.stdin.readline().split())) for _ in range(n)] dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] BFS(n)
-
미해결리액트로 나만의 블로그 만들기(MERN Stack)
http로 배포해도 괜찮을까요?
https를 시도해보려다가 실패해서 http로 배포하려고합니다. 강의하신대로 따라했고 http로 배포한다면 보안이 위험할까요??
-
미해결피그마(Figma)를 활용한 UI디자인 입문부터 실전까지 A to Z
피그마 > 제플린 export 시 오류가 생겨요
강사님, 좋은 강의 감사합니다. 강의에서 배운대로 하나씩 만들어보고 핸드오프까지 해 보려, 제플린 플러그인을 설치하고 Export를 해 보았습니다. 피그마에서는 375 X 812 iPhone11 Pro / X 사이즈로 작업을 했음에도 자꾸 187.5 사이즈로 X축이 반으로 줄어들어서 Export가 됩니다. 제가 무슨 설정을 잘못한 것인지, 영문을 몰라서요.. ㅜㅜ 감사합니다.
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
name 'basestring' is not defined 이란 에러가 나옵니다
14강에서 python manage.py makemigrations 라고 터미널에 입력하면 name 'basestring' is not defined 라는 에러가 나옵니다. 파이썬 버젼은 3.8.6입니다. 어떻게 해결하면 될까요??
-
미해결워드프레스 제대로 개발하기 - 어드민 편
초보질문입니다..
기존에 mysql설치된상태에서 워드프레스용 로컬서버 설정하기위해 bitnami를 설치하니 mysql에 있던 db가 사라졌는데,, mysql + bitnami중복설치는 안되는건가요? 그리고 안되는경우 호스팅신청해서 뒷부분부터 따라해도 될까요,,?ㅠ
-
비전공자를 위한 진짜 입문 올인원 개발 부트캠프
궁금해요
삭제된 글입니다
-
Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
repo 접근 권한
삭제된 글입니다
-
미해결[라즈베리파이] IoT 딥러닝 Computer Vision 실전 프로젝트
OpenCV강의를 듣고 있습니다.
노트북 웹캠을 이용해서 OpenCV로 필기체 숫자 인식 프로그램을 파이참을 실행 했는데요 위와 같이 웹캠 카메라가 회색으로 여러개가 겹쳐서 인식되면서 오류가 발생하여 '프로그램 닫기' 창이 뜹니다. 그냥 OpenCV 웹캠 동작 프로그램을 해도 같은 증상이네요. 무엇보다도 곰캠을 이용하여 노트북 웹캠을 사용하면은 잘 나옵니다. 혹시 저 말고도 이런 오류가 뜨는 사람이 없을까요?? 있다면 해결을 어떻게 하셨을 까요?
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
mock 서버생성안됌
No Mock server calls yet To call the mock server, follow these steps: 1. Add examples responses to each request that the mock server will return.Learn what examples are and how to use them 2. Send a request to the following mock server URL, followed by the request path: https://4c1170af-c0a8-481d-bac9-b4a0f190b250.mock.pstmn.io Copy Mock URLmock 서버가 생성이 안되는 것 같은데 어떻게해야할까요?
-
미해결초보를 위한 도커 안내서
docker 이해
docker에 대해서 구체적으로 아직 감이 오지 않아서 질문드립니다. macOS 노트북에서 docker로 nodejs를 다운로드 한다고 했을때, nodejs를 다운하기 전에 os 이미지를 다운받는 게 맞나요? 1. nodejs를 설치할 Os 이미지 pull2. nodejs 설치그리고 이미 hub에 올려진 nodejs 이미지는 어떤 os에서 설치된건지 어떻게 알 수 있는건가요?
-
미해결홍정모의 따라하며 배우는 C++
extern 관련 질문이 있습니다
extern 은 다른 소스파일의 변수를 공유한다는 의미로 사용한다고 알고 있습니다. (a.cpp와 b.cpp 소스 파일이 있을 때, a.cpp에는 int num=123; , b.cpp에는 extern int num; 와 같은 식으로) 그런데 강의 34:00 에 보면 test.cpp에서 extern int a=123;로 초기화를 한 후 main.cpp에서 extern int a; 를 작성하시던데 두 cpp 파일에서 변수 a에 모두 extern을 사용하는 이유를 알고싶습니다.
-
미해결화이트해커가 되기 위한 8가지 웹 해킹 기술
화면 크기조절
강의화면처럼 꽉찬 화면이아니라 화면크기를 늘려도 가상머신화면은 작은 상태 그래로 입니다 어떻게 하면 자유롭게 크기가 딱 맞제 조절될까요?
-
해결됨유니티와 C#으로 배우는 카타나제로스타일 게임만들기 (기본편)
강의 질문드립니다.
jumpdust_wall 이펙트 부분을 진행중인데 이전 강의까지 jumpdust를 만든적이 없는데 강의에서 계속 jumpdust에 대해서 언급합니다. 어떻게 된건가요? 먼지효과내기2에서 벽설치로 넘어갈때 갑자기 jumpdust가 생깁니다. + 임시 해결 + 일단 jumpdust_wall 이미지를 90도 회전시켜서 jumpdust 이미지로 사용했고 jumpdust 스크립트는 landdust와 동일하게 작성해서 jumpdust 프리팹에 추가시켰습니다. player 스크립트에 추가된 내용은 강의 내용을 일시정지 해가면서 수정했습니다
-
미해결애플 웹사이트 인터랙션 클론!
add.js파일 적용 후 pin 오류
안녕하세요 선생님 강의 잘 듣고 있습니다 ㅎㅎ 다름이 아니라 main_add.js 파일 적용 후 pin부분때문에 Uncaught TypeError: Cannot read property 'style' of null 오류가 뜹니다... css파일과 html파일도 찾아보고 있는데 혼자서 해결해 보려고 했지만 시간만가고 해결책이 없는거 같아 질문드립니다 ㅎㅎ 사진은 오류가 나는 제 페이지입니다 ㅠ js코드 (() => { //이거슨 즉시 호출 함수 즉, (function(){ }()); 익명함수를 한번싼고 호출한거랑 같음. 이렇게하는 이유는 전역변수를 피하려고 let yOffset = 0; // window.pageYoffset 대신 쓸 변수 let prevScrollHeight = 0; //현재 스크롤 위치(yOffeset)보다 이전에 위치한 스크롤 섹션들의 스크롤 높이값의 합 let currentScene = 0; //현재 활성화된 (눈 앞에 보고있는) 씬(scroll-section) let enterNewScene = false; //새로운 scene이 시작되는 순간 true const sceneInfo = [ { //0 type: 'sticky', heighNum: 5, //브라우저 높이의 5배로 scrollHeight 세팅 scrollHeight: 0, objs:{ // html DOM 객체 요소들 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 }], //{}안의 값은 애니메이션이 재생되는 구간 소수점인 이유는 비율로 했기때문에, 전체 스크롤에서 10% ~ 20%만 애니메이션으로 쓰겠다 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', //type normal에서는 height를 기본 default로 잡기때문에 필요가 없다 //heighNum: 5, //브라우저 높이의 5배로 scrollHeight 세팅 scrollHeight: 0, objs:{ container: document.querySelector('#scroll-section-1') } }, { //2 type: 'sticky', heighNum: 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', heighNum: 5, //브라우저 높이의 5배로 scrollHeight 세팅 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].heighNum * 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.offsetHeight; } sceneInfo[i].objs.container.style.height = `${sceneInfo[i].scrollHeight}`; } yOffset = window.pageYOffset; let totalScrollHeight = 0; for(let i =0; i < sceneInfo.length; i++){ totalScrollHeight += sceneInfo[i].scrollHeight; //각 씬에 scrollHeight를 더해준다 if(totalScrollHeight >= yOffset){ //totalScrollHeight에 들어가는 값이랑 현재 스크롤위치값이랑 비교해서 현재 스크롤위치가 total보다 커지면 현재 위치를 currentScene으로 세팅하고 for문을 빠져나옴 currentScene = i; break; } } document.body.setAttribute('id', `show-scene-${currentScene}`); } function calcValues(values, currentYOffset){ //여기서 values는 opacity 0, 1 넣은 그 배열 , offset은 현재씬에서 얼마나 스크롤 됐는지 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; // yOffset(전체에서 현재 스크롤값) / 현재 씬의 scrollHeight 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)`; } 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 1: // break; !!!case1은 2번째 섹션인데 그거슨 normal이라서 뺏음 case 2: 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)})`; } //translateY를 translate3d로 바꿨는데 translate3d(x값, y값, z값)이다. 이것을 쓴 이유는 브라우저 업데이트에 따라 달라질 수 있는데 //transform속성중 3d가 붙은 애들은 하드웨어 가속이 보장이 된다 즉, 퍼포먼스가 좋다. 그래서 애플에서도 3d이동이 아니더라도 3d를 쓴다 break; case 3: 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}`); //currentScene을 바뀔때만 설정한것 } if(yOffset < prevScrollHeight){ enterNewScene = true; if(currentScene === 0) return; //브라우저 바운스 효과로 인해 마이너스가 되는 것을 방지 (주로 모바일에서) currentScene--; document.body.setAttribute('id', `show-scene-${currentScene}`); //currentScene을 바뀔대만 설정한것 } if(enterNewScene) return; playAnimation(); } window.addEventListener('resize', setLayout); window.addEventListener('scroll', () => { yOffset = window.pageYOffset; scrollLoop(); }); //window.addEventListener('DOMContentLoad', setLayout); //DOMContent와 load의 차이는 load는 웹페이지의 이미지, 리소스들이 싹다 로딩이 되고 나서 실행 window.addEventListener('load', setLayout); //DOMC는 html객체들, DOM구조만 로드가 끝나면 바로 실행한다 이미지 같은것들이 로딩 안되더라도.. window.addEventListener('resize', setLayout); })(); html코드 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>AirMug Pro</title> <link rel="stylesheet" href="css/default.css"> <link rel="stylesheet" href="css/main.css"> <link rel="preconnect" href="https://fonts.gstatic.com"> <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;900&display=swap" rel="stylesheet"> </head> <body> <div class="container"> <nav class="global-nav"> <div class="global-nav-links"> <a class="global-nav-item" href="#">About</a> <a class="global-nav-item" href="#">Ideas</a> <a class="global-nav-item" href="#">Shop</a> <a class="global-nav-item" href="#">Contact</a> </div> </nav> <nav class="local-nav"> <div class="local-nav-links"> <a href="#" class="product-name">AirMug Pro</a> <a href="#" class="">개요</a> <a href="#" class="">제품사양</a> <a href="#" class="">구입하기</a> </div> </nav> <section class="scroll-section" id="scroll-section-0"> <h1>AirMug Pro</h1> <div class="sticky-elem main-message a"> <p>온전히 빠져들게 하는<br>최고급 세라믹</p> </div> <div class="sticky-elem main-message b"> <p>주변 맛을 느끼게 해주는<br>주변 맛 허용 모드</p> </div> <div class="sticky-elem main-message c"> <p>온종일 편안한<br>맞춤형 손잡이</p> </div> <div class="sticky-elem main-message d"> <p>새롭게 입가를<br>찾아온 매혹</p> </div> </section> <section class="scroll-section" id="scroll-section-1"> <p class="description"> <strong>보통 스트롤 영역</strong> Lorem ipsum dolor sit amet consectetur adipisicing elit. Officia, commodi! Perspiciatis ex sapiente nihil architecto, sequi non impedit odit eos at magni dolorum aliquid quis nemo autem illo provident ipsa, corrupti recusandae asperiores aspernatur dignissimos! Aut iste neque iusto quaerat architecto quam ullam suscipit culpa, accusantium nesciunt porro adipisci cum magnam corrupti quia. Commodi iste ipsum, molestiae animi velit soluta error exercitationem id natus, architecto alias dolorem porro quia repellendus! Voluptatibus animi enim natus, id laboriosam nihil ducimus odio vel officiis commodi facere exercitationem aut laudantium quos repellendus molestiae doloremque modi ullam beatae quae ratione architecto iure maxime quam? Obcaecati impedit laborum nam optio sit, temporibus harum, expedita nihil incidunt officia tempora, iusto odio reprehenderit? Asperiores, ipsum ullam voluptatibus, totam veritatis odit, tempora molestiae impedit animi error hic molestias? Totam corrupti fuga rem minima cumque accusamus dolore modi explicabo corporis eos dicta exercitationem enim eius eum dolores laboriosam fugit nobis, aspernatur id ipsum maiores labore architecto consequuntur consectetur! Quaerat nisi officiis autem quod in ut officia. Error doloremque consequuntur ullam ipsa doloribus beatae deleniti culpa, cupiditate, perspiciatis ea odio voluptates repudiandae numquam facilis quae, dolorem consequatur provident impedit accusamus nesciunt placeat magnam! Sapiente quod aperiam eaque tempore omnis autem tenetur eum dicta totam quibusdam aliquam, vero, unde doloribus sint exercitationem dolore dolorum illo! Deleniti, recusandae voluptatibus? Ducimus ex atque doloribus soluta? Rem porro velit praesentium nesciunt, alias veniam amet perspiciatis natus veritatis, nisi vel culpa repudiandae impedit! Animi molestiae ipsam natus! Tempora consequatur quod aut impedit, dolores odio asperiores in! Quidem quisquam necessitatibus illo dolorem nihil reiciendis eum repudiandae ratione facere. Enim nemo tenetur rem, eos, veniam, incidunt beatae sapiente inventore necessitatibus illum aliquid aliquam provident ipsam! Magni id inventore debitis at odio dicta architecto quos dolorem ea dolores, nulla numquam ipsam voluptates delectus similique obcaecati ducimus. Expedita, impedit? Dolorum corporis in officiis deserunt ipsa dolores, distinctio similique nihil placeat illo ut reiciendis, ea libero, earum nesciunt omnis ratione id? Nostrum optio fugit voluptate reprehenderit eos voluptatum quaerat, molestias itaque accusantium enim dolores distinctio odit vel esse cum eaque voluptas vitae asperiores provident doloremque ipsa fuga cumque! Commodi sint odio recusandae, temporibus accusantium quis magni accusamus porro ducimus nam numquam harum placeat eveniet? Voluptatum officia ad provident expedita, amet nam ratione praesentium possimus! Sint ipsum vitae ipsam hic, nisi earum minima dicta minus. Mollitia similique nulla exercitationem consequatur praesentium quibusdam maxime velit quo iusto, saepe deserunt distinctio voluptas itaque veniam asperiores voluptatem! Hic, ratione, laudantium, suscipit optio nemo laboriosam sint ullam impedit repudiandae cumque amet. Repellendus ut sint ipsa! Exercitationem, dolorum libero pariatur repudiandae iusto eum minima tenetur dolore placeat nulla! Ut deleniti veritatis voluptate, quia quidem incidunt numquam nulla, tenetur at optio nostrum temporibus beatae eveniet, facilis animi maxime rem doloremque expedita minus porro architecto modi sapiente quisquam. Ipsa illo unde numquam tempore ipsum at delectus! Quam alias beatae tempora atque, ratione incidunt accusamus placeat saepe voluptatem? Blanditiis, obcaecati, exercitationem odit consequuntur rerum facilis debitis quasi hic modi doloremque id, dolore doloribus illo atque mollitia. Tenetur nostrum harum ab? </p> </section> <section class="scroll-section" id="scroll-section-2"> <div class="sticky-elem main-message a"> <p> <small>편안한 촉감</small> 입과 하나 되다 </p> </div> <div class="sticky-elem desc-message b"> <p>편안한 목넘김을 완성하는 디테일한 여러 구성 요소들, 우리는 이들 하나하나 새롭게 살피고 재구성하는 과정을 거쳐 새로운 수준의 머그, AirMug Pro를 만들었습니다. 입에 뭔가 댔다는 감각은 어느새 사라지고 오롯이 당신과 음료만 남게되죠.</p> </div> <div class="pin"></div> <div class="sticky-elem desc-message c"> <p> 디자인 앤 퀄리티 오브 스웨덴,<br>메이드 인 차이나 </p> </div> <div class="pin"></div> </section> <section class="scroll-section" id="scroll-section-3"> <p class="mid-message"> <strong>Retina 머그</strong><br> 아이디어를 광활하게 펼칠<br> 아름답고 부드러운 음료 공간 </p> <p class="canvas-caption"> Lorem ipsum dolor sit amet consectetur adipisicing elit. Inventore sit expedita at quibusdam ducimus illo nostrum atque porro totam veniam, omnis quaerat alias? Facilis quod obcaecati harum deserunt eos quas, repudiandae et odit nisi assumenda officiis beatae necessitatibus odio, voluptatem at blanditiis veniam ducimus eum aliquid tempore? Commodi dolores ut eaque illum vel dolor ducimus dolore distinctio repudiandae quisquam expedita libero nisi tempore consequuntur minima, sed saepe. Totam mollitia eaque corporis obcaecati dicta, modi nihil impedit soluta aperiam consequatur, necessitatibus voluptate ad! Sequi, assumenda molestiae exercitationem at ut fugit sapiente saepe cupiditate perferendis nulla nisi nesciunt ullam accusamus mollitia numquam doloremque? Praesentium assumenda architecto quae cupiditate recusandae, velit, ex nemo debitis sapiente neque aliquam delectus? Quam expedita nesciunt perferendis, vero officia ratione velit? Necessitatibus animi nobis quos fuga natus dolorum voluptatum, aliquid nemo quaerat perferendis explicabo repudiandae, reprehenderit ex delectus adipisci perspiciatis? Eum animi praesentium tempora exercitationem blanditiis, officia vitae voluptate sed. Fugit, maiores cumque! Nam reiciendis impedit corporis eaque, numquam ipsa dignissimos ex fugit. Ullam, reprehenderit incidunt praesentium voluptas qui tenetur exercitationem, officiis reiciendis consequuntur impedit explicabo aspernatur inventore! Quis exercitationem vel et voluptatum, sapiente dolore debitis doloribus, quas blanditiis neque vitae laboriosam deleniti! Dolore impedit facere repellat praesentium? </p> </section> <footer class="footer"> 2021, Made by ZZANGZZONG </footer> </div> </body> <script src="js/main.js"></script> </html>
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
autocomplete-python traceback output 알람창 제거 문의
안녕하세요. print와 같이 p만 입력하면 자꾸 저 빨간색 알람창이 뜹니다. 해결 방법좀 부탁드립니다.
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
folium
스타벅스 : 이디야 : 이런식으로 줄바꿈을 통해 타이틀을 나타내고 싶은데 어덯게 해야하나요? 그냥 \n으로는 한칸 띄어지는 것밖에 안되서요