묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요 강사님이 템플릿 엔진에 대해서 질문이 있습니다.
성능 문제로 템플릿 엔진보다는 웹 프레임워크 vue.js react.js angular.js를 쓴다고 들었습니다. 여기 강의에서 thymeleaf 템플릿 엔진을 사용했는데, spring에서 템플릿 엔진을 꼭 써야하는지 아니면 간단하게 예제로써만 사용하고 나중에는 react.js vue.js angular.js같은 웹 프레임워크를 사용하는 지 궁금합니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
findByToken 에러 납니다 ㅠㅠ
함수가 아니라고 하는데 왜 그런걸까요?? TypeError: User.findByToken is not a function
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
안티패턴 관련 질문입니다.
아래 많은 분들이 질문 하셨던 그 내용인데요. "상위 컴포넌트에서 선언한 data는 하위 컴포넌트에서 변경하지 말아야한다"라는 의미는 알거같습니당 그럼 todoItem.completed = !todoItem.completed라는 소스에서 todoItem은 TodoList.vue에서 올려 보내준거라서 App.vue파일에서 수정하면 안좋다는 의미인가요? 이해가 잘 안됩니다..
-
미해결Vue.js 시작하기 - Age of Vue.js
promise,async await관련
강의도중 판교님이 올려주신 링크로들어가 3가지글을 읽었습니다. 비동기처리와 콜백함수는 바로이해가가지만 아직 웹초보라그런가, promise와 async,await는 막연히 이렇다라는것만 이해가가는데 이녀석들이 이렇다정도만 지금 알고있으면되는건가요? 판교님 vue.js모든강의 다 들을예정이긴합니다!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
미들웨어질문
app.use(express.json()); app.use(express.urlencoded({extended: true})) 여기서 첫번째 express.json은 axios 요청이 올때 axios 두번째 인자의 데이터를 req.body에 넣는역할이고 두번째 express.urlencoded({extended:true})는 프론트에서 form을 통해 데이터가 날아오면 그 데이터들을 req.body에 넣는게 맞을까요 ? 그리고 extended:true라는 것은 어떤 옵션인가요 ?
-
미해결코딩의민족 앱 제작 (Android kotlin)
찜목록의 list_array의 값을 넣어주는 방식 질문입니다.
이렇게 작성되면 강의목록이 추가된다면 그때그때 수정이 필요할 것 같은데.. 혹시 Firestore에서 받아온 데이터를 for문으로 돌리는 방법이 있을까요..? 아무리 찾아봐도 없어서 이것저것 해보다가 documentSnapshot.data!!.iterator()해서 해보긴 했습니다.. 과연 이렇게 하는게 맞는건지 잘 모르겠네요..
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
하이퍼링크 관련 질문 드립니다
안녕하세요~ <크롤링과 엑셀 파일까지 한번에 프로그램 만들기> 강의 수강 중 하이퍼링크 관련 질문이 있습니다. 엑셀 파일을 생성하는 함수를 정의하여 코드를 작성해보았는데, 하이퍼링크 생성 코드 작성 시, 데이터가 없는 엑셀 파일이 생성되었습니다. (아래 코드 참조) 그래서 하이퍼링크 코드가 제가 정의한 함수가 아닌, 크롤링 코드 내 (for 문) 에 있어야 할 것 같다고 생각했는데.. 그러면 excel_sheet 가 정의되지 않았다는 에러가 납니다. (아래 이미지 참조)하이퍼링크 생성 코드는 어디에 작성되어야 할까요? # 엑셀 파일 생성 함수 정의 import openpyxl def write_excel_template(filename, sheetname, listdata): excel_file = openpyxl.Workbook() excel_sheet = excel_file.active excel_sheet.column_dimensions["B"].width = 60 excel_sheet.column_dimensions["C"].width = 70 # (다음 코드를 추가하였습니다) 하이퍼링크 생성 코드 excel_sheet.cell(row=index+1, column=3).hyperlink = title['href'] excel_sheet.title = sheetname for item in listdata: excel_sheet.append(item) excel_file.save(filename) excel_file.close() # 크롤링 코드 import requests from bs4 import BeautifulSoup res = requests.get("http://corners.gmarket.co.kr/Bestsellers?viewType=G&groupCode=G06") soup = BeautifulSoup(res.content, "html.parser") product_lists = list() bestlists = soup.select("div.best-list") bestitems = bestlists[1] products = bestitems.select("ul > li") for index, product in enumerate (products): title = product.select_one("a.itemname") price = product.select_one("div.s-price > strong") res_2 = requests.get(title['href']) soup_2 = BeautifulSoup(res_2.content, "html.parser") provider = soup_2.select_one("div.item-topinfowrap > div.item-topinfo > div.item-topinfo_headline > p > a > strong") product_info = [index+1, title.get_text(),title['href'], price.get_text(), provider.get_text()] product_lists.append (product_info) # 함수 호출 write_excel_template("report.xlsx","베스트상품", product_lists)
-
미해결제주코딩베이스캠프 Code Festival: Python 100제
50번 이후 문제는 안올라온건가요?
??????
-
해결됨리액트로 나만의 블로그 만들기(MERN Stack)
라우터에서
삭제된 글입니다
-
미해결텍스트마이닝 실전 프로젝트 - 뉴스 데이터 분석하기
color.gradient 오류질문입니다!
good_color<-color.gradient(c(0.3176471,0.2392157,0.3176471,0.925),c(0.7098039,0.6588235,0.2392157,0.15), c(0.2392157,0.7098039,0.7098039,0.28),nslices=length(freq)) 강의진행중에 시각화에서 색깔지정해주는 r 코드가 있는데요 이거 실행하면 함수 "color.gradient"를 찾을 수 없습니다. 라고 에러가 나는데 이건 어떻게 해결해야할까요? 뒤에서도 color.gradient 또 쓰는데 이게 해결이 안되니까 뒤의 코드들도 꼬이는거같습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
Part3: 유니티 수강전 문의
강사님 강의중 Part3:유니티 를 들으려고 하는데 Part2:자료구조 및 알고리즘 수강 없이 들어도 무리가 없을까요?
-
미해결눈떠보니 코딩테스트 전날
보너스 문제 : 문자열 파싱문제
꽃밭 문제를 푸는데 주어진 꽃밭을 연산자로 바꾸면 첫줄이 **0@+2로 나오고 이걸 우선순위에 맞게 풀이하면 4가 나오는데 result에 주어진 ['장미', '잡초', '해바라기', '라일락', '잡초']랑 너무 달라서...이렇게 푸는게 맞는지 모르겠습니다. result는 예시인가요? 아니면 잘못 풀고 있는걸까요? 답변 부탁드립니다.
-
미해결실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌
HTTP 상태 404 오류
강의 내용 그대로 작성하였고 login.jsp를 실행하여 ID, PW 를 기입하여 SUBMIT을 하면 HTTP 상태 404 오류가 발생합니다. console에서 오류 발생이 없습니다. loginOk.jsp를 실행하면 정상적으로 작동합니다. 오류 원인을 못찾겠습니다.
-
미해결파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
pickle 사용시 글자 깨짐
(사진)
-
해결됨스프링 시큐리티
csrf 필터 질문
안녕하세요. 강의를 듣던 중 의문이 생겨 질문합니다. csrf 토큰을 이용해 현재 들어온 요청이 악의적인 사이트로부터 온 요청이 아닌 것을 검증한다라는 개념은 이해할 수 있었는데요. 아래 시나리오로 악의적인 form 페이지를 생성해도 csrf 필터가 악의적인 요청을 구별할 수 있는지 궁금합니다. 0. 모든 도메인에 대한 cors 요청은 열려 있다고 가정 1. 악의적인 사이트에 사용자가 접속 2. 악의적인 사이트는 실제 form 페이지를 요청 3. 실제 form 페이지에서 csrf 토큰 파싱 & 위조 form 페이지에 csrf 토큰 삽입 4. 사용자에게 위조 form 페이지 제공
-
미해결스프링 핵심 원리 - 기본편
싱글톤을 직접 만들면 안좋은 이유에 관해
몇몇 스택오버플로우 글과 이펙티브 자바를 통해, 자바에서 + 멀티쓰레드 환경에서 완벽하게 싱글톤을 구현하는 것이 거의 불가능에 가깝다고 들었습니다. 그런 이유로 스프링 컨테이너의 싱글톤을 사용한다는 말도 같이 보았는데요... 이런 말이 어느 정도 신뢰도가 있는 것인지 알고 싶습니다. (영상의 "싱글톤 컨테이너" 파트에선 이 부분을 다루지 않아 질문하게 되었습니다) . 예를 들면 이런 글입니다 : https://dzone.com/articles/enforcing-java-singletons-is-very-hard
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
kfold split, accuracy, predict 검증 API... 등등의 작동 방식에 대해 질문이 있습니다.
위의 메서드, API 들이 실제 어떻게 동작하는지 각각의 코드를 보고 싶은데 어떻게 하면 알 수 있을까요? 메서드나 API를 잘 활용하는게 중요하긴 하지만 이 메서드 자체가 어떻게 작동하는지 대강만 알고 사용하는 거 같아 질문 드립니다!!
-
미해결애플 웹사이트 인터랙션 클론!
opacity out 이 안됩니다. script 검토 부탁드립니다.
(() => { let yOffset = 0; // window.pageYOffset 대신 사용할 변수 / 편의상 변수를 만들어서 적용 let pervScrollHeight = 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"), messaageA: document.querySelector("#scroll-section-0 .main-message.a"), messaageB: document.querySelector("#scroll-section-0 .main-message.b"), messaageC: document.querySelector("#scroll-section-0 .main-message.c"), messaageD: document.querySelector("#scroll-section-0 .main-message.d"), }, values: { messaageA_opacity_in: [0, 1, { start: 0.1, end: 0.2 }], messaageB_opacity_in: [0, 1, { start: 0.3, end: 0.4 }], messaageB_opacity_out: [1, 0, { start: 0.25, end: 0.3 }], }, }, { // 1 type: "normal", heightNum: 5, scrollHeight: 0, objs: { container: document.querySelector("#scroll-section-1"), }, }, { // 2 type: "sticky", heightNum: 5, scrollHeight: 0, objs: { container: document.querySelector("#scroll-section-2"), }, }, { // 3 type: "sticky", heightNum: 5, scrollHeight: 0, objs: { container: document.querySelector("#scroll-section-3"), }, }, ]; function setLayout() { // 각 스트롤 섹션의 높이 세팅 for (let i = 0; i < sceneInfo.length; i++) { sceneInfo[i].scrollHeight = sceneInfo[i].heightNum * window.innerHeight; sceneInfo[ i ].objs.container.style.height = `${sceneInfo[i].scrollHeight}px`; } // console.log(sceneInfo); 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 - pervScrollHeight; // const scrollRatio = yOffset / 현재씬의 scrollHeight; const scrollHeight = sceneInfo[currentScene].scrollHeight; const scrollRatio = (yOffset - pervScrollHeight) / scrollHeight; // console.log(currentScene); // 섹션 확인 switch (currentScene) { case 0: // console.log("o play"); const messaageA_opacity_in = calcValues( values.messaageA_opacity_in, currentYOffset ); const messaageA_opacity_out = calcValues( values.messaageA_opacity_out, currentYOffset ); if (scrollRatio <= 0.22) { // in objs.messaageA.style.opacity = messaageA_opacity_in; } else { // out objs.messaageA.style.opacity = messaageA_opacity_out; } console.log(messaageA_opacity_in); break; case 1: // console.log("1 play"); break; case 2: // console.log("2 play"); break; case 3: // console.log("3 play"); break; } } function scrollLoop() { enterNewScene = false; pervScrollHeight = 0; // 초기화 작업 for (let i = 0; i < currentScene; i++) { // pervScrollHeight = pervScrollHeight + sceneInfo[i].scrollHeight; pervScrollHeight += sceneInfo[i].scrollHeight; } if (yOffset > pervScrollHeight + sceneInfo[currentScene].scrollHeight) { enterNewScene = true; currentScene++; document.body.setAttribute("id", `show-scene-${currentScene}`); } if (yOffset < pervScrollHeight) { enterNewScene = true; if (currentScene === 0) return; // 브라우저 바운스 효과로 인해 마이너스가 되는 것을 방지(모바일) currentScene--; document.body.setAttribute("id", `show-scene-${currentScene}`); } if (enterNewScene) return; // 이해안됨 playAnimation(); } window.addEventListener("scroll", () => { yOffset = window.pageYOffset; scrollLoop(); }); // window.addEventListener("DOMcontentLoaded", setLayout); // => HTML /DOM구조만 로딩되면 실행 window.addEventListener("load", setLayout); // => 웹 페이지에 있는 이미지/모든 리소스까지 모두 로드된 후에 실행 window.addEventListener("resize", setLayout); })();
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
swagger 로 회원 가입한뒤에 몽고 디비 클라우드에 데이터가 올라가나여?
안녕하세요 좋은 강의 만들어 주셔 감사합니다 질문이 하나 있습니다. swagger 로 회원 가입한뒤에 몽고 디비 클라우드에 데이터가 올라가나여? 몽고 디비 클라우드 컬렉션즈를 클릭해봐도 아무것도 없어서여 알려주시면 감사하겠습니다.
-
미해결디지털 포렌식 기초
강의 내용이 보이지 않습니다.
안녕하세요. 강의 내용이 보이지 않는데죄송하지만 혹시 확인 가능하실까요?