묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
CSR 자바스크립트
"자바스크립트 링크"가 <script> 태그에 있는 경로를 말하는 거고 클라이언트가 그 js 파일을 서버에 요청하는게 "자바스크립트 요청"이 되는건가요?서버가 그 파일을 전달하면 클라이언트가 필요한 데이터를 다시 요청한 후에 파일을 완성해서 렌더링하는 과정이 맞는지 궁금해요
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
침몰하는 타이타닉(그리디) 문제 질문
안녕하세요! 강의 잘 듣고 있습니다공부를 하다가 오래 고민해도 이해가 안되는 부분이 생겨서 질문 처음 남겨봅니다~ 침몰하는 타이타닉 (그리디) 문제에서 예를 들어무게가 100 90 80 80 80 80 40 30 20 10 인 10명의 사람들을 무게 한도가 140인 구명보트에 태울때강사님 풀이 대로면 100인 사람과 10 인 사람을 태우고90 인 사람과 20인 사람을 태우는 방식으로 시작해서(100,10) (90,20) (80,30) (80, 40) (80) (80) 이렇게 6개의 구명보트에 사람을 태우는데 저는 100인 사람과 40인 사람을 먼저 태워야한다고 생각을 했습니다.뭔가 강사님 풀이대로 100인 사람과 10 인 사람을 먼저 태우면 80 인 사람이 혼자 타게 되는데100이 40과 함께 타면 80 인 사람이 10 인 사람과 같이 탈 수 있으니 80은 혼자 타지 않아도 되서 cnt 가 최소가 되는게 아닌가 생각했습니다.( 즉 100 일떄 140 - 100 은 40 이니 40보다 작은 수 중에서 가장 큰 값을 구하는 방식으로 풀었습니다 이중 반복문을 사용합니다 (100, 40) (90, 20) (80, 20) (80, 10) (80) (80) ) 제가 제 방식, 강사님 방식으로 5시간정도 시뮬레이션 해 본 바로는 결국 결국 cnt는 같았습니다그런데 왜 같은지 논리적으로는 이해할 수가 없어요.. ㅠㅠ논리적으로 왜 같은지 혹시 설명해주실 수 있으실까요..
-
미해결인터랙티브 웹 개발 제대로 시작하기
생성자 함수를 클래스 함수로 변경 하고 this 오류 관련
init() { window.addEventListener('scroll', () => { this.scrollRunHandler(); this.scrollPosition(this.mainElem); }); } scrollRunHandler() { clearTimeout(this.scrollState); if (!this.scrollState) { this.mainElem.classList.add('running'); } this.scrollState = setTimeout(() => { this.scrollState = false; this.mainElem.classList.remove('running'); }, 500); } scrollPosition = (elem) => { if (elem.lastScrollTop > window.scrollY) { // 스크롤을 아래로 this.mainElem.dataset.direction = 'backward'; } else { // 스크롤 위로 this.mainElem.dataset.direction = 'forward'; } elem.lastScrollTop = window.scrollY; } 생성자 함수를 클래스 함수로 변경하면서 this가 character를 가리켜야 되는데 window를 가리키는 문제가 생겨서 변수를 그냥 넣어줘서 작동은 하는데 이렇게 하는게 맞는지 궁금합니다.
-
해결됨코드로 배우는 React 19 with 스프링부트 API서버
섹션7: gson 오류
강의 설명에 따라 build.gradle에 implementation 'com.google.code.gson:gson:2.10.1' 입력 후 이 오류 때문에 강의를 더 이상 진행할 수가 없습니다. 오류로 인해 ./gradlew clean build --refresh-dependencies 터미널에도 실행해보고configurations.all { resolutionStrategy { force 'com.google.code.gson:gson:2.10.1' } } 이 코드도 추가해서 해결해 보려 했으나, 오류가 해결되지 않았습니다. 도움 부탁드립니다.
-
해결됨[7일완성]생각하는 데이터베이스모델링
쿼리 질문드립니다!
안녕하세요 선생님."26_학사관리시스템(SQL실습3)"에 있는 쿼리 중에 조인과 서브쿼리 중 대체적으로 어떤 방법이 성능에 더 좋은지 궁금해서 질문드립니다.두 가지 질의에 대해서 3가지 방법으로 조인과 서브쿼리를 섞어보았는데 조언 부탁드립니다.감사합니다. -- 교양엉어 과목을 수강 신청한 학생의 이름-- 1. JOIN 2번select s.student_namefrom student_course scJOIN student s on sc.student_id = s.student_idJOIN course c on sc.course_code = c.course_codewhere c.course_name = '교양 영어';-- 2. JOIN 1번, where 절에 subQuery 1번select s.student_namefrom student_course scJOIN student s on sc.student_id = s.student_idwhere course_code = (select course_codefrom coursewhere course_name = '교양 영어');-- 3. where 절에 subQuery 2번select s.student_namefrom student swhere s.student_id in (select student_id from student_coursewhere course_code = (select course_code from coursewhere course_name = '교양 영어' ));-- 가교수의 과목을 수강신청한 학생수를 출력-- 1. JOIN 2번select count(student_id) as cnt -- count(student_id) as cntfrom student_course scJOIN course c on sc.course_code = c.course_codeJOIN professor p on c.professor_code = p.professor_codewhere p.professor_name = '가교수';-- 2. JOIN 1번, WHERE 절에 subQuery 1번select count(sc.student_id) as cntfrom student_course scwhere course_code in (select c.course_code from course cJOIN professor p on c.professor_code = p.professor_code where p.professor_name = '가교수');-- 3. where 절에 subQuery 2번select count(sc.student_id) as cntfrom student_course scwhere sc.course_code in (select c.course_code from course cwhere professor_code = (select professor_code from professor pwhere professor_name = '가교수'));
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
뮤직비디오 id 1 채점 실패
해당 케이스에서 DVD 최소 크기가 2이면, DVD의 개수는 [1, 1], [1, 1], [1] 총 3개가 되서 결과가 틀어야 하는게 아닌가 싶습니다! 제가 짠 코드로는 id 1 채점이 통과되지 않아 질문드립니다. import java.util.Scanner; public class Main { public static int solution(int n, int m, int[] arr) { int answer = 10_001; int lt = 0; int rt = 0; for (int x : arr) { rt += x; } while (lt <= rt) { int mid = (lt + rt) / 2; int midValue = mid + 1; int sum = 0; int cnt = 1; for (int i = 0; i < n; i++) { if (sum + arr[i] > midValue) { cnt++; sum = arr[i]; } else { sum += arr[i]; } } if (cnt > m) { lt = mid + 1; } else { rt = mid - 1; } if (cnt == m && answer > midValue) { answer = midValue; } } return answer; } public static void main(String[] args) { 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.print(solution(n, m, arr)); } }
-
해결됨코틀린 코루틴 완전 정복
CoroutineDispatcher(Default, IO)의 limitedParallelism 관련 질문
안녕하세요. 강사님코루틴 강의를 1번 완강하고, 최근에는 전체적으로 강의를 복습을 하고 있습니다.복습을 하다가 CoroutineDispatcher의 limitedParallelism 에 대해 몇가지 궁금한 점이 생겨서 질문을 남기게 됐습니다.Dispatchers.Default 관련Dispatchers.Default의 스레드풀 수를 넘어서는 숫자 혹은 스레드풀 수에 딱 맞게 스레드 수를 지정하여 limitedParallelism 함수를 실행하는 경우,Dispatchers.Default의 모든 스레드들은 제가 지정한 해당 작업을 처리하기 위해 계속 작업을 하고, 해당 작업이 시작된 이후에 Dispatchers.Default로 지정하여 실행한 코루틴 작업들은 제가 지정한 작업이 끝나기 전까지는 모두 대기하게 되는 것인가요??예를 들어, CPU 코어가 4개인 컴퓨터라면 Dispatchers.Default의 스레드 풀에 들어있는 스레드 수는 4개가 될테고, 해당 상황에서 Dispatchers.Default.limitedParallelism(4) 혹은 스레드가 몇개 있는지 몰라 Dispatchers.Default.limitedParallelism(8) 이렇게 지정하는 경우에아래 코드를 기준으로 하면 제가 먼저 시킨 작업(superCpuIntensiveTask())이 끝나기 전에는 lightCpuIntensiveTask()는 실행되지 않는 것일까요?(※ 멀티 스레드 작업이기 때문에 아래의 lightCpuIntensiveTask()가 먼저 실행될 가능성도 있지만 아주 재수가 나쁘게 superCpuIntensiveTask()가 먼저 실행이 된다면 어떻게 되는지가 궁금합니다)// CPU 코어가 4개인 컴퓨터 fun main() = runBlocking { launch(Dispatchers.Default.limitedParallelism(8)) { superCpuIntensiveTask() } launch(Dispatchers.Default) { lightCpuIntensiveTask() } println("Done") } 1번과 비슷한 질문입니다. CPU 코어가 4개인 컴퓨터에서 Dispatchers.Default.limitedParallelism를 여러번 사용한 경우, 코드상으로 보면 사용해야 하는 스레드의 수가 전체 스레드풀 수를 넘어서는 숫자가 되는데 이 경우에는 어떻게 스레드를 나눠서 사용하는 걸까요 ?// CPU 코어가 4개인 컴퓨터 fun main() = runBlocking { launch(Dispatchers.Default.limitedParallelism(3)) { superCpuIntensiveTask() } launch(Dispatchers.Default.limitedParallelism(3)) { superCpuIntensiveTask2() } launch(Dispatchers.Default.limitedParallelism(2)) { CpuIntensiveTask() } println("Done") }Dispatchers.IO 관련Dispatchers.IO.limitedParallelism를 사용하면 새로운 Thread 집합을 만든다고 말씀해주셨습니다. 그림에서 표현해주신 것처럼 기존에는 개별로 존재하는 Thread들을 새로 그룹으로 묶어낸다고 이해를 하면 되는 것일까요 ?? Dispatchers.IO.limitedParallelism으로 묶여있던 Thread들은 해당 코루틴이 끝나면 다시 그룹이 풀리는 것일까요 ??만약에 Dispatchers.IO.limitedParallelism를 많이 사용하여 이미 기존의 스레드들 모두가 집합으로 구성이 되어있는 경우에는 신규로 집합을 만들 수가 없는 경우에는 해당 Dispatchers.IO.limitedParallelism 요청이 어떻게 되는지 궁금합니다.limitedParallelism의 Thread 수 지정해당 코드와 같이 Dispatchers.Default.limitedParallelism(4) Thread 수를 지정해야 할때, 어떤 기준으로 어떻게 Thread 수를 지정해야 좋을까요 ?? 강사님만의 팁이 있으시면 공유가 가능하실까요??어떻게 수를 정해서 넣어야 할지 감이 잘 잡히지 않습니다. 😢1번과 관련된 질문입니다. Thread 수를 지정할 때 현재 Thread Pool에 존재하거나 남아있는 쓰레드가 몇개인지 충분히 고려를 하면서 코드를 짜야할까요 ??실수로 스레드 풀의 전체 Thread 수를 넘어선 요청을 하게 되면 어떻게 되는지 궁금합니다. 질문이 많아서 정말 죄송합니다. 🙇♂🙇♂🙇♂
-
해결됨[코드캠프] 훈훈한 Javascript
강의 내용 PPT 제공
혹시 이 강의에서 쓴 ppt나 pdf파일은 제공 못받을까요 ..?
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
예제폴더의 경로와 영상의 경로가 너무나도 다릅니다
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. (https://www.inflearn.com/questions/992407/comment/281901)[질문 하기]
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
dart run build_runner build 명령어 오류
dart run build_runner build 명령어를 Terminal에서 실행하면, "dart : 'dart' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오."라는 오류가 발생하며 실행되지 않습니다. 어떻게 해결할 수 있을까요?
-
해결됨친절한 블렌더 - [LV.2] 모델링 연습
바닥 4분에 어떤 부분을 선택해야 할지 모르겠어요!
4분 40초 부분에 기존 다른 2개의 강의에서도 중요하게 다뤘다고 하는 그 부분이요!제가 한글버전에 선생님처럼 원모양이 아닌 목록(?)처럼 떠서 뭘 누르는지 모르겠더라고요. 혹시 한글로 뭘 눌러야하는지 알려주실 수 있을까요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
section12에서 존재하지 않는다는 얼럿이 뜹니다.
강의 재밌게 잘 들었습니다!다름아니오라 감정 일기장 실습 중 section12에서 궁금한 것이 생겼습니다생성된 일기를 삭제하면 "일기를 정말 삭제할까요? 다시 복구되지 않아요!" 컨펌 다이얼로그가 나타나는 건 잘됩니다.근데 ok 버튼을 클릭하면 바로 home 페이지로 이동하지 않고"존재하지 않는 일기입니다."라는 얼럿 다이얼로그가 그 다음으로 뜨고나서 ok 버튼을 클릭해야 home 페이지로 이동하게 됩니다.올려주신 정환님의 깃헙 소스 파일을 다운받아 실행시키면 이런 문제는 발생하지 않아서 어디를 고쳐야할지 막막합니다.제 소스 코드는 링크에 달아두었습니다.답변해주셔서 감사합니다!
-
해결됨디자인 시스템 with 피그마
깃허브 sync 오류
안녕하세요!! 현재 핸드오프 절차중인데, 혹시 이 부분에서 어떤 솔루션이 있을 수 있을까요?
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
싱글톤 매니저와 씬
만약에 로딩씬에서온갖 싱글턴 매니저를 초기화한 후메인씬으로 넘어가는 로직을 만든 경우,매니저 오브젝트들이 전부 로딩씬에 배치해서 메인씬에서 개발할때는 Hierarchy 창에 아무것도 안보이고, 개발 모드에 들어가도 로딩씬을 거치지 않으니 아무 매니저도 안생길것 같은데, 이럴때는 어떻게 해결할수 있나요?
-
해결됨쉽게 설명하는 AWS 기초 강의
강의 자료 중 오탈자 제보
800명이 넘는 AWS 강의실 오픈채팅방에 오시면 더 좋은 답변을 실시간으로 받아보실 수 있습니다.질문내용은 상세하고 자세하게 부탁드립니다.예시 : "Amazon EC2의 t2.micro 타입으로 Amazon Linux 2023타입으로 퍼브릭 서브넷에 프로비전 했습니다. 키페어와 같이 프로비전해서 SSH로 접속하고 싶은데 접속 요청시 Timeout이 발생합니다. 어디를 확인하면 될까요?" SQS Demo 강의 자료 중 userdata 파일의 s3 cp 커맨드라인에 &&가 빠져있어서 에러나네요
-
미해결홍정모의 따라하며 배우는 C++
컨테이너 클래스 IntArray 과제 피드백 요청
안녕하세요 10.6 컨테이너 클래스 강의에 IntArray 구현해보았는데 피드백 요청드립니다.잘못된 곳이라던가 좀 더 공부가 필요한 부분 지적해주시면 너무 감사드립니다.#include <iostream> #include <initializer_list> class IntArray { private: int m_length = 0; int* m_data = nullptr; public: IntArray(const std::initializer_list<int> number) { m_length = number.size(); m_data = new int[m_length]; int count = 0; for (auto& arr : number) { if (count < m_length) { m_data[count] = arr; ++count; } } } IntArray(const IntArray& copy) { m_length = copy.m_length; m_data = new int[m_length]; for (int i = 0; i < m_length; i++) m_data[i] = copy.m_data[i]; std::cout << "복사 생성자 호출" << std::endl; } ~IntArray() { delete[] m_data; std::cout << "메모리 해제" << std::endl; } void reset() { if (m_data != nullptr) { m_length = 0; delete[] m_data; m_data = nullptr; } } void resize(const int& size) { int* temp_data = new int[size]; for (int i = 0; i < size; i++) { temp_data[i] = m_data[i]; if (i >= m_length) { temp_data[i] = 0; } } delete[] m_data; m_length = size; m_data = temp_data; } void insertBefore(const int& insert, const int& before) { if (before < 0 || before > m_length) { std::cout << "배열의 크기 확인" << std::endl; return; } int* temp_data = new int[m_length + 1]; for (int i = 0, j = 0; i < m_length + 1; i++) { if (i == before) { temp_data[i] = insert; } else { temp_data[i] = m_data[j++]; } } delete[] m_data; m_data = temp_data; m_length++; } void remove(const int& number) { if (number < 0 || number > m_length) { std::cout << "배열의 크기 확인" << std::endl; return; } int* temp_data = new int[m_length - 1]; for (int i = 0, j = 0; i < m_length; i++) { if (i != number) temp_data[j++] = m_data[i]; } delete[] m_data; m_data = temp_data; m_length--; } void push_back(const int& number) { int* temp_data = new int[m_length + 1]; for (int i = 0; i < m_length; i++) temp_data[i] = m_data[i]; temp_data[m_length] = number; delete[] m_data; m_data = temp_data; m_length++; } friend std::ostream& operator << (std::ostream& out, const IntArray& arr) { for (int i = 0; i < arr.m_length; i++) { out << arr.m_data[i] << " "; } return out; } }; int main() { IntArray my_arr{ 1, 3, 5, 7, 9 }; my_arr.insertBefore(10, 1); std::cout << my_arr << std::endl; my_arr.remove(3); std::cout << my_arr << std::endl; my_arr.push_back(13); std::cout << my_arr << std::endl; }
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
강의 로드맵이 궁금합니다
어나더클래스 1,2,3과 대세는 쿠버네티스 그리고 HELM편 차이가 있나요? 어나더 클래스와 다른 강의 일까요?로드맵 순서가 있는지 여쭤봅니다
-
미해결데이터 분석을 위한 판다스: 기초부터 데이터 분석까지
null편에서..
강사님 강의 열심히 보고 있습니다. null편에서요 titanic.sum()에서 오류가 나요, 강사님께서는 오류가 안났는데...다른 방법이 있을까요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
구조 개선하기
@EnableWebSecurity @Configuration public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http, HandlerMappingIntrospector introspector) throws Exception{ http .addFilterAt(authorizationFilter(introspector), AuthorizationFilter.class) .formLogin(Customizer.withDefaults()) .csrf(AbstractHttpConfigurer::disable); return http.build(); } @Bean public AuthorizationFilter authorizationFilter(HandlerMappingIntrospector introspector){ List<RequestMatcherEntry<AuthorizationManager<RequestAuthorizationContext>>> mappings = new ArrayList<>(); RequestMatcherEntry<AuthorizationManager<RequestAuthorizationContext>> requestMatcherEntry1 = new RequestMatcherEntry<>( new MvcRequestMatcher(introspector, "/user"), AuthorityAuthorizationManager.hasAuthority("ROLE_USER")); RequestMatcherEntry<AuthorizationManager<RequestAuthorizationContext>> requestMatcherEntry2 = new RequestMatcherEntry<>( new MvcRequestMatcher(introspector, "/db"), AuthorityAuthorizationManager.hasAuthority("ROLE_DB")); RequestMatcherEntry<AuthorizationManager<RequestAuthorizationContext>> requestMatcherEntry3 = new RequestMatcherEntry<>( new MvcRequestMatcher(introspector, "/admin"), AuthorityAuthorizationManager.hasAuthority("ROLE_ADMIN")); RequestMatcherEntry<AuthorizationManager<RequestAuthorizationContext>> requestMatcherEntry4 = new RequestMatcherEntry<>( AnyRequestMatcher.INSTANCE, // default strategy = AuthenticatedAuthorizationStrategy new AuthenticatedAuthorizationManager<>()); mappings.add(requestMatcherEntry1); mappings.add(requestMatcherEntry2); mappings.add(requestMatcherEntry3); mappings.add(requestMatcherEntry4); RequestMatcherDelegatingAuthorizationManager manager = RequestMatcherDelegatingAuthorizationManager.builder() .mappings(maps -> maps.addAll(mappings)).build(); return new AuthorizationFilter(manager); } @Bean public UserDetailsService userDetailsService(){ UserDetails user = User.withUsername("user").password("{noop}1111").roles("USER").build(); UserDetails db = User.withUsername("db").password("{noop}1111").authorities("ROLE_DB").build(); UserDetails admin = User.withUsername("admin").password("{noop}1111").roles("ADMIN","SECURE").build(); return new InMemoryUserDetailsManager(user, db, admin); } }필터에 직접 RequestMatcherDelegatingAuthorizationManager를 넣는 방식으로 개선해 봤습니다 처음에는 RequestMatcherDelegatingAuthorizationManager -> RequestMatcherDelegatingAuthorizationManager 구조로 바꾸려고 했는데 access()에는 AuthorizationManager<RequestAuthorizationContext>만 가능해서 AuthorizationManager<HttpServletRequest>인 RequestMatcherDelegatingAuthorizationManager를 바로 못 넣더라구요 그래서 필터를 생성하고 필터 생성자로 RequestMatcherDelegatingAuthorizationManager를 넣는 방식을 사용했습니다
-
미해결비전공자도 이해할 수 있는 AWS 입문/실전
도메인을 구입후에 호스팅 영역의 레코드를 전부 삭제하였습니다.
안녕하세요 강사님. 도메인을 구입후에 ec2에 연결 후 실습을 마무리하고 비용이 나가지 않게 여러 작업들을 순차적으로 종료하는 과정속에서 제가 실수로 호스팅 영역 또한 삭제를 해야하는 줄 알고 모든 레코드를 전부 삭제하였습니다..... 이런 경우에 다시 호스팅 영역에 레코드를 어떻게 생성해야 정상적으로 기존에 구매하였던 도메인을 이용하는데 문제가 없을지 궁금합니다 ㅠㅠ