묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨한 입 크기로 잘라 먹는 리액트(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를 하는 등 여러 가지를 해봤는데도 문제가 해결되지 않는데, 어떻게 해야 할까요?
-
미해결김영한의 실전 자바 - 중급 2편
해당 코드는 삽입정렬인가요?
package collection.compare; import java.util.Arrays; import java.util.Comparator; public class SortMain2 { public static void main(String[] args) { Integer[] array = {3, 2, 1}; System.out.println(Arrays.toString(array)); System.out.println("Comparator 비교"); Arrays.sort(array, new AscComparator()); System.out.println("AscComparator: " + Arrays.toString(array)); } static class AscComparator implements Comparator<Integer> { @Override public int compare(Integer o1, Integer o2) { System.out.println("o1=" + o1 + " o2=" + o2); return (o1 < o2) ? -1 : ((o1 == o2) ? 0 : 1) ; } } }이 코드는 삽입정렬이 사용되어 배열의 첫 번째 요소가 정렬된 것으로 간주하고 시작하는게 맞을까요...?o1=2 o2=3o1=1 o2=2이렇게 두 단계만 거치는 이유와 o1, o2를 잡는 기준을 잘 모르겠습니다...
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
build.gradle
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의 잘 듣고 있습니다. 자바 버전만 수정해서 빌드그래들 교안 그대로 입력하면 되나요? 자주하는 질문에는 다른 내용이 들어가 있는 것 같아서요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
백준9996번 질문드립니다.
#include <bits/stdc++.h> using namespace std; int num; string pattern; string fileName; int asteridIndex=0; int isValid; vector<char> patternFront; vector<char> patternBack; vector<string> output; int checkValid(string fileName){ string fileNameReverse; fileNameReverse=fileName; reverse(fileNameReverse.begin(),fileNameReverse.end()); for(size_t i = 0; i<patternFront.size(); i++){ if(fileName[i]==patternFront[i])continue; else{return 0;} } for(size_t i = 0; i<patternBack.size(); i++){ if(fileNameReverse[i]==patternBack[i])continue; else{return 0;} } return 1; } int main() { cin>>num; cin>>pattern; for(size_t i=0; i<pattern.size(); i++){ if(pattern[i]=='*'){asteridIndex=i; continue; // 이번껀 패턴으로 저장 안하고, 다음 문자로 넘어가기 위해 } if(asteridIndex==0){ patternFront.push_back(pattern[i]); }else if(asteridIndex!=0){ patternBack.insert(patternBack.begin(), pattern[i]); } } for(int i = 0; i<num; i++){ cin>>fileName; isValid=checkValid(fileName); if(isValid==0){output.push_back("NE");} else if(isValid==1){output.push_back("DA");} } for(auto o:output){cout<<o<<"\n";} return 0; } 입력 -> 출력은 알맞게 되는데 백준에선 계속 틀렸습니다가 나옵니다.