묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
AOP를 이렇게 쉽게 이해할 수 있다니 감동입니다 ㅋㅋ
그전에는 AOP 를 책으로 공부했었는데, 조인트컷, 어드바이스, 프록시 패턴 등등 이론적인 이야기들만 잔뜩 나와서 주화입마에 빠져서 손절했었는데, 이렇게 실제 사용 용법에 대해서 먼저 이해하니 접근하는게 조금 더 쉬워진 느낌입니다. 오늘 강의 새로 나오셨는데 월급타면 꼭 들어봐야겠어요! 좋은 강의 감사합니다.
-
해결됨[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
웹사이트에서 크롤러의 행동을 규제하는 robots.txt에 관해 질문드립니다.
안녕하십니까 선생님. 강의에서 다뤄주신 크롤링 기법을 사용해 제 개인 프로젝트에 활용하려고 하는 통계학과 대학원생입니다. 강의 외적인 질문이라 죄송스러운 마음이 앞서지만, 선생님같은 식견을 가지신 분이시라면 답을 알고 계실 것 같아 양해를 부탁드리며 질문 올리겠습니다. 보다 구체적으로, Daum뉴스에서 크롤링한 기사들의 원문을 데이터로 사용하는 모델을 만들어 이를 적용하고 그 결과를 제 깃헙 페이지에 공개하려고 했습니다. 하지만 프로젝트를 진행하는 과정에서 robots.txt의 존재를 알게 되었고, 실제로 news.daum.net/robots.txt를 확인해 봤을 때 해당 사이트에서 모든 크롤링 시도를 금지하고 있음을 확인할 수 있었습니다(User-agent: * Disallow : /). 저는 악의나 영리 목적의 의도가 없고, 심지어는 request와 request 사이에 지연을 줘서 서버에 무리가 가지 않도록 할 의향도 있습니다. 그럼에도 불구하고 robots.txt에 저렇게 지정되어 있으면 어떤 방식으로든 크롤링을 금지하며 이를 어길 시 어떤 방식으로든 책임을 물을 수 있다는 의미인지 궁금합니다. 마지막으로, 좋은 강의 항상 너무 감사하다는 말씀 드리고 싶습니다. 파이썬 기초는 이미 알고 있어서 사실 크롤링 부분만을 위해 강의를 수강하긴 했습니다만, 모든 내용을 잘 이해할 수 있었습니다. 이에 더해 파이썬 중급 강의도 거의 마쳐가는데, decorator나 generator의 원리를 확실히 알게된 것 같아 너무 유익하고 좋았습니다. 둘 다 곧 마무리하고 수강평 남기도록 하겠습니다! 이상입니다. 감사합니다.
-
미해결자바스크립트로 알아보는 함수형 프로그래밍 (ES5)
pipe 함수에서~
return _reduce(fns, function(arg, fn){ return fn(arg);}, arg); (조금 원초적인 질문일수도 있습니다만..) 위의 리듀스함수가 실행되면 each함수의 iter(list[i])가 실행되어서 fn인자값 하나씩 전달하는데, 선언되었던 iter함수는 arg, fn 두개를 받는 형식으로 되있잖아요. 함수 실행순서상 첫번째 arg 매개변수를 받은 상태면, each함수에서 한개의 값만 인자로 넘기는 형태여도 알아서 두번째 매개변수로 받아서 실행하나요?
-
미해결스프링 핵심 원리 - 기본편
기초 이후 이 강의부터 들으면 되는건가요?
김영한님의 스프링 무료 강의 이후에 다른 강의들도 전부 구매하였는데 오늘 오픈한 이 강의부터 학습하면 되는거겠죠? 좋은 강의 감사드립니다.
-
미해결비전공자를 위한 개발자 취업 개론
고졸
제가 마땅히 질문할 곳이 없어서 여기에 질문드려요 강의 영상 정말 재밌게 보고 뜻깊게 봤습니다. 그것에 대한 꿀팁 또한 많이 얻었구요 근데 지금 제가 고등학생인 상태인데 공부보다 프로그래밍에 더 흥미가 있어서 수업시간에도 노트북 꺼내서 코드치고 구상하고 그러거든요 그래서 대학을 안가고도 개발자가 될수 있는지가 궁금해지더라구요 혹시 대답해주실수 있나요?
-
CSS에 날개를 달아주는 Sass (SCSS)
css 경로 설정 방법 이미지와 워딩으로라도 추가해주시면 안돼나요?
삭제된 글입니다
-
미해결애플 웹사이트 인터랙션 클론!
코드 구조에 관하여 질문드립니다.
javascript에 익숙하지 않아서 코드 구조에 관하여 질문드립니다. yOffset, prevScrollHeight, currentScene 같은 경우 arrow function 내부에 선언한 뒤에 다른 함수들에서 인자로 받지 않고 전역 변수처럼 가져다가 쓰고 있는데 javascript에서 이런 방식으로 많이 코드를 작성하나요? + ES6에서 class 개념도 추가되었다고 하는데 많이 사용하시는 편인가요?
-
미해결쉽게 배우는 Webpack
리뉴얼 강의 쿠폰 문의드려요.
안녕하세요 강사님~! :) 웹팩 강의 리뉴얼 된 소식을 늦게 확인했어요. 늦었지만 리뉴얼 강의 쿠폰 재발급 가능할까요? 번거롭게 해드려 죄송합니다 ㅠㅠ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Animation 질문
질문 1. Animation 파트 강의를 다 수강하긴 했는데 두 번째 강의 'Animation Blending' 강의부터 뭔가 제대로 캐릭터가 안 움직이기 시작했었습니다. 일단 하다보면 될 수도 있으니(?) Animation 파트 강의를 다 들어봤는데 해결이 안되어 질문 드립니다. 코드는 Rookiss님 코드랑 똑같이 썼고, 혹시 몰라서 수업 자료 올려주신 것 다운 받아서 코드 복붙해봤는데도 여전히 캐릭터가 아예 안 움직였습니다. 그래서 plane에서 mesh collider를 키고... unity-chan rigidbody 에서 use gravity도 키고 했더니 움직이기는 하는데 이번에는 마우스 드래그를 멈췄을 때 캐릭터가 완전 이상하게 움직입니다.. 부드럽게 멈춰야하는데.. 어느 부분이 문제인걸까요??ㅠㅠ 코드도 똑같은데 어떤 부분이 문제인지 모르겠습니다 ㅠ 영상도 촬영해서 링크 첨부합니다. (근데 어떻게 해도 화질이 나쁘네요 ㅠ) . . 질문 2. 코드는 똑같으니.. 설정 문제인가 싶어서 강의를 유심히 살펴보던 중 아래 사진처럼 "animation 기초" 강의에서 unity-chan의 collider가 capsule은 꺼져있고 mesh가 추가되어있길래 그렇게 해봤더니 캐릭터가 떨어집니다 ㅠ plane mesh collider - unitychan mesh collider 일때는 땅에 설 수가 없는건가요???
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
플로이드 워샬과 다익스트라
안녕하세요 선생님, 플로이드 워샬 알고리즘을 공부하다 궁금한 점이 있어 질문드립니다. 플로이드 워샬은 모든 정점에서 모든 정점으로의 최단거리를 의미하고 다익스트라는 한 정점에서 나머지 정점으로 갈 때의 최단거리를 구하는것으로 알고있는데 그럼 다익스트라는 플로이드 워샬의 포함되는 알고리즘인지 궁금합니다. 또한 모든 다익스트라 문제가 플로이드 워샬로 풀리는지도 궁금합니다.
-
미해결프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)
버전 관련 질문드립니다!
앞에 마이너 버전은 기존 버전과 호환되면서 기능이 추가된 경우라고 설명해주셨는데 ~0 사용시 마이너 버전이 갱신되면서 하위 호완성이 깨진다고 말씀하셨던데 마이너 버전끼리는 호환이 되는 상태이니까 깨지지 않는 것이 맞는 것같은데.. 궁금합니다!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드가 안되요
기존 JDK버전을 11버전으로 바꿔서 빌드했는데 정확한 원인을 모르겠습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
연관관계 매핑에서 @JoinColumn이 없어도 되나요?
안녕하세요, 강의 정말 잘 듣고 있습니다. 여태까지 들어본 강의중에 김영한님 강의들이 가장 도움이 많이 되는것 같습니다. 단방향 연관관계 동영상을 보고 난 후, Team 클래스에서 @Column("TEAM_ID")를 지우고 실행도 해보고, 테이블이름을 TEAM 말고 TEAMS로 설정도 해보고, Member 클래스에서는 @JoinColumn을 아예 지우고 해봤는데도 매번 잘 실행되더라구요. 어떻게 저런 어노테이션들이 없어도 모두 제대로 실행되는지 헷갈리네요.. JPA를 배우는게 처음이라 잘 이해도 안가고 인터넷도 찾아봤지만 답이 안나와서 질문 드립니다. 공부할때 가끔가다 한번씩 별거 아닌데도 갑자기 헷갈리기 시작할때가 있더라구요.. 감사합니다.
-
인터랙티브 웹 개발 제대로 시작하기
선생님 이해가 안가는 부분히 한가지 더생겨서요 ㅠ
삭제된 글입니다
-
해결됨파이썬 웹서비스API 실전 프로젝트 - 돈 버는 디지털마케팅
marketingAPI-1.py 내용 질문 드려요.
안녕하세요. 동영상 강좌 보면서 막힘 없이 술술 넘어가다가 marketingAPI-1.py 동영상에서 난관에 봉착했습니다. ㅜㅜ thefirstFlask 내용은 실행하면 정상적으로 "The First Flask" 가 뜨는데요. marketingAPI-1 "Not Found"가 나오고 있습니다. 코드 내용은 샘플자료에서 그대로 복사해서 틀리진 않았을 것 같아요. 혹시나 하고 marketingAPI-2도 실행했지만 안 됩니다. ▼ 접속했을 때 오류 코드입니다. "GET /getPopularlists HTTP/1.1" 404 - ▼ 접속 화면입니다. ▼ 사용한 코드 입니다. ---------------------------------------------------------------- import flask import json from functools import wraps from flask import request, Response import requests from bs4 import BeautifulSoup app = flask.Flask(__name__) def as_json(f): @wraps(f) def decorated_function(*args, **kwargs): res = f(*args, **kwargs) res = json.dumps(res, ensure_ascii=False).encode('utf8') return Response(res, content_type='application/json; charset=utf-8') return decorated_function @app.route('/getPopularlists', methods=['GET']) @as_json def popularlist(): NAVER_BEST100 = 'https://search.shopping.naver.com/best100v2/main.nhn#' popular10lists = [] source = requests.get(NAVER_BEST100).text soup = BeautifulSoup(source, "html.parser") popular10 = soup.find(id="popular_srch_lst") popular10names = popular10.select(".txt") for name in popular10names: popular10lists.append({"name": name.text}) return popular10lists app.run()
-
미해결BBC 인터랙티브 페이지 "코로나19가 바꿀 사무실의 미래" 클론
오류가 나는데 찾지를 못하겠어요...
// 즉시실행 인명함수 (() => { const actions = { bordFlies(){ document.querySelector(['data-index="2"'] .bird).style.transform = `translateX($(window.innerWidth)px)`; } } const stepElems = document.querySelectorAll('.step'); const graphicElems = document.querySelectorAll('.graphic-item'); // 현재 활성화된(visible 클래스가 붙은) .graphic-item을 지정 let currentItem = graphicElems[0]; let ioIndex; const io = new IntersectionObserver((entries, observer) => { //console.log(entries[0].target.dataset.index); ioIndex = entries[0].target.dataset.index * 1; //console.log(iosIndex); }); for(let i=0; i< stepElems.length; i++){ io.observe(stepElems[i]); //stepElems[i].setAttribute('data-index', i); stepElems[i].dataset.index = i; graphicElems[i].dataset.index = i; //console.log(stepElems[i].setAttribute('data-index', i)); } // 활성화 function activate(action){ currentItem.classList.add('visible'); if(action){ actions[action](); // 오류 } console.log(action); } // 비활성화 function inactivate(){ currentItem.classList.remove('visible'); } window.addEventListener('scroll', () => { let step; let boundingRect; let temp = 0; //for (let i = 0; i < stepElems.length; i++){ for (let i = ioIndex - 1; i < ioIndex + 2; i++){ step = stepElems[i]; if(!step) continue; boundingRect = step.getBoundingClientRect(); //console.log(boundingRect.top); temp++; // 범위설정 if(boundingRect.top > window.innerHeight * 0.1 && boundingRect.top < window.innerHeight * 0.8){ //console.log(step.dataset.index); //graphicElems[step.dataset.index].classList.add('visible'); if(currentItem){ inactivate(); } currentItem = graphicElems[step.dataset.index]; activate(currentItem.dataset.action); // 오류 } } console.log(temp); }); activate(); })();// 즉시실행 인명함수 (() => { const actions = { bordFlies(){ document.querySelector(['data-index="2"'] .bird).style.transform = `translateX($(window.innerWidth)px)`; } } const stepElems = document.querySelectorAll('.step'); const graphicElems = document.querySelectorAll('.graphic-item'); // 현재 활성화된(visible 클래스가 붙은) .graphic-item을 지정 let currentItem = graphicElems[0]; let ioIndex; const io = new IntersectionObserver((entries, observer) => { //console.log(entries[0].target.dataset.index); ioIndex = entries[0].target.dataset.index * 1; //console.log(iosIndex); }); for(let i=0; i< stepElems.length; i++){ io.observe(stepElems[i]); //stepElems[i].setAttribute('data-index', i); stepElems[i].dataset.index = i; graphicElems[i].dataset.index = i; //console.log(stepElems[i].setAttribute('data-index', i)); } // 활성화 function activate(action){ currentItem.classList.add('visible'); if(action){ actions[action](); // 오류 } console.log(action); } // 비활성화 function inactivate(){ currentItem.classList.remove('visible'); } window.addEventListener('scroll', () => { let step; let boundingRect; let temp = 0; //for (let i = 0; i < stepElems.length; i++){ for (let i = ioIndex - 1; i < ioIndex + 2; i++){ step = stepElems[i]; if(!step) continue; boundingRect = step.getBoundingClientRect(); //console.log(boundingRect.top); temp++; // 범위설정 if(boundingRect.top > window.innerHeight * 0.1 && boundingRect.top < window.innerHeight * 0.8){ //console.log(step.dataset.index); //graphicElems[step.dataset.index].classList.add('visible'); if(currentItem){ inactivate(); } currentItem = graphicElems[step.dataset.index]; activate(currentItem.dataset.action); // 오류 } } console.log(temp); }); activate(); })();// 즉시실행 인명함수 (() => { const actions = { bordFlies(){ document.querySelector(['data-index="2"'] .bird).style.transform = `translateX($(window.innerWidth)px)`; } } const stepElems = document.querySelectorAll('.step'); const graphicElems = document.querySelectorAll('.graphic-item'); // 현재 활성화된(visible 클래스가 붙은) .graphic-item을 지정 let currentItem = graphicElems[0]; let ioIndex; const io = new IntersectionObserver((entries, observer) => { //console.log(entries[0].target.dataset.index); ioIndex = entries[0].target.dataset.index * 1; //console.log(iosIndex); }); for(let i=0; i< stepElems.length; i++){ io.observe(stepElems[i]); //stepElems[i].setAttribute('data-index', i); stepElems[i].dataset.index = i; graphicElems[i].dataset.index = i; //console.log(stepElems[i].setAttribute('data-index', i)); } // 활성화 function activate(action){ currentItem.classList.add('visible'); if(action){ actions[action](); // 오류 } console.log(action); } // 비활성화 function inactivate(){ currentItem.classList.remove('visible'); } window.addEventListener('scroll', () => { let step; let boundingRect; let temp = 0; //for (let i = 0; i < stepElems.length; i++){ for (let i = ioIndex - 1; i < ioIndex + 2; i++){ step = stepElems[i]; if(!step) continue; boundingRect = step.getBoundingClientRect(); //console.log(boundingRect.top); temp++; // 범위설정 if(boundingRect.top > window.innerHeight * 0.1 && boundingRect.top < window.innerHeight * 0.8){ //console.log(step.dataset.index); //graphicElems[step.dataset.index].classList.add('visible'); if(currentItem){ inactivate(); } currentItem = graphicElems[step.dataset.index]; activate(currentItem.dataset.action); // 오류 } } console.log(temp); }); activate(); })();
-
미해결모의해킹 실무자가 알려주는, 파일 다운로드 취약점 공격 기법과 실무 사례 분석
TOMCAT문제 도와주세요ㅠ
강의와 관련있는 질문을 남겨주세요.• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)• 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달에도 요령이 필요합니다.• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요! 구체적인 질문일수록 명확한 답을 받을 수 있어요.• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다. 기본적인 예의를 지켜주세요.• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다. 안녕하세요 진행과정 중 해결이 잘 안되는 부분이 있어서 질문남깁니다...ㅠ 제가 노트북의 문제로 포맷을 했어서 다시 환경을 설치중인데 이번에 우분투에서 실행환경을 구축하고 싶어서 톰캣 설치까지 다 했는데 파일업로드가 되질않습니다...ㅠ webapps ROOT에 해도 안되고..ㅠ 어디에 파일을 업로드해야하는지 혹시 아시나요..? 혹시 아신다면 도와주시면 감사하겠습니다.ㅠ
-
미해결Vue.js 시작하기 - Age of Vue.js
정말 좋은 강의 듣고있습니다.^^ Vue devtools가 detected 상태가 되었습니다.
Vue devtools가 detected 상태가 되었습니다. 어떻게 다시 활성화 시킬까요 ?
-
미해결누구나 할 수 있는 안드로이드 앱 개발 - 1 (Kotlin)
Firebase.auth 없음
https://firebase.google.com/docs/auth/android/anonymous-auth 에서 kotlin + ktx 쪽 코드를 읽어왔는데 아래와같이 Firebase.auth 가 빨간줄이 뜹니다. 어떻게 해결하면 좋을까요 ??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
타임리프, JPA 사용 가능 범위
안녕하세요 타임리프와 JPA를 기존에 많은 회사에서 사용했던 스프링프레임워크 MVC에 TOMCAT 사용한곳에서도 적용이 가능한가요?