묻고 답해요
163만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결2시간으로 끝내는 코루틴
코루틴을 잘 사용하고 있는지 궁금합니다.
강사님 강의를 듣고 배치 단위로 요청을 가져와 Redis 서버에서 작업을 처리하는 부분에 코루틴을 적용하려고 합니다. 강의를 통해 최소한의 스레드로 여러 코루틴을 실행해야 코루틴을 극대화할 수 있다고 이해했습니다. n개의 요청은 모두 독립적이며 배치 단위로 가져온 이유는 1개의 스레드로 여러 코루틴을 실행하기 위함입니다. Redis는 마스터에서만 작업이 가능하므로 요청을 보내고, 응답받아 후속 처리하는 부분을 Redis 서버로 요청 (코루틴1)Redis 서버로부터 응답받아 후속 처리 (코루틴2)로 분리했습니다.1개의 스레드에서 여러 코루틴을 동작시키기 위해 이런 기준으로 코루틴의 중단 지점을 생성하는 것이 적절한지 궁금합니다. 또한 n개의 요청을 모두 Redis 서버로 보낸 후 응답 받는 것이 아니라응답을 받고 후속 처리가 가능한 요청은 ‘모든 요청을 Redis 서버로 전달했다는 여부와 상관없이’ 후속처리를 하기 위해 다음과 같이 코드를 작성했습니다. coroutineScope { val jobs = userIds.map { userId -> async { // main 스레드가 처리 val result = 레디스 접근 메서드 (RedisTemplate) Pair(userId, result) } } jobs.forEach { job -> launch(Dispatchers.IO) { val (userId, status) = job.await() // 응답에 대한 후속 처리 // 결과마다 다른 DefaultDispatcher-worker 가 처리 } } }위와 같이 작성하면 Redis로 요청을 보내는 부분은 1개의 main스레드가 처리하지만, 후속 처리는 결과마다 다른 DefaultDispatcher-workder가 처리합니다. 이는 결과마다 다른 스레드가 처리하는 것이 맞다면 이 코드는 코루틴을 제대로 사용하지 못하고 있다고 생각하는데 제 생각이 맞는지 궁금합니다.coroutineScope { launch { for(userId in userIds) { val result = 레디스 접근 메서드 channel.send(Pair(userId, result)) } channel.close() } launch { for(result in channel) { // 응답에 대한 후속 처리 } } }위와 같이 작성하면 1개의 main 스레드가 모든 작업을 처리합니다. 이렇게 작성해야 코루틴을 제대로 사용하는 것이 맞는지 궁금합니다. 강의 잘 들었고 감사합니다!
-
미해결[리뉴얼] 처음하는 파이썬 머신러닝 부트캠프 (쉽게! 실제 캐글 문제 풀며 정리하기) [데이터분석/과학 Part2]
자료공유를 받으려고 하는데 에러가 납니다.
등록 중 오류 발생: 권한 부여 중 오류가 발생했습니다: <HttpError 400 when requesting https://www.googleapis.com/drive/v3/files/1s9q_Rsc3ze_i6NG-g4VGTIq4eGDeILab/permissions?fields=id&alt=json returned "Bad Request. User message: "Sorry, you cannot share with that many individual recipients. You can share with more people by using Google Groups."". Details: "[{'message': 'Bad Request. User message: "Sorry, you cannot share with that many individual recipients. You can share with more people by using Google Groups."', 'domain': 'global', 'reason': 'invalidSharingRequest'}]"> 자료공유 폼에 작성후 등록하면 이러한 에러가 발생합니다
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
paginate() 에 대한 질문입니다.
void paginate({ int fetchCount = 20, // 추가로 데이터 더 가져오기 // true = 더 가져오기 // false = 새로고침 bool fetchMore = false, // 강제로 다시 로딩하기 // true - CursorPaginationLoading() bool forceRefetch = false, }) async { // 5가지 가능성 // State의 상태 // 1) CursorPagination - 정상적으로 데이터가 있는 상태 // 2) CursorPaginationLoading - 데이터 로딩중(현재 캐시 없음 // 3) CursorPaginationError = 에러가 있는 상태 // 4) CursorPaginationRefetching = 첫번째 페이지부터 다시 데이터를 가져올때 // 5) CursorPaginationFetchMore - 추가 데이터를 paginate 해오라는 요청을 받았을때 // 바로 반환하는 상황 // 1) hasMore == false(기존 상태에서 이미 다음 데이터가 없다는 값을 들고 있다면) // 2) 로딩중 - fetchMore : true // fetchMore : false - 새로고침의 의도가 있음. try { if (state is CursorPagination && !forceRefetch) { final pState = state as CursorPagination; if (!pState.meta.hasMore) { return; } } final isLoading = state is CursorPaginationLoading; final isRefetching = state is CursorPaginationRefetching; final isFetchingMore = state is CursorPaginationFetchingMore; if (fetchMore && (isLoading || isRefetching || isFetchingMore)) { return; } // PaginationParams 생성 PaginationParams paginationParams = PaginationParams( count: fetchCount, ); // fetchMore if (fetchMore) { final pState = state as CursorPagination; state = CursorPaginationFetchingMore( meta: pState.meta, data: pState.data, ); paginationParams = paginationParams.copyWith( after: pState.data.last.id, ); } final resp = await repository.paginate( paginationParams: paginationParams, ); if (state is CursorPaginationFetchingMore) { final pState = state as CursorPaginationFetchingMore; // 기존 데이터에 새로운 데이터 추가 state = resp.copyWith(data: [ ...pState.data, ...resp.data, ]); } else { state = resp; } } catch (e) { state = CursorPaginationError(message: '데이터를 가져오지 못했습니다.'); } } 이부분이 있는데왜 하위의 fetchMore의 else문에서 또 조건을 걸어놓는지 궁금합니다. // fetchMore if (fetchMore) { final pState = state as CursorPagination; state = CursorPaginationFetchingMore( meta: pState.meta, data: pState.data, ); paginationParams = paginationParams.copyWith( after: pState.data.last.id, ); } // 데이터를 처음부터 가져오는 상황 else { // 만약 데이터가 있는 상황이라면 기존 데이터 보존한 채로 Fetch(API 요청)을 진행 if (state is CursorPagination && !forceRefetch) { final pState = state as CursorPagination; state = CursorPaginationRefetching( meta: pState.meta, data: pState.data, ); } else { state = CursorPaginationLoading(); } }
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
원 핫 인코딩 질문
X_train과 X_test 데이터를 합친 후 원 핫 인코딩을 진행한 다음 다시 데이터를 분리하는 과정을 거쳤습니다. get_dummies 사용 시, 자동으로 범주형 데이터만 선택하여 원 핫 인코딩하고 전체 데이터를 반환한다고 들었는데원 핫 인코딩 후 데이터를 분리하여 각각 출력을 해봤는데, 기존에 있던 수치형 열들 (age, fnlwgt 등등) 다 사라지고 인코딩된 문자형 열들만 남아있더라구요.원래 원 핫 인코딩을 하면 수치형 열들은 다 사라지나요? X_train 데이터라 전체 열들이 다 있어야 될거같은데 인코딩된 문자열만 있어서 질문드립니다!
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
파일경로 출력 시도 시 결과 리턴이 되지 않습니다. _자체 해결 완료
아래는 당초 제가 질문한 내용인데, 한참 헤매다가 2가지 문제점이 있었던 걸 찾았고, 해결되었습니다. 문제1. import os 치는 걸 빼먹음.아래에서 os.listdir()이나 os.getcwd() 또는 os.path.join() 등을 사용하려면 import 필요한데,import os 치는 거 빼먹어서 아래 for문이 제대로 작동안해서 한참 헤맸음. 문제2. ... 이 나타났을 때, 엔터를 한 번 더 치지 않았음.import os 치는 걸 추가하고 나서도 작동이 안되어 더 헤맸는데..여기서 엔터 한 번 쳐줘야 결과값이 출력되는 거였음. 강사님께.위 2개 문제를 찾아서 해결하긴 했는데,혹시 강의 내용 보완을 한 두 줄 보완이 가능하다면강의 본문 또는 강의 맨 하단에 위 내용 한 줄씩만 언급해 주시면, 저같은 왕초보가 어이없게 헤매는 걸 줄여줄 수 있을 거 같습니다. ㅜ조심스레 의견 드려봅니다. 아래는 해결된 후 정상작동 화면 아래는 당초 질의 내용입니다. 섹션1 중에서 "[응용] 폴더에 있는 한/글을 모두 열기" 강의내용 실습 관련입니다. 그럼 이제 for문을 사용해볼게요.한/글 문서를 열지는 말고, 완성된 파일경로를 출력만 해 볼까요?에서 설명에 따라,for i in os.listdir():print(os.path.join(os.getcwd(), i))위의 코드 2줄을 1줄씩 입력하고 엔터를 누르면,강사님의 움짤 동영상에서는 아래와 같이 파일들의 경로가 쭉 리턴됩니다. (캡처 떠서 첨부한 것임)그런데 제가 동일하게 진행하면 파일들의 경로가 리턴되지 않고 파이썬 콘솔이 계속 멈춰있는 상태입니다. (아래)왜 실행 결과가 다른지 궁금하고, 해결책을 알고 싶습니다. [응용] 폴더에 있는 한/글 파일을 모두 열기 [응용] 폴더에 있[응용] 폴더에 있는 한/글 파일을 모두 열기는 한/글 파일을 모두 열기
-
미해결스프링 핵심 원리 - 기본편
logback.xml 설정파일을 자동으로 읽을수있는 이유가 궁금합니다.
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]springboot 3.xx 이상에선 로그설정을 바꿔야되서 resource에 logback.xml을 추가해서 로그를 볼수있게 해결하는 방법이 왜 작동하는건지 궁금합니다. 예를들어 genericxmlapplication으로 ApplicationContext 컨테이너에 등록한다면 해당 파일의 경로를 입력해서 bean 구성파일을 넣는데 Annotation~Context일지라도 xml로 설정정보를 넘겨주는것도 의문이고, 애초에 경로지정도 따로 하지않았는데 어디에서 어떻게(어느 단에서) 자동으로 설정이 되는건지 궁금합니다. 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
단순하고 실용적인 컨트롤러 v4
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.FrontControllerServletV4Map<String, Object> model = new HashMap<>(); //추가 String viewName = controller.process(paramMap, model);//모델뷰를 다 여기에 넣음여기서Map<String, Object> model = new HashMap<>(); /model.put()을 해주지않았는데model에 파라미터와 값들이 비어있지않나요? model을 파라미터로 전달해주는게 의미가있나요?:
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
2023년 3회 코드해석 문제 강의
안녕하세요2023년 3회 코드해석 문제 인강 수강중입니다.올려주신 기출문제와 강의 자료에서 누락? 인지 파일이 조금 다르네요확인부탁드립니다.감사합니다.
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
화면이 안바껴요ㅠ
/* Tab Content */ .tab-inner { width: 97%; margin: auto; } .btn {} .btn span { border: 1px solid #000; display: inline-block; width: 120px; text-align: center; padding: 3px; border-radius: 5px 5px 0 0; margin-right: -6px; background-color: #ddd; cursor: pointer; border-bottom: none; margin-bottom: -1px; } .btn span.active { background-color: #fff; } .tabs {} .tabs div { border: 1px solid #000; height: 155px; padding: 0 10px; } .tab1 {} .tab1 a { display: block; padding: 3px; border-bottom: 1px solid #333; } .tab1 a:last-child { border-bottom: none; } .tab1 a b { float: right; font-weight: normal; } .tab2 { display: none; text-align: center; } .tab2 img { margin-top: 25px; width: 110px; } // Tab Content $('.btn span:first-child').click(function(){ $('tab1').show() $('tab2').hide() $(this).addClass('active') $(this).siblings().removeClass('active') }) $('.btn span:last-child').click(function(){ $('tab2').show() $('tab1').hide() $(this).addClass('active') $(this).siblings().removeClass('active') })이렇게 작성하였는데 갤러리를 눌러도 공지사항 내용이 뜹니다ㅜ
-
미해결
코테 준비 기간(노베이스)
안녕하세요 현재 쉽게 배우는 자료구조 with 파이썬으로 자료구조를 공부하고 있는 학생입니다.18일까지 마무리짓고 남은 기간은 쉽게 배우는 알고리즘(책)과 나동빈님 강의로 알고리즘의 이론과 코드를 공부할 계획입니다. 다음달에는 '이것이 자료구조 + 알고리즘이다' 라는 책으로 C언어로 알고리즘을 한번 더 공부할 계획입니다.이유는 C언어는 Python과는 별개로 메모리 할당과 삭제를 해야 해서 구현에 좀 더 어려움이 있는 것 같고 이후 운영체제와 네트워크 과목을 배울 때 C언어로 코드를 짜야 하니 도움이 될 것 같아서입니다. 이렇게 되면 내년 2월까지 12월 ~ 2월, 아니면 12월까지 C로 공부를 한다고 치면(사실 개념을 이해해도 코드를 조금만 바꿔 놓으면 이해하기가 어렵습니다...ㅠㅠ) 실질적으로 백준이나 프로그래머스 문제를 풀어보는 건 2달 남짓인데... 하루 1 ~ 2문제 정도 문제를 풀 수 있다고 가정할 때(시간은 3시간 ~ 4시간 정도 쓸 수 있을 것 같습니다. 오전 2시간, 오후 2시간) 보통의 학생이 중견 ~ 대기업의 코테를 뚫을 수 있는 실력을 갖출 수 있을까요..? 운영체제와 네트워크 과목에서도 자료구조와 알고리즘이 중요하다고 들었는데 어느 정도로 실력이 갖추어져야 하는 것인지... 아직 감이 잘 잡히지 않습니다... 처음 공부하는 학생에게 알고리즘/코테 준비법, 이외에도 공부법에 대해 추천해 주시면 감사하겠습니다. 남은 4개월 반이란 시간동안 전공 과목 공부도 병행해야 해서 최대 4시간이 한계인 것 같습니다...
-
미해결코틀린 코루틴 완전 정복
공유 스레드풀에 대하여 질문 있습니다
안녕하세요. 1) "미리 정의된 CoroutineDispatcher - 1. Dispatchers.IO, Dispatchers.Default" 강의 중 마지막 부분에서 Dispatchers.IO와 Dispatchers.Default가 사용하는 스레드의 이름이 동일한 이유는 공유 스레드풀 때문이라고 하셨는데, 이 부분이 이해가 잘 가지 않습니다.이것이 중요한 이유가 각각의 Dispatcher가 사용하는 스레드가 실제로는 다름에도 불구하고, 이름은 동일하기 때문에 헷갈리면 안되기 때문인가요? 제가 강조하신 부분을 잘 이해한건지 모르겠습니다.2) LimitedParallelism은 코루틴 사용 시 모든 부분에 적용해야 하는 것인가요? 아니면 특정 경우에만 사용하면 되는 것인가요?3) Code3-1~3-4를 실행할 때 어떤 때는 스레드 이름이 DefaultDispatcher-worker-1,2,3으로 뜨지만 또 어떤 때는 1,2,1 또는 1,2,4 또는 1,2,5 이런식으로 뜨는데 이유가 무엇인가요?감사합니다!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
Field초기화
Field를 초기화를 Game의 생성자가 아닌 Init에서 초기화하는 이유가 뭔가요? 다른 이유가 없다면 Game의 생성자에서 초기화해도 되는건가요?
-
해결됨시니어 면접관이 알려주는 개발자 취업과 이직 한방에 해결하기 [이론편]
기술 스택에 대한 질문
안녕하세요 신입 입장에서 채용공고를 보다 보면 사용하는 기술에 대해 나열되어 있는 것을 볼 수 있는데요. 만약에 지원을 하려면 해당 기술 스택에 대해 자세히 다 알고 있어야 될까요.?
-
해결됨[리뉴얼] 타입스크립트 올인원 : Part2. 실전 분석편
declare module시 import 위치
import * as react from "react" //외부 declare module "react-native-keyboard-aware-scroll-view" { import * as react from "react" //declare 내부 }declare module시에는 import를 {}안에 써주는게 컨벤션인가요?만약 하나의 d.ts 파일에서 같은 react를 여러번 import 하게된다면 외부에서 한번만 import 시켜줘도 되는건가요?
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
두수의합 Counter 사용
안녕하세요강사님 잘 보고 있습니다!!아래와 같이 해도 괜찮을까요?감사합니다~!from collections import Counter def solution(nums, target): answer = [0]*2 dict = Counter(sorted(nums)) for i in dict: if dict[target-i] == 1: return sorted([i, target-i]) return answer
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
고난도 코드 영역 강의 영상
고난도 코드 영역 강의 영상을 시험 전에 꼭 필수로 보는 게 좋을까요? 시간이 부족해서 이제 기출문제 하는 중입니다ㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-D lower_bound 질문있습니다 :)
안녕하세요 선생님 🙂 lower_bound와 관련하여 궁금한 것이 있어서 질문드립니다. 해당 문제는 lower_bound를 이용하여 A 안에 있는 요소들 중 하나를 골라서 B에 있는 요소보다 큰 경우를 누적하여 더한 후에 출력하는 문제였습니다. 문제의 결과 값에서 lower_bound의 역할을 유추해보면, 1, 2번째 파라미터에 넣는 배열의 범위에서 3번째 파라미터에 있는 요소보다 작은 요소의 개수를 출력해주는 함수라는 것을 알 수 있었습니다. 반대로 upper_bound는 작은 요소가 아닌 큰 요소의 개수를 출력해주는 함수라는 것을 알게 되었습니다. 그렇다면, 같은 요소의 개수를 출력해주는 방법도 있을 거라고 생각하는데요, 구글을 아무리 뒤져봐도 키워드 선택을 잘못해서 그러는건지.. 관련 자료를 찾을 수 없었습니다. 혹시 이런 함수가 따로 있다면 알려주시면 도움이 많이 될 것 같습니다 :) lower_bound가 같은 경우도 처리해준다는 자료를 보긴 했는데요, 이 자료에 신뢰성이 있으려면 해당 문제에서 A와 B의 요소가 같아도 A가 B를 잡아먹을 수 있다는 조건을 만족해야 할 것 같습니다. 아래는 제가 보았던 자료의 링크입니다.https://chanhuiseok.github.io/posts/algo-55/
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
Scanner scanner = new Scanner(System.in);
[질문 내용]사용자의 입력을 받을려면Scanner scanner = new Scanner(System.in); 코드를 넣어줘야 하는데 여기서 궁금한 것은제가 만약 int i = 1; 이라고 했다면 i라는 int타입의 변수를 선언과 동시에 초기화를 했다. 라고 볼 수 있습니다.그렇다면 Scanner scanner라고 잘라서 보면 scanner변수를 선언한 것인데 그 뒤에 = new Scanner(System.in);를 붙이면scanner라는 변수로 = new Scanner(System.in);를 초기화했다. 라고 읽어도 되는 걸까요? 아니면 따로 클래스 객체를 초기화하는 것을 뭐라고 부르는 명칭이 있나요?
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
SQL응용파트 ALTER TABLE 질문있습니다!
안녕하세요 선생님, SQL응용파트에서 컬럼수정하는 문법에 대해 궁금한게 있습니다.컬럼 수정할 때 ALTER__ALTER로 수정하는데,ALTER__MODIFY로도 컬럼 수정 가능한가요?가능하다면 둘의 차이가 무엇인지 궁금합니다. -컬럼 수정 [ALTER]ALTER TABLE [테이블명]ALTER COLUMN [컬럼명] [새로운 데이터타입] -컬럼 수정 [MODIFY]ALTER TABLE[테이블명]MODIFY [컬럼명] [새로운 데이터타입] ..?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
강의중 HUD와 HPWIDGET
13강에서 HUD를 업데이트하면서 화면에 띄우는 작업을 하게되는데요,좀 궁금한 사항이 생겼습니다.기본적으로 케릭터마다 HP위젯을 가지고있는데, 만약 플레이어는 따로 HP를 가지고 있지 않게하고 HUD에 HP를 띄우는것만으로 UI를 변경하게 된다면, 플레이어쪽에서 HPBar위젯 CDO를 하지 않게 변경하고 몬스터들만 CDO를 생성하도록 변경하면 되는건가요? 그리고 이제 플레이어는 HUD를 통해서만 소유한엑터정보를 가저와서 스텟에 접근하는 방식으로 변경하면 될려나요?