묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
질문드립니다.
import React from "react"; const Viewer = ({ count }) => { return ( <div> <div>현재카운트 : </div> <h1>{count}</h1> </div> ); }; export default Viewer; 이걸 했을떄 ..import React from "react"; const Viewer = ( count ) => { return ( <div> <div>현재카운트 : </div> <h1>{count}</h1> </div> ); }; export default Viewer;두개 차이가 멀까요 계속 해깔리는데 이거.. 구조 분해형태인거 까진 알겠는데부모에서 import logo from "./logo.svg"; import "./App.css"; import Viewer from "./component/Viewer"; import Controller from "./component/Controller"; import { useState } from "react"; function App() { const [count, setCount] = useState(0); const onClickButton = (value) => { setCount(count + value); }; return ( <div className="App"> <h1>Simple Counter</h1> <section> <Viewer count={count} /> </section> <section> <Controller onClickButton={onClickButton} /> </section> </div> ); } export default App; GPT 물어보니({ count }):이 방식은 구조 분해 할당을 사용한 것입니다.함수의 인자로 객체를 받고, 그 객체의 count라는 속성을 변수로 바로 할당합니다.예를 들어, Viewer 컴포넌트가 { count: 5 }라는 객체를 인자로 받으면, count 변수는 바로 5가 됩니다.(count):이 방식은 구조 분해 할당을 사용하지 않은 것입니다.함수의 인자로 객체를 받고, 그 객체를 count라는 이름의 변수로 할당합니다.따라서 count는 객체가 되며, count 객체의 속성에 접근하려면 count.count처럼 접근해야 합니다.이렇게 하면 const [count, setCount] = useState(0); 에서 count는 객체가 아니라 그냥 변수 아닌가요 ???<button onClick={() => { onClickButton(-1); }} > <button onClick={ onClickButton(-1);} >이거 2개의 차이가 멀까요 저는 onClick이 함수니까 함수를 전달해줘야 한다고 생각해서 { } 안에 바로 함수를 넣었거던요 ..후자 .근데 보니까 ()=>{ } 여기다가 함수를 넣는건onclick의 매개 함수의 리턴값으로 함수를 넣는건데 ..두개의 차이가 뭔지좀 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-B질문 있습니다
http://boj.kr/7c3f26d3241248269e0dafaccddfdc0e안녕하세요 큰돌 선생님. 이번 문제를 탑다운 방식으로 풀어 봤는데 어느 부분이 틀린지 모르겠습니다... 그리고 dp배열을 0이 아닌 -1로 초기화 하는 이유가 0이 답의 범위에 있다라고 다른 질문에서 얘기해 주셨었는데 0이 답의 범위라는게 문제의 답이 0이 나올 수 있다는 건지 dp배열 안의 값이 0이 될 수 있다는 의미인지 잘 모르겠습니다
-
해결됨홍정모의 따라하며 배우는 C언어
내부적으로는 포인터 방식으로 전부 작동이 된다?
안녕하세요 비전공자 첫 언어로 선생님의 C강의를 듣고있는 초보자 입니다.첫 프로그래밍 수업이라 챕터 0 CPU작동방식을 설명을 해주셨어도 이게 뭐가 뭔지 모르니까 아 그런느낌 정도만 알고 있었고 각 강의마다 개념 이해하느라 급급해서 가장 기본적인 프로그램 자체의 구동방식을 생각 안하고 있었는데이번 강의를 통해 프로그램 자체의 작동방식과 더불어 포인터는 주소를 저장하는 소소한 문법 중 하나일 뿐이다 라고만 이해하고 있었습니다.근데 이 강의를 보고 이해한 점은 포인터는 사실 프로그램을 실행하는 그 자체인가? 라고 생각하게 되었습니다.그래서 궁금한 점은챕터 0 CPU작동 방식에서 먼저 CPU에서 주소를 호출하여 그 값을 가져온다는 개념과변수도 결국 메모리 어떠 한 주소의 명칭으로 대신 사용한다는 개념과이 강의에서 알게 된 함수 이름 자체가 포인터라는 사실 또 함수를 호출한다는 것은 함수의 포인터 주소로 가서 순차적 명령실행 방식이라는 설명을 통해 이해한 것 은결국 프로그램 자체는 실행이 되었을 때 내부적으로 전부 포인터로 작동이 된다는 것 이라고 깨달았는데 이해한바가 맞을까요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
강의 12.13 마지막에 flex 스타일 관련 질문
강의 12.13 마지막에서 메인컨테이너가 화면 끝까지 안내려 오는 문제를 해결하기 위해서 index.css의 body 태그 스타일에 flex 를 주셔서 해결하셨는데요. 그 원리를 조금 더 설명해 주실 수 있나요?flex는 요소들을 한줄에 배치하기 위해서 사용 하는데 여기선 요소가 다음 줄 까지 덮도록 쓰여진것 같아 좀 헷갈립니다.
-
미해결
스프링 알림 1:N 발송 어떻게 구현해야할까요?
안녕하세요. 스프링으로 알림 서비스 API 만들어보고 있습니다.여기서 알림이라 하면, 인프런에서 '종 아이콘' 누르면 나오는 사이트 내부에 있는 알림입니다. 현재 Notification 테이블은 Member 테이블이 @ManyToOne으로 매핑되어있는 상태입니다.즉, 한 유저는 여러개의 알림을 가질 수 있습니다. 'OO님이 본인 게시글에 답글을 달았습니다'와 같은 1:1 알림 전송은 Notification insert가 댓글 달때 한번만 일어나므로 상관없지만, '스프링 핵심 원리 -기본편 강의에 새소식이 있어요!!'와 같은 1:N 알림을 보내려면, 스프링 핵심원리를 듣는 모든 수강생한테 알림을 보내야하니까, 수강생수만큼 Notification Insert가 나가야하잖아요??그러면 수강생 수가 100만명이면 Insert가 100만명 나가는건데, 너무 '비효율적'이고 'DB 공간 낭비'라고 생각되서요. 대규모 서비스에서 사용되는 좋은 방법 추천해주실 분 계신가요?인프런에서 1:N 알림은 어떤 방법을 쓰고 있을까요~?
-
미해결AWS로 쉽고 빠르지만 아주 견고한 서버 환경을 구축하는 방법
NAT gateway 비용 절감을 위한 NAT instance (실습) 수업노트 오타
네트워크 인터페이스 이름을 확인 명령어natstat -i오타 제보합니다!netstat -i
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-k 교수가 된 현우 런타임 에러
안녕하세요. 강의를 보기 전에 문제를 먼저 풀어보았습니다.5!를 생각해보면 5*4*3*2*1 인데, 5가 나오기 위해선 반드시 2와 4가 나와야하고, 따라서 5의 개수가 무조건 적다고 생각했습니다. 그래서 10억 이하의 모든 5의승수를 저장해놓는 배열을 만들어두고, 1~n 사이의 수 중 5^k로 나누어 떨어지는 수가 발견되면 cnt에 k를 더하도록 만들었는데, runtime error가 발생했습니다. 에러 코드는 divide by zero 가 나오는데, 나눗셈을 사용하지 않는데 이런 에러가 왜 발생하는걸까요? http://boj.kr/f55433f25a704564a5d253bad99cd7ac
-
미해결[React 1부] 만들고 비교하며 학습하는 React
어떤거를 먼저 들어야 하는지 도와주세요
안녕하세요우아한형제들 프론트엔드 시니어 개발자의 웹 개발 로드맵 결제를 했는데, 리액트1 부터 들어도 될까요? 아니면 어떤 강의부터 들어야 하나요? 추천을 해줄 수 있을까요? 프론트에 대해서 아예 모르는 상태 입니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
섹션2의 정적 컨텐츠 부분에 질문이 있습니다
강의를 한번 돌리고 복습중입니다 섹션2. 정적 컨텐츠 강의에서 위와 같이 /hello-static.html을 입력하여 요청하면 우선 1번과 같이 hello-static관련 controller에서 있는지 확인하고 없으면 2번과 같이 정적 컨텐츠를 내려준다고 설명하셨습니다.이와 관련하여 궁금증이 uri요청 자체가 hello-static.html로 요청자체에 .html을 요청하였기 때문에 .html을 찾아야 하는게 흐름상 맞지 않나라는 생각이 듭니다. gpt를 통해 알아보니 .html을 처리하는 controller가 있을 수 있기 때문이라고 하는데, 그렇다면 hello-static.html을 요청할 경우 스프링 컨테이너에서 찾는 controller의 이름이 어떻게 되나요??dispatcher servlet처럼 논리 이름만을 생각하여 .html을 제외한 hello-static이라는 controller의 이름을 찾을 것 같은데 맞는지 궁금하네요질문 요점: /hello-static.html로 요청했을 경우 1번 경우의 스프링 컨테이너에서 controller를 찾을때 찾는 이름의 기준이 무엇인지에 대한 질문.
-
미해결AWS로 쉽고 빠르지만 아주 견고한 서버 환경을 구축하는 방법
비용을 줄이거나 잠시 일시중지 하려면 어떤 서비스를 중지해야하나요?
안녕하세요!한번에 모든 실습을 진행하면 좋겠지만. 섹션 별로 실습을 하고있는데 현재는 Elastic Load Balancer까지 진행하였습니다.그런데 비용이 하루에 1달러 정도씩 나가는거같아서. 이걸 좀 줄이고 싶은데 어떤걸 중지시키면 될까요?혹 중지 시키더라도 다시 재시작 하면 실습을 이어가면서 할 수 있나요?
-
해결됨Svelte.js SPA 영화 검색 프로젝트
에러가 나서 질문올립니다.
template 설치중에 에러가 자꾸떠서질문남깁니다..
-
미해결
에러가 생겨 질문남깁니다.
안녕하세요 예제 따라하다가 npm install 하는 과정에서 에러가 생겨 질문 남깁니다
-
해결됨자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
[공유] setName 시 threadName이 1부터 시작하는 이유
해당 강의 10분 경 나온 설명으로, setName 메소드 자체가 스레드 이름에 영향을 주나? 싶은 궁금증이 들어서 확인해 보았고, 저와 비슷한 궁금증을 가지신 분들이 계실 것 같아 공유드립니다. setName은 Thread name 생성 로직에는 관여하지 않습니다. 다만, 해당 예제에서는 new Thread()로 이름 없는 스레드를 생성 후(이 때 Thread-0으로 생성), 해당 Thread를 setName을 통해 Thread name을 바꿔주고 있어서, setName을 사용하면 1부터 카운트되는 것 처럼 보였던 것입니다. -> 새로 생성된 스레드의 이름은 Thread-0-> Thread-0이 yourThread로 치환됨 yourThread를 생성하는 부분에서 Thread의 이름을 임의로 넣어주고, 아래에서 스레드를 생성하면 0번부터 생성됨을 확인할 수 있습니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
최대 매출 문제
import java.util.Scanner; public class Main { public int solution(int n, int m, int[] arr){ int answer = 0, sum = 0; for(int i=0;i<m;i++){ sum += arr[i]; } for(int i=0;i<n-m;i++){ answer = Math.max(answer, sum); sum = sum - arr[i] + arr[i+m]; } //answer = Math.max(answer, sum); return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int m = kb.nextInt(); int[] arr = new int[n]; for(int i=0;i<n;i++) arr[i] = kb.nextInt(); System.out.println(T.solution(n, m, arr)); } }해당 코드가 왜 정답이 되는지 모르겠습니다.위 코드처럼 작성하면 for문의 제일 마지막번째에 sum과 answer를 비교하지 않고 answer를 리턴하게 되는건데 그럼 오답이지 않나요?10 31 2 3 4 5 6 7 8 9 10이렇게 마지막 연속된 K일에서 최댓값으로 주어진다면 값이 제대로 안 나오는데 왜 정답이 되는지 궁금합니다.
-
미해결파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
execute_cdp_cmd 코드가 작동하지 않습니다.
from user_agents import parse from selenium import webdriver from selenium.webdriver.chrome.options import Options import random, time # 한국에서 개통된 버전은 이런 데이터 들이 필요하다. def make_user_agent(ua, is_mobile): user_agent = parse(ua) model = user_agent.device.model platform = user_agent.os.family platform_version = user_agent.os.version_string + ".0.0" version = user_agent.browser.version[0] ua_full_version = user_agent.browser.version_string architecture ="x86" if is_mobile: # 모바일 버전 platform_info = "Linux armv81" architectur="" else: # PC 버전 platform_info = "Win32" model = "" RET_USER_AGENT = { "appVersion" : ua.replace("Mozilla/", ""), "userAgent" : ua, "platform" : f"{platform_info}", "acceptLanguage" : "ko-Kr, kr, en-US, en", "userAgentMetaData" : { "brands" :[ # 네트워크 탭 확인하고 넣기 {"brand":" Not A;Brand", "version":"99"}, {"brand":"Google Chrome", "bersion":f"{version}"}, {"brand":"Chromium", "version":f"{version}"} ], "fullVersion":f"{ua_full_version}", "platform":platform, "platformVersion":platform_version, "architectur":architecture, "model" : model, "mobile":is_mobile # True, False } } return RET_USER_AGENT pc_device = ["1920,1440","1920,1200","1920,1080","1600,1200","1600,900", "1536,864", "1440,1080","1440,900","1360,768" ] mo_device = [ "360,640", "360,740", "375,667", "375,812", "412,732", "412,846", "412,869", "412,892", "412,915" ] width, height = random.choice(mo_device).split(",") print(width, height) UA = "Mozilla/5.0 (Linux; Android 9; Mi A2 Lite Build/PKQ1.180917.001; AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/127.0.0.0 Safari/537.36'" options = Options() UA_Data = make_user_agent(UA, True) print(UA_Data) #UserAgent 속이기 options.add_argument(f"--user-agent={UA}") options.add_argument(f"--window-size={width}, {height}") options.add_argument("--disable-blink-features=AutomationControlled") driver = webdriver.Chrome(options=options) driver.execute_cdp_cmd("Network.setUserAgentOverride",UA_Data) driver.get('https://www.google.com') input() --아래 코드가 작동하지 않습니다. 이유가 뭘까요?driver.execute_cdp_cmd("Network.setUserAgentOverride",UA_Data) [ 버전 ]python 3.10.10selenium 4.13.0
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 설치 질문
제가 실수로 h2 server 를 지웠는지 저장한 설정에 h2 가 보이지 않습니다. 지우고 다시 설치해도 똑같네요 ㅠㅠ 어떻게 해야하나요?
-
미해결
깃허브 secretKey 커밋 실수
properties에 있는 secretKey 를 실수로 커밋했습니다.# Ignore application properties files application.properties이거를 늦게 작성한 제 실수네요 ㅠ.ㅠ키 변경하고 properties파일 삭제하면 될까요?기록까지 지워야하나요?
-
미해결백엔드 개발자 성능 개선 초석 다지기
인덱스 활용 질문
인덱스를 걸때 카디널리티 수치를 확인해 높은 컬럼을 인덱스로 설정하라고 강의에서 들었습니다. 이에 궁금한 점이 몇가지 있습니다.Q1 : WHERE 절에 검색조건으로 사용되는 컬럼이 5가지라고 가정하면 가장 카디널리티가 높은 컬럼 1개만 인덱스로 걸어야 하나요?? 아니면 카디널리티가 높은 순서대로 묶어서 하나의 복합 인덱스를 만들어 주어야 하나요?? 차이점이 궁금하고 어떤 방식이 더 나은 방식인지 궁금합니다 Q2 : WHERE 절에 사용되는 검색조건인 컬럼 한개가 있다고 가정했을때 해당 컬럼의 카디널리티 수치가 낮더라도 인덱스를 만드는게 낫지 않나요? Q3 : Mysql의 경우 범위검색의 경우 B-Tree 인덱스를 사용한다고 알고있습니다 . 강의에서 만든 인덱스도 날짜이고 범위검색이니 B-Tree 인덱스를 사용한거 같습니다. 정확한 일치 검색의 경우 해시 인덱스를 사용할 수 있다고 들었습니다. 이때는 인덱스를 만들때 코드를 어떻게 써줘야 해시 인덱스를 만들 수 있나요?
-
미해결김영한의 실전 자바 - 중급 1편
안녕하세요 프로젝트 설정 관련해서 문의남깁니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 다름이 아니라 강의를 보며 코드를 작성하며 수업을 따라가고 싶은데 제공된 소스코드를 import 하지 않으면 수업을 따라가는데 힘들까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
cannot resolve symbol 문제
현재 컴퓨터에서 스프링 강의를 따라하며 개발했고 코드가 잘 돌아갔습니다. 그런데 이를 깃허브를 통해 다른 컴퓨터에서 강의를 이어 들으려고 하는데 cannot resolve symbol 문제가 뜹니다. build.gradle 파일도 제대로 되어 있고, refresh dependency도 해보고 아니면 invalid cache를 하는 등 여러 가지를 해봤는데도 문제가 해결되지 않는데, 어떻게 해야 할까요?