묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강연장 부탁드립니다..!
안녕하세요.생각보다 자바 공부가 길어져서 이제야 AWS를 공부하게 되었는데 수강 기간이 거의 끝나가네요.송구스럽지만 수강 기간 연장을 요청 드립니다.감사합니다.
-
미해결[2024년 출제기준] 웹디자인기능사 실기시험 완벽 가이드(HTML+CSS+JQUERY)
익스텐션 설치 질문이요
시험준비자는 익스텐션 auto rename taghtml to css autocompletiomhtmltagwrapbracket pair colorizer 2indent-rainbowmaterial themehtml css supportbeautifycolor pickerliveserver 전부 설치하면 안되나요? 그리고 color picker 없으면 색깔이 안뜨는데 그러면 색이름만 적나요?
-
해결됨Flutter 중급 3편 - 의존성 주입 가이드
remote data source impl
안녕하세요. 강의 잘 보고 있습니다. remote data source impl 관련해서 질문이 있습니다. @prod @Singleton(as: CommunityRemoteDataSource) class CommunityRemoteDataSourceApiImpl implements CommunityRemoteDataSource { final _dio = Session().dio; @override Future<CommunityResponseDTO> fetchCommunities() async { Response<dynamic> response = await _dio.get('get/community/path'); final responseDto = CommunityResponseDTO.fromJson(response.data); return responseDto; } } CommunityRemoteDataSource 의 구현체 CommunityRemoteDataSourceApiImpl 를 만들어서 사용중입니다.ApiImpl 은 실제 서버와 통신중 이며,http 라이브러리 Dio를 사용하고 있습니다. 여기서 테스트를 위해 DioMock 객체를 만들어서 사용하고자 합니다. 원래 CommunityRemoteDataSourceApiImpl 에 final _dio = Session().dio; 로 싱글턴으로 dio를 내부에 객체를 생성하고 있는데 이거를 주입받는 식으로 변경하여 테스트 시만 CommunityRemoteDataSourceApiImpl(DioMock()) 을 넣는 것인지, 아니면 CommunityRemoteDataSourceApiMockImpl 를 새로 또 만드는지 궁금합니다.만약 CommunityRemoteDataSourceApiImpl(DioMock()) 로 주입을 받는 식이라면Response<dynamic> response = await _dio.get('get/community/path'); final responseDto = CommunityResponseDTO.fromJson(response.data); 해당 코드들이 Dio() 일 때, DioMock() 일 때 달라야 할 것 같은데 어떻게 처리하는 것이 맞는지 궁금합니다. 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. resolverException이 빈 ModelAndView객체를 반환하는 이유가 이해가 가지 않습니다. 왜 빈 객체를 반환하는 것인가요? 만약 객체를 반환하지 않으면 어떻게 되는 것인지 궁금합니다. 추가로,package hello.exception.resolver; import com.fasterxml.jackson.databind.ObjectMapper; import hello.exception.exception.UserException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import java.io.IOException; import java.util.HashMap; import java.util.Map; @Slf4j public class UserHandlerExceptionResolver implements HandlerExceptionResolver { private final ObjectMapper objectMapper=new ObjectMapper(); @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { try{ if(ex instanceof UserException){ log.info("UserException resolver to 400"); String acceptHeader = request.getHeader("aceept"); //헤더를 꺼냄 response.setStatus(HttpServletResponse.SC_BAD_REQUEST); // 상태코드 400으로 변경 if("application/json".equals(acceptHeader)){ log.info("Start to change json"); Map<String,Object> errorResult=new HashMap<>(); errorResult.put("ex",ex.getClass()); errorResult.put("message",ex.getMessage()); String result = objectMapper.writeValueAsString(errorResult); response.setContentType("application/json"); response.setCharacterEncoding("utf-8"); response.getWriter().write(result); return new ModelAndView(); } else{ log.info("Start to text"); return new ModelAndView("error/500"); } } }catch(IOException e){ log.error("resolver ex",e); } return null; } }이렇게 작성하였는데 결과가 자꾸 text.html로 나옵니다. 로그를 찍어보니 if문이 안나오고 else문으로 나오게 됩니다. 포스트맨 출력 결과는 이렇습니다원인을 알 수 있을까요?
-
미해결Next + React Query로 SNS 서비스 만들기
MSW 오류가 발생해서 도움 부탁드립니다
서버 컴포넌트에서 Server Actions 사용하기 강의까지 그대로 따라하고 오류때문에 다시 반복해봐도 오류가 발생해서 코드 남깁니다.<SignupModal.tsx>import style from "./signup.module.css"; import { redirect, useRouter } from "next/navigation"; import { ChangeEventHandler, FormEventHandler, useState } from "react"; import BackButton from "./BackButton"; export default function SignupModal() { const submit = async (formData: FormData) => { "use server"; if (!formData.get("id")) { return { message: "no_id" }; } if (!formData.get("name")) { return { message: "no_name" }; } if (!formData.get("password")) { return { message: "no_password" }; } if (!formData.get("image")) { return { message: "no_image" }; } let shouldRedirect = false; try { const response = await fetch( `${process.env.NEXT_PUBLIC_BASE_URL}/api/users`, { method: "post", body: formData, credentials: "include", //쿠키를 사용하여 로그인 여부를 파악하기 위함 } ); console.log(response.status); // if (response.status === 403) { // return { message: "user_exists" }; // } // 이미 유저가 존재할때 403 보내주기로 약속 console.log(await response.json()); shouldRedirect = true; } catch (err) { console.log(err); } if (shouldRedirect) { redirect("/home"); //try/catch문 안에 있으면 안됨. } }; return ( <> <div className={style.modalBackground}> <div className={style.modal}> <div className={style.modalHeader}> <BackButton /> <div>계정을 생성하세요.</div> </div> <form action={submit}> <div className={style.modalBody}> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="id"> 아이디 </label> <input id="id" name="id" className={style.input} type="text" placeholder="" required /> </div> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="name"> 닉네임 </label> <input id="name" name="name" className={style.input} type="text" placeholder="" required /> </div> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="password"> 비밀번호 </label> <input id="password" name="password" className={style.input} type="password" placeholder="" required /> </div> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="image"> 프로필 </label> <input id="image" name="image" className={style.input} type="file" accept="image/*" required /> </div> </div> <div className={style.modalFooter}> <button type="submit" className={style.actionButton}> 가입하기 </button> </div> </form> </div> </div> </> ); } ><handlers.ts>http.post("/api/users", async ({ request }) => { console.log("회원가입"); // return HttpResponse.text(JSON.stringify('user_exists'), { // status: 403, // }) return HttpResponse.text(JSON.stringify("ok"), { headers: { "Set-Cookie": "connect.sid=msw-cookie;HttpOnly;Path=/", }, }); }),>이런식으로 강의와 똑같이 작성했고, 질문글중 회원가입 코드에 Path부분 빼라고 해보셔서 해봤는데 안됩니다.실행하고, 가입하기 버튼을 눌렀을때 redirect가 안되고, 헤더 200, 페이로드는 뜨지만 미리보기, 응답이 뜨지 않습니다.그리고 에러코드에 TypeError: fetch failed<cause: Error: getaddrinfo ENOTFOUND loalhost at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:118:26) at GetAddrInfoReqWrap.callbackTrampoline (node:internal/async_hooks:130:17) { errno: -3008, code: 'ENOTFOUND', syscall: 'getaddrinfo', hostname: 'loalhost' }}>이런 에러가 떠서 검색도 해봤지만 해결이 안되서 질문 드립니다.
-
미해결파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
문제를 풀며 가장 자연스럽게 익숙해지는 파이썬 기본: 문자열,리스트,조건문 활용1 공부하다 문의요
중간쯤에 나오는 문제인데요(1번)data1=int(input())if 100>=data1>=81: print("A")elif 80>=data1>=61: print("B")else: print("C")(2번)data1=int(input())if data1<=100 and data1 >=81: print("A")elif data1<=80 and data1>=61: print("B")else: print("C") 전 위의 1번 방식으로 풀었는데 강사님은 2번방식으로 하더라고요위의 2개가 차이가 있을까요??? 답은 동일하게 나오는데요~
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
이런 방식으로 로또 번호를 생성하는 것도 랜덤이라고 볼 수 있을까요?
void ChooseLotto(int numbers[], int count) { // 랜덤으로 1~45 사이의 숫자 6개.... 중복 없이 int lotto[45]; for (int i = 0; i < 45; i++) { lotto[i] = i + 1; } // 공을 섞는 과정 for (int i = 0; i < 1000; i++) { int randNum1 = rand() % 45; int randNum2 = rand() % 45; Swap(&lotto[randNum1], &lotto[randNum2]); } for (int i = 0; i < count; i++) { numbers[i] = lotto[i]; } }안녕하세요, 강의 잘 보고 있습니다. 저는 실습 풀이를 이렇게 했는데요.로또 추첨을 할 때 커다란 통에 공을 집어넣고 6개의 번호가 쓰인 공을 꺼낸다고 하면, 한 번 꺼낸 공은 다시 추첨기에서 나오지 않아야 한다고 생각했습니다.따라서 1~45의 값이 들어있는 배열을 선언하고, 해당 배열을 rand()와 swap()을 이용해 계속 반복하여 섞어주고, 마지막에 0번~5번 인덱스까지 6개의 수를 numbers 배열에 담아주었습니다.이런 방식으로 로또 번호를 생성하는 것도 랜덤으로 번호를 생성한 것이라고 볼 수 있을까요?
-
해결됨Flutter로 SNS 앱 만들기
댓글 입력 후 FeedCardWidget의 FeedCcount 업데이트 관련
안녕하세요 댓글 입력 후 메인 화면 코멘트카운트가 업데이트 되지 않고 있습니다. CommentScreen에 callback 멤버 추가해서 하면 될것 같은데. 잘안되네요.. 도움 부탁드리겠습니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
eTag 캐시 제어
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]last-modified를 테스트 해봤을 때 캐시가 만료되어서 다시 요청을 하면은 304 상태코드를 알아서 응답했는데eTag를 사용했을 때는 알아서 304를 응답하지 않고 200을 응답하더라구요. 그래서 직접 비교를 하는데 eTag 설명에서 캐시 제어 로직을 서버에서 완전히 관리한다 라는 말이 이렇게 개발자가 직접 관리 한다는 뜻인가요? 아니면 원래 알아서 304를 반환하는데 뭔가를 잘못한 것인가요?
-
미해결모두의 한국어 텍스트 분석과 자연어처리 with 파이썬
kkma() 실행시 kernel dead 현상이 발생합니다.
선생님께서 알려주신대로.java > jpype > konlpy 설치를 마치고그 다음 진도를 진행하려 하는데kkma = Kkma()를 실행하는 순간 kernel dead 메시지가 나면서더이상 실행이 안됩니다. googling을 통해서 여러 해법을찾아 보았지만, 해결이 안되고 있는데요... 도움 부탁드립니다.jupyter_notebook의 config 파일 생성 후... buffer_size 도10000000000 으로 상향 조정하는 등의 방법을 써도 해결되지가 않습니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
yolonas augmentation
안녕하세요.배운 내용을 기반으로 yolonas를 학습해보는 과정에서 질문이 있습니다.nas에서 기본적으로 사용하고 있는 transforms 대신에 albumentations 라이브러리를 사용하고 싶은데 계속해서 image 가 없다는 에러가 뜹니다.코드를 어떻게 수정해야하는지 궁금합니다.############## 기존 학습 코드 from super_gradients.training import Trainer from super_gradients.training import dataloaders from super_gradients.training.dataloaders.dataloaders import ( coco_detection_yolo_format_train, coco_detection_yolo_format_val ) from super_gradients.training import models from super_gradients.training.losses import PPYoloELoss from super_gradients.training.metrics import ( DetectionMetrics_050, DetectionMetrics_050_095 ) from super_gradients.training.models.detection_models.pp_yolo_e import PPYoloEPostPredictionCallback from tqdm.auto import tqdm import os import requests import zipfile import cv2 import matplotlib.pyplot as plt import glob import numpy as np import random ROOT_DIR = '/home/바탕화면/test_data' train_imgs_dir = 'train/images' train_labels_dir = 'train/labels' val_imgs_dir = 'val/images' val_labels_dir = 'val/labels' classes = ['fallen', 'normal'] dataset_params = { 'data_dir':ROOT_DIR, 'train_images_dir':train_imgs_dir, 'train_labels_dir':train_labels_dir, 'val_images_dir':val_imgs_dir, 'val_labels_dir':val_labels_dir, 'classes':classes } EPOCHS = 50 BATCH_SIZE = 16 WORKERS = 8 train_data = coco_detection_yolo_format_train( dataset_params={ 'data_dir': dataset_params['data_dir'], 'images_dir': dataset_params['train_images_dir'], 'labels_dir': dataset_params['train_labels_dir'], 'classes': dataset_params['classes'] }, dataloader_params={ 'batch_size':BATCH_SIZE, 'num_workers':WORKERS } ) val_data = coco_detection_yolo_format_val( dataset_params={ 'data_dir': dataset_params['data_dir'], 'images_dir': dataset_params['val_images_dir'], 'labels_dir': dataset_params['val_labels_dir'], 'classes': dataset_params['classes'] }, dataloader_params={ 'batch_size':BATCH_SIZE, 'num_workers':WORKERS } ) train_params = { 'silent_mode': False, "average_best_models":True, "warmup_mode": "linear_epoch_step", "warmup_initial_lr": 1e-6, "lr_warmup_epochs": 3, "initial_lr": 5e-4, "lr_mode": "cosine", "cosine_final_lr_ratio": 0.1, "optimizer": "Adam", "optimizer_params": {"weight_decay": 0.0001}, "zero_weight_decay_on_bias_and_bn": True, "ema": True, "ema_params": {"decay": 0.9, "decay_type": "threshold"}, "max_epochs": EPOCHS, "mixed_precision": True, "loss": PPYoloELoss( use_static_assigner=False, num_classes=len(dataset_params['classes']), reg_max=16 ), "valid_metrics_list": [ DetectionMetrics_050( score_thres=0.1, top_k_predictions=300, num_cls=len(dataset_params['classes']), normalize_targets=True, post_prediction_callback=PPYoloEPostPredictionCallback( score_threshold=0.01, nms_top_k=1000, max_predictions=300, nms_threshold=0.7 ) ), DetectionMetrics_050_095( score_thres=0.1, top_k_predictions=300, num_cls=len(dataset_params['classes']), normalize_targets=True, post_prediction_callback=PPYoloEPostPredictionCallback( score_threshold=0.01, nms_top_k=1000, max_predictions=300, nms_threshold=0.7 ) ) ], "metric_to_watch": 'mAP@0.50:0.95' } trainer = Trainer( experiment_name='yolo_nas_m', ckpt_root_dir='checkpoints' ) model = models.get( 'yolo_nas_m', num_classes=len(dataset_params['classes']), pretrained_weights="coco" ) trainer.train( model=model, training_params=train_params, train_loader=train_data, valid_loader=val_data ) ############## 기존 학습 코드에서 변경 시킨 부분 train_data = coco_detection_yolo_format_train( dataset_params={ 'data_dir': dataset_params['data_dir'], 'images_dir': dataset_params['train_images_dir'], 'labels_dir': dataset_params['train_labels_dir'], 'classes': dataset_params['classes'], 'transforms' : [ A.CLAHE(p=1.0), A.RandomBrightnessContrast(p=1.0), A.RandomGamma(p=1.0), ] }, dataloader_params={ 'batch_size':BATCH_SIZE, 'num_workers':WORKERS } ) val_data = coco_detection_yolo_format_val( dataset_params={ 'data_dir': dataset_params['data_dir'], 'images_dir': dataset_params['val_images_dir'], 'labels_dir': dataset_params['val_labels_dir'], 'classes': dataset_params['classes'], 'transforms' : [ A.CLAHE(p=1.0), A.RandomBrightnessContrast(p=1.0), A.RandomGamma(p=1.0), ] }, dataloader_params={ 'batch_size':BATCH_SIZE, 'num_workers':WORKERS } )
-
미해결[C#/.NET 8.0]어서와, Blazor Server는 처음이지?
삭제 후, GRID 재조회
안녕하세요! 섹션2 수업 마무리한 상태인데,DELETE 후, GRID를 재조회하는 방법이 없어서, 질문드립니다!구글링해서 해봐도 GRID 업데이트가 안되더라구요..
-
미해결따라하며 배우는 HTML, CSS
도표 자료 (해결)
강의를 하시면서 쓰시는 자료는 어디서 볼 수 있을까요?? 옆에 띄워놓고 같이 보면서 강의를 들을려고 하는데, 강의에서 쓰시는 도표자료는 없더라고요!!
-
미해결김영한의 실전 자바 - 기본편
프로젝트 만들때 질문
안녕하세요 프로젝트 만들때 다른점이 있어 질문드립니다.New Project를 눌렀을때 창이 1번과 같이 나오고 그대로 만들었을때강사님의 프로젝트와 다르게 src 폴더 안에 Main이 없는데 그대로 진행해도 문제가 없는지 궁금합니다
-
미해결[2024년 출제기준] 웹디자인기능사 실기시험 완벽 가이드(HTML+CSS+JQUERY)
시험장에서 단축키 설정
시험장에서 프로그램에 단축키설정 원하는키로 세팅 바꿔줘야 되나요?
-
미해결문과생도, 비전공자도, 누구나 배울 수 있는 파이썬(Python)!
아나콘다 m칩 맥북 설치 오류
이번에 맥북으로 바꾸게 되어서 아나콘다 다시 설치하고 강의 다시 들으려하는데요. 아나콘다 설치에 따로 m칩 전용으로 아나콘다 다운 받는게 있드라고요. 근데 그 파일은 영상에 나온데로 해도 cannot execute binary file 이런 얘기와 함께 설치가 안되더군요.. 어찌할까요. 혹여나 그냥 설치를 하면 조금 다른 점이 있을까 답변을 기다립니다.
-
미해결스프링 부트 - 핵심 원리와 활용
username만 다르게 뜹니다.
프로필 적용할 때부터 이렇게 username은 다르게 뜨는데 어떻게 해야될까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. PostMan으로 구동 시 Json으로 반환하지 않고 기존에 설정한 것이 자꾸 불러와집니다. 로그에는 errorpage 500이라고 찍히고 error-page/500이 전달되는데 뭐가 문제일까요?
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
Kafka Offset 및 LAG 관련 질문
안녕하세요. 강의 수강 중 궁금한점이 있어 문의드립니다. [구성]파티션 - 5개컨슈머 - 5개 [문의]1. 컨슈머 offset과 lag 관련 문의프로듀서에서 메시지를 생성해서 Kafka로 전송하면 Offset값이 2씩 증가합니다.CURRENT-OFFSET - 2증가 (7 -> 9)LOG-END-OFFSET - 2증가 (8 -> 10)메시지가 소비되고 나면 LAG은 항상 1이 유지되고 있는데 어떤 부분을 체크해 봐야할까요? (추가확인 : LAG이 항상 1이 유지되는데 kafka-console.consumer.sh로 확인해보면 메시지는 없는데 LAG이 0으로 변경됩니다.) 2. 소비된 메시지가 다시 소비되는 현상프로듀서로 메시지 생성 후 컨슈머에서 메시지를 소비하였는데 한참 시간이 지난 후 새벽시간(12시간 이후)에 이미 처리된 메시지가 컨슈머에서 다시 처리되는 현상이 발생하는데 설정값에 따라 발생할 수 있는 현상일까요? 3. 이중화 (Active-Active) 구성일 경우 컨슈머 설정이중화 구성이 되어 있는 경우 컨슈머를 @KafkaListener( concurrency = "2")로 설정하면 컨슈머는 총 4개로 운영되는 구조가 맞는지 궁금합니다. 감사합니다.
-
미해결아두이노 응용 시리즈 1 - 원격제어 궤도차량 개발
배터리 콘덴서
배터리쪽에 콘덴서를 붙이셨는데 강의에서 설명이 없어서요.콘덴서 장착 필요성, 콘덴서 사양, 어느 라인과 연결해야 하는지 설명 부탁드립니다.