묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
oracle 접속 시
사용자명 입력: ERROR: ORA-12560: TNS:프로토콜 어댑터 오류 계속해서 발생하는데요 어떤걸 해보면 처리가 될까요?
-
해결됨실전 리액트 프로그래밍
상태가 아닌값을 ref에 저장하는 이유가있나요?
useRef(0) 이렇게 해서 값을 저장 해서 사용하는이유가 궁금 합니다. 컴포넌트 외부에 let변수를 선언 해서 사용하지 않는 이유가 있을까요? 강의 감사합니다.
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
github 허가 부탁드립니다!
github gist에 남겼는데 허가 부탁드립니다! github mail : vmelove@naver.com 인프런 mail : kjm9596@gmail.com
-
해결됨애플 웹사이트 인터랙션 클론!
선생님
안녕하세요 선생님. 입문한지 3주가 지나 개념 공부 이후 클론코딩을 여러 차례 시도하고 있는 중입니다.1. 죄송하지만 혹시 BEM을 사용하지 않고 코딩을 하시는 데에는 어떤 이유가 있으신지 너무 궁금해서요! 입문 당시 여러 사이트에서 BEM 방식을 추천해주더라구요. 실무에서는 잘 사용하지 않는 작명법인가요?2. 마찬가지로 CSS 파일 분할법에 대한 노하우를 배우고 싶은데, 현재 클론코딩 폴더를 뒤져보면 main.css 하나로 스타일을 적용하고 계셔서 궁금해요!혹시 SPA를 제작하는 데 있어 CSS를 여러 파일로 구분하는 것은 큰 의미가 없는 행위일까요? JS의 경우 모듈화를 거치다 보니 분명하게 함수의 용도나 목적이 다르면 분할을 하고 있는 상태라 조금 혼동이 있네요 ㅠㅠ 예를 들면 - nav.css, scroll-section.css, footer.css 등과 같이요! 요소로 분할한다면 폴더는 components 등의 네이밍으로 분류하고 싶은데, 실무에서는 그렇게 하지 않는지 궁금해서 여쭤봅니다! (사실 하나의 html 파일에서만 사용하는데 분할이 큰 의미가 없나 싶기도 해서요ㅠㅠ)스택 공부도 중요하지만 미리 코딩 습관을 들이는 것이 더 중요하지 않을까 해서 여러모로 걱정이 많아 글이 길어졌습니다. 저는 보기 좋은 코딩을 하는 것 또한 목표라 많은 분들의 노하우도 참고하고 싶어서요 ㅎㅎ... 전에 Flex - Grid 블로그 글을 먼저 읽었었는데, 설명 정말 잘하시는 것 같아서 부럽습니다 ㅠㅠ
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
앞서 배운 필터링을 적용해서 반환하게 되면
기존 배웠던 필터링을 적용해서 반환하게 되면 위 사진에서 보시는 것처럼 형식이 약간 달라지는 것 같고 hreflang, media 같은 못보던 속성들이 추가가 되는데 이것들은 무엇인가요??
-
미해결파이썬 텍스트 분석 입문 - 데이터 수집부터 분석까지
jpype 설치 오류 관련
안녕하세요 지금 필요한 프로그램 설치하고 있는데, 제공해주신 PDF 43페이지에서 계속 오류가 납니다. 이런식으로 오류가 계속 발생해, 버전이 달라 그런가 싶어 40페이지의 jpype 파일들을 몇개 더 다운받아 시도해보았지만 계속 오류가 발생하네요.. 이걸 보면 cp37로 설치하는건 맞는건가 싶긴 한데 혹시 해결할 수 있는 방법이 있을까요?
-
해결됨웹 게임을 만들며 배우는 자바스크립트
자바스크립트는 동기? 비동기 ?
문득 강의를 듣다 궁금해졌습니다.구글링을 해보긴 했는데 기본적으로 자바스크립트는 동기적 언어라고 하더군요.간혹 비동기적 언어라고 오해하는 경우도 있던데 , 콜백이나 프로미스, async / await 등 비동기 처리에 대한 특징들이 많아서 그럴까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
styled-components를 이용해 커스텀할 때 Warning 문제
안녕하세요 스타일드 컴포넌트를 이용해서 커스텀을 하려고 하는데 다음과 같은 오류가 떠서 문의 드립니다. 이렇게 className이 맞지 않는다는 오류가 뜨는데 혹시 버전이 달라서 그런걸까요? 코드는 이런식으로 작성했습니다. import React, { useState, useCallback, useMemo } from "react"; import Head from "next/head"; import Link from "next/link"; import PropTypes from "prop-types"; import styled from "styled-components"; import { Form, Input, Button } from "antd"; const FormStyle = styled(Form)` padding: 1rem; `; const LoginForm = ({ setIsLogin }) => { const [values, setValues] = useState({}); const handleChange = useCallback( ({ target: { name, value } }) => { setValues({ ...values, [name]: value }); }, [values] ); const handleSubmit = useCallback(() => { setIsLogin(true); }, [values.id, values.password]); const style = useMemo(() => ({ marginTop: 10 }), []); return ( <> <Head> <title>Login | NodeBird</title> </Head> <FormStyle onFinish={handleSubmit}> <div> <label htmlFor="id">아이디</label> <Input name="id" value={values.id} onChange={handleChange} required autoComplete="false" /> </div> <div> <label htmlFor="password">비밀번호</label> <Input name="password" type="password" value={values.password} onChange={handleChange} required autoComplete="false" /> </div> <div style={style}> <Button type="primary" htmlType="submit" loading={false}> 로그인 </Button> <Link href="/signup"> <a> <Button>회원가입</Button> </a> </Link> </div> </FormStyle> </> ); }; LoginForm.propTypes = { setIsLogin: PropTypes.func.isRequired, }; export default LoginForm; package.json dependency도 같이 첨부합니다. "dependencies": { "@ant-design/icons": "^4.3.0", "antd": "^4.9.4", "next": "^10.0.3", "prop-types": "^15.7.2", "react": "^17.0.1", "react-dom": "^17.0.1", "styled-components": "^5.2.1" },
-
해결됨타입스크립트 입문 - 기초부터 실전까지
유니온 없애 보았습니다.
https://codepen.io/honux77/pen/poEPGVB 그런데 약간의 코드 중복이 발생하는데 어떻게 줄이는게 좋을지 모르겠어요. 제네릭 강의 너무 좋았습니다! 감사합니다!
-
미해결iOS/Android 앱 개발을 위한 실전 React Native - Basic
실행이 갑자기 안됩니다. ㅠㅠ
질문을 안드리고 싶은데..ㅠㅠ 자꾸만 질문을 하게 되네요.. 죄송합니다. 실행이 잘 되던 것이 어느날 갑자기 안되기 시작합니다. 어제도 고생해서 다시 예전 버전으로 복사해서 어찌어찌 됐는데.. 오늘도 잘 되다 갑자기 또 안됩니다. 구글링을 해보니 메모리 누수 관련된거 같은데.. 어떻게 메모리를 늘려야 하는지 모르겠습니다. 에러 내용은 아래와 같습니다. react-native run-android, ios 둘다 아래의 내용이 나옵니다. Failed to construct transformer: { Error: Call retries were exceeded at ChildProcessWorker.initialize (/Users/yspark/project/react_native/GOGOING/node_modules/jest-worker/build/workers/ChildProcessWorker.js:193:21) at ChildProcessWorker.onExit (/Users/yspark/project/react_native/GOGOING/node_modules/jest-worker/build/workers/ChildProcessWorker.js:263:12) at ChildProcess.emit (events.js:189:13) at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12) type: 'WorkerError' } Error: Call retries were exceeded at ChildProcessWorker.initialize (/Users/yspark/project/react_native/GOGOING/node_modules/jest-worker/build/workers/ChildProcessWorker.js:193:21) at ChildProcessWorker.onExit (/Users/yspark/project/react_native/GOGOING/node_modules/jest-worker/build/workers/ChildProcessWorker.js:263:12) at ChildProcess.emit (events.js:189:13) at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12) 그리고 언제부턴가 android 폴더에 java_pid번호.hprof 파일이 생겼습니다. 분명 메모리 초과인거 같긴한데, 어떻게 메모리를 늘려야 하나요? 찾아보니 node --max-old-space-size=4096 yourfile.js 라고 되어 있는데, vs code 터미널창에서 임의의 js파일(console.log('ok')만 있는 yourfile.js를 만들어서 실행을 해보았는데 아무런 메시지 없이 실행은 된거 같은데. react-native run-ios 해도 위의 어마무시한 에러는 똑같이 뜹니다. 아, 어떻게 해야 할까요? 가르침을 주시면 정말 감사합니다. react-native 는 개발하기 너무너무 힘드네요..
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
공부방법 관련
안녕하세요 강의 잘듣고 있습니다. 머신러닝에 대한 개념이 많이 부족한지라 생각보다 시간이 걸리네요. 공부방법에 관한 질문드립니다. 혹시 코드를 하나하나 다 따라해보며 한줄한줄 다 이해하는게 나을까요 (현재 이런 방식으로 하고있습니다) 아니면 코드의 흐름 및 알고리즘 개념만 이해했으면 넘어가는게 나을까요?
-
미해결언리얼 엔진4 (Unreal Engine) 3D 횡스크롤 게임 만들기
tolerance 가 있습니다
안녕하세요 선생님! 자주 질문을 올리게 되네요. 일단, 애니메이션을 뛰어넘고 이번 강의를 듣는데요, 막판에 결과가 이상하길래, 보아하니 버전이 다른탓에..(제가 잘못 했죠..) Normalize 함수에 tolerance라는 값이 있었습니다. 이걸 1.0으로 그냥 넣어봤더니 선생님이랑 같은 결과가 나왔습니다. 일단 된 것도 기쁘지만, 왜 그런지를 이해할 수 없어서요! tolerance는 뭐할 때 어떻게 쓰는 값인지 알 수가 있을까요? 설명에는 Minimum squared vector length 라는데..이해하기 어렵습니다 ㅠㅠ
-
미해결WEB2 - JavaScript
태그 색에 관하여..
저는 <script>를 입력 후 Enter를 치면 태그색이 회색으로 변하고 줄도 자동으로 안 맞춰집니다..
-
해결됨[개정판] 파이썬 머신러닝 완벽 가이드
best_score_값과 pred값이 다른 이유
안녕하세요, 구글코랩에서 GridsearchCV를 실행하다가 궁금한 점이 생겨 질문합니다. grid_dtree.best_score_ 를 출력하면 정확도가0.975가 나오고 pred=grid_dtree.predict(X_test)에서 pred를 출력하면 0.9667이 나옵니다. refit=True옵션이 최고성능을 내는 파라미터로 재학습하는 것이니 grid_dtree를 테스트 데이터셋으로 학습 및 예측한 pred와 best_score_ 속성 값은 동일해야 하는 것 아닌지 궁금합니다. 두 값이 다른 이유는 K폴드를 실행하는 과정에서 학습데이터셋과 테스트데이터셋의 구간이 강의에서 나온 구간과는 약간 상이해서 그런듯합니다. 이것도 맞는지 알려주시면 감사하겠습니다!
-
미해결애플 웹사이트 인터랙션 클론!
강사님 질문있습니다.
const calcValues = (values, currentYoffset) calcValues 함수에 values 값이 제대로 들어가지 않습니다. calcValues 함수 속에서 console.log(values, "작동") 을 기입해도 undefined라고 등장하고, 당연히 해당 함수를 돌릴때, 계속 아래와 같은 에러가 등장합니다. Uncaught TypeError: Cannot read property 'length' of undefined --- 여기서 등장하는 length는 if (values.length === 3) { 이부분이라고 생각해주시면 감사하겠습니다. 아래 복사한 제 코드문입니다. 무엇이 잘못일까요...? (() => { let yOffset = 0; // window.pageYOffset 대신 사용할 변수 let prevScrollHeight = 0; // 현재 스크롤 위치(yOffset)보다 이전에 위치한 스크롤 섹션들의 스크롤 높이값의 합 let currentScene = 0; // 현재 활성화된(눈 앞에 보고있는) 씬(scroll-section) let enterNewScene = false; const sceneInfo = [ { // 0 type: "sticky", heightNum: 5, // 모든 디스플레이 높이의 5배로 지정해준다. scrollHeight: null, 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_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_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_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, 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") } } ]; ///////////////////////////////////////////////// const setLayout = () => { // 각 높이 세팅 for (let i = 0; i < sceneInfo.length; i++) { if (sceneInfo[i].type === "sticky") { sceneInfo[i].scrollHeight = sceneInfo[i].heightNum * innerHeight; } else { sceneInfo[i].scrollHeight = sceneInfo[i].objs.container.style.offsetHeight; } sceneInfo[ i ].objs.container.style.height = `${sceneInfo[i].scrollHeight}px`; } totalScrollHeight = 0; yOffset = window.pageYOffset; 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}`); }; ///////////////////////////////////////////////// const calcValues = (values, currentYoffset) => { let rv; let scrollHeight = sceneInfo[currentScene].scrollHeight; let scrollRatio = currentYoffset / scrollHeight; console.log(currentYoffset); if (values.length === 3) { let partScrollStart = values[2].start * scrollHeight; let 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; }; const playAnimation = () => { const Values = sceneInfo[currentScene].values; const objs = sceneInfo[currentScene].objs; const currentYoffset = yOffset - prevScrollHeight; const scrollHeight = sceneInfo[currentScene].scrollHeight; const scrollRatio = currentYoffset / scrollHeight; switch (currentScene) { case 0: console.log("0번입니다.", 0); if (scrollRatio <= 0.24) { 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 )}%)`; } break; case 1: console.log("1번입니다.", 0); break; case 2: console.log("2번입니다.", 0); break; case 3: console.log("3번입니다.", 0); break; } }; const 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) { enterNewScene = true; if (currentScene === 0) return; currentScene--; document.body.setAttribute("id", `show-scene-${currentScene}`); } if (enterNewScene) return; playAnimation(); }; window.addEventListener("scroll", () => { yOffset = window.pageYOffset; console.log(yOffset); scrollLoop(); }); window.addEventListener("load", setLayout); window.addEventListener("resize", setLayout); })();
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
프로젝트 생성 후, 메인 실행하고 끄면 에러가 발생합니다.
이니셜라이저로 만들어서 압축풀고 annotation processor체크하고 메인 실행하면 잘됩니다. 화이트라벨 페이지도 뜨구요. 그런데 종료하면 이런 에러가 뜨네요... 계속 프로젝트 만드는 건 문제 없지만 프로그램 종료마다 이게 뜨니 불안합니다. 혹시 이게 뭔지 아시는 분 계신가요? ㅠㅠ
-
미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
테스트 환경 개선 질문
안녕하세요 강사님 계속 잘 따라하다가 테스트환경개선하기부분에서 막혔습니다. 패키지 파일에서 NODE_ENV=test 추가해주고 index.js에 변경한 부분 process를 이용해서 반영해 보았는데 계속 test 실행시 NODE_ENV가 인식이 안되거나 내부및외부 명령어가 아니라고 뜨는데요... 답변주시면 감사하겠습니다.
-
미해결애플 웹사이트 인터랙션 클론!
requestanimationframe 질문
안녕하세요 강사님 두가지 질문이 있는데요 첫번째로는 function loop{... requestanimationframe(loop) } 일때 loop이 계속 돌고있는데 이건 그러면 loop함수가 없어지지 않고 계속 생성되고 있는건가요?? 답변주시면 감사하겠습니다. 그리고 두번째로는 위의 addEventListener함수에서 rafId = requestAnimationFramp(loop) 을 쓰지 않고 그냥 loop을 쓰면 되지 않나요? rafId는 loop안에서만 사용되어도 상관없다고 생각이 돼서요. 답변주시면 감사하겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
class 안에서 자신을 재사용? 하는 경우
class TreeNode<T> { public T Data { get; set; } public List<TreeNode<T>> Children { get; set; } = new List<TreeNode<T>>(); } 이 부분에서 현재 정의하는 클래스 내부에 자신을 다시 사용하는 것이 왜 가능한 것인가요?(TreeNode 클래스의 정의 내부에 TreeNode가 사용되는 것) 이전부터 이렇게 사용하시길래 그냥 지나가려다가 궁금해서 질문드립니다.
-
미해결Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)
StreamBuilder dispose 문의.
안녕하세요 강사님. search_page.dart(StatefulWidget) 파일내용중 문의 드립니다. StreamBuilder 에 대해서 dispose 할 필요는 없나요? 필요하다면 어떻게 처리하는지 문의 드립니다. 감사합니다.