묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
pdf 오타 문의
중요한 것은 아닐 수도 있고, 영상에서도 해당 내용은 설명은 하시지 않고 넘어가셔서 정확하지 않을 순 있습니다. 그래서 문의드립니다.6. 로그인 처리1 - 쿠키, 세션 PDF5페이지도메인이 가장 중요하다. 도메인 = 화면, UI, 기술 인프라 등등의 영역은 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말함'영역은 제외한 시스템이' 에서 영역'은'이 맞는 표현인가요 영역'을'이 맞는 표현인가요?'영역은' 이라고하면 제외한 시스템이 구현한다는 뜻으로 이해가 되는데 제외한 시스템이 무엇을 말하는지 잘모르겠고..'영역을'이라고 한다면 영역을 제외하고 시스템이 구현한다는 뜻으로 내용이 자연스레 이해가 되는데 영상에서 이 부분을 딱히 설명을 하시지 않으셔서 잘모르기에 문의드립니다.
-
해결됨원클릭으로 AI가 생성해주는 Youtube 쇼츠 만들기 자동화(with n8n)
TTS 생성 요청 후 결과조회에서 오류가 납니다
똑같이 하는데도 uri 칸에 "response_url" 끌어다놓기 해서 실행하면 결과가 저렇게 나옵니다 아무리 해도 안돼네요 방법이 없을까요?
-
해결됨원클릭으로 AI가 생성해주는 Youtube 쇼츠 만들기 자동화(with n8n)
falai 질문
fal ai가 각각의 ai들을 한 사이트로 사용할 수 있게 중개 해주는 사이트 같은데 각각의 ai에서 api키를 발급 받아 사용하면 더 저렴한가요? 아님 가격이 같나요??
-
미해결[스프링 배치 입문] 예제로 배우는 핵심 Spring Batch
배치 실행시 파라미터 (파일 이름)받기 및 (csv) 검증 5.0버전 공유
6분대 까지의 기록 입니다.5.0 버전에 맞게 ValidatedPramJobConig 구현 내용입니다 참고하세용package com.example.SpringBatchTutorial.job.ValidatedParam; import lombok.RequiredArgsConstructor; import org.jspecify.annotations.Nullable; import org.springframework.batch.core.configuration.annotation.JobScope; import org.springframework.batch.core.configuration.annotation.StepScope; import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; import org.springframework.batch.core.job.parameters.CompositeJobParametersValidator; import org.springframework.batch.core.job.parameters.RunIdIncrementer; import org.springframework.batch.core.repository.JobRepository; import org.springframework.batch.core.scope.context.ChunkContext; import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.StepContribution; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.core.step.tasklet.Tasklet; import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.PlatformTransactionManager; import java.util.Arrays; /** * desc: 파일 이름 파라미터 전달 그리고 검증 * run: --spring.batch.job.name=validateParamJob -fileName=test.csv */ @Configuration @RequiredArgsConstructor public class ValidatedParamJobConfig { /* * [Spring Batch 5.0 변경점] * JobBuilderFactory, StepBuilderFactory가 Deprecated(삭제)되었습니다. * 대신 JobRepository와 PlatformTransactionManager를 직접 주입받아 사용합니다. */ private final JobRepository jobRepository; private final PlatformTransactionManager platformTransactionManager; @Bean public Job validateParamJob() { /* * [변경] new JobBuilder("Job이름", jobRepository) 형태로 생성합니다. */ return new JobBuilder("validateParamJob", jobRepository) .incrementer(new RunIdIncrementer()) // 실행할 때마다 JobParameter에 run.id를 증가시켜 재실행 가능하게 함 .validator(new FileParamValidator()) // 검증 로직이 필요하면 여기에 validator를 추가합니다. .start(validateParamJobStep()) // 첫 번째 Step 시작 .build(); } private CompositeJobParametersValidator multipleValidator(){ CompositeJobParametersValidator validator = new CompositeJobParametersValidator(); validator.setValidators(Arrays.asList(new FileParamValidator())); // 여러개의 검증 클래스를 변수로 할당가능 return validator; } @Bean @JobScope // Job 실행 시점에 Bean이 생성되도록 설정 public Step validateParamJobStep() { /* * [변경] new StepBuilder("Step이름", jobRepository) 형태로 생성합니다. */ return new StepBuilder("validateParamStep", jobRepository) /* * [변경] tasklet이나 chunk를 설정할 때 TransactionManager를 반드시 인자로 넘겨야 합니다. */ .tasklet(validateParamTasklet(), platformTransactionManager) .build(); } @Bean @StepScope // Step 실행 시점에 Bean이 생성되도록 설정 public Tasklet validateParamTasklet() { return (contribution, chunkContext) -> { // 비즈니스 로직 영역 System.out.println("validateParamTasklet 호출됐나요~"); // Tasklet 종료 상태 반환 return RepeatStatus.FINISHED; }; } } /* [Spring Boot 2.x ~ Batch 4.x 버전 기록용] 당시 특징: JobBuilderFactory와 StepBuilderFactory를 사용하여 간편하게 생성. 현재(5.0+)는 삭제된 방식임. @Configuration @RequiredArgsConstructor public class ValidatedParamJobConfig { [과거 방식의 핵심] 이 당시에는 @EnableBatchProcessing이 선언되어 있으면 스프링이 자동으로 JobBuilderFactory, StepBuilderFactory를 빈으로 등록해줬음. -> 개발자가 JobRepository나 TransactionManager를 신경 쓸 필요 없이 Factory만 주입받으면 됐음. [코드가 왜 방식을 바꾼이유에 대한 고찰] 과거에는 Factory 방식이 유행했다면 요즘은 Builder 방식으로 전환하려는것 같음. 추가로 PlatformTransactionManager 을 과거에는 써서 DB에 접근을 하였는데 이 방식이 DB를 하나를 바라보게끔 되어있었다고함 그래서 Step 마다 트랜잭션을 사용하려면 설정이 까다로웠다고(Bean을 재정의 하거나 Factory를 커스텀) 현재는 Step을 만들때 트랜잭션을 인자로 직접 넘겨주기에 Step A는 metaTransactionManager Step B 는 serviceTransactionManager 로 설정하는것으로 쉬워졌다고함 https://github.com/spring-projects/spring-batch/wiki/Spring-Batch-5.0-Migration-Guide 공식 깃헛 사이트에서 Transaction manager bean exposure/configuration 을 컨트롤 F 해서 보면 상세히 나와있음 아래 슬로건을 미는 느낌인거같음 개발자가 코드를 짤 때 귀찮더라도, '누가(Repository)', '어떻게(TransactionManager)' 일하는지 명시적으로 적어라. 그래야 나중에 사고가 덜 난다 5.0있는데 왜 2.x ~ 4.x 를 기록함 이라할수있는데 프로젝트를 뛰다보면 3.0버전대가 너무 많음 5.0으로 신규로 구현할 수도 있으니 과거와 현재 방식을 기록하는거에 초점 두는게 좋다생각함 private final JobBuilderFactory jobBuilderFactory; private final StepBuilderFactory stepBuilderFactory; @Bean public Job validateParamJob() { [Job 생성] factory.get("이름")을 호출하면 내부적으로 JobRepository가 자동 주입된 빌더가 반환됨. -> 5.0부터는 new JobBuilder("이름", jobRepository)로 직접 주입해야 함. return jobBuilderFactory.get("validateParamJob") .incrementer(new RunIdIncrementer()) //.validator(new FileParamValidator()) // 여기서 정의해줘도 되지만 재활용성을 위해 별도의 클래스로 제작 job.ValidatedParam.FileParamValidator .validator(multipleValidator) .start(validateParamJobStep()) .build(); } private CompositeJobParametersValidator multipleValidator(){ CompositeJobParametersValidator validator = new CompositeJobParametersValidator(); validator.setValidators(Arrays.asList(new FileParamValidator())); return validator; } @JobScope @Bean public Step validateParamJobStep() { [Step 생성] factory.get("이름") 사용. 특징: .tasklet() 설정 시 TransactionManager를 넣지 않아도 Factory가 내부적으로 가지고 있는 기본 TransactionManager를 사용함. -> 이 '암시적(Implicit) 구성'이 편하긴 했으나, 명확성이 떨어져 5.0에서 제거됨. return stepBuilderFactory.get("validateParamStep") .tasklet(validateParamTasklet()) 트랜잭션 매니저 생략 가능했음 .build(); } @StepScope @Bean public Tasklet validateParamTasklet(@Value("#{jobParameters['fileName']} String fileName) { //System.out.println(fileName); // 여기서 파일명을 받아 작업할 수 있지만 // Tasklet 까지 오기 전 Job이 실행할 때 검증할 수 있도록 Validator 를 제공을 함 위쪽의 validateParamJob 메서드로 이동 [Tasklet 구현] 익명 클래스 방식으로 구현. 단순 출력 후 FINISHED를 반환하여 스텝을 종료함. return (contribution, chunkContext) -> { System.out.println("validateParamTasklet"); return RepeatStatus.FINISHED; }; } } */ job.ValidatedParam.Validtor 시작package com.example.SpringBatchTutorial.job.ValidatedParam.Validator; import org.springframework.batch.core.job.parameters.InvalidJobParametersException; import org.springframework.batch.core.job.parameters.JobParameters; import org.springframework.batch.core.job.parameters.JobParametersValidator; import org.springframework.util.StringUtils; public class FileParamValidator implements JobParametersValidator { // thorws 저거밖에 못찾겠어서 저걸로 했는데 문제없이 됐습니다. @Override public void validate(JobParameters parameters) throws InvalidJobParametersException { String fileName = parameters.getString("fileName"); if (!StringUtils.endsWithIgnoreCase(fileName,"csv")){ throw new InvalidJobParametersException("This is CSV"); } } }job.ValidatedParam.Validtor 끝
-
해결됨[인프런어워드 베스트셀러] 코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드
Custom Search API 인증오류가 계속 납니다
Custom Search API 사용 시cx, key, q 모두 확인하고또 서비스 사용 설정 등도 체크 다 하는데 계속 저 오류가 나네요ㅜ프로젝트부터 다 신규로 만들고 해도 동일하게 계속 오류가 납니다.도와주세요 ㅠ
-
미해결[인프런어워드 베스트셀러] 코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드
qdrant 로컬 기본 선택값이 없습니다.
RAG 강의에서 Qdrant 사용시 Credential to connect with에서 'Local QdrantApi database' 가 없네요 ㅜ어떻게 설정하면 될까요?
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
statusline을 실행했는데 그냥 소스를 변경합니다
statusline을 실행했는데 그냥 소스를 변경합니다또 .claude폴더 안에 setting.json 파일을 만들지 않습니다.
-
미해결시작하는 PM/PO들에게 알려주고 싶은, 프로덕트의 모든 것
비판적 사고
PM이 되고 싶은 대학교 3학년 학생입니다. 공부하면서 PM에게 비판적 사고가 중요하다고 생각되는데요. 제게 비판적 사고가 부족하다고 생각되서 기사를 읽으면서 MECE분석을 하거나 내용을 요약하고 반대입장에서 생각해보기. 정도로 연습을 하고 있는데, 이 방법으로 비판적 사고를 키우기에 부족하지 않을까 불안한 느낌이 듭니다. 혹시 민우님은 비판적 사고를 키우기 위해서 어떻게 하셨는지 궁금합니다.
-
미해결클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
이제 막 시작하는 사람이 가질 법한 질문입니다.
안녕하세요, 개발에 대해서 전혀 모르는 1인입니다.바이브코딩을 배워보고 싶어서 열심히 따라하고 있는데, 본질적으로 문제점이 있어서 고견을 구하고자 질문드립니다.강의에서 말해주신대로 플랜모드로 프로젝트의 기획, 아키텍트 등을 자세하게 요청했을 때 잘 모르는 사람 입장에서 그럴법하게 제시를 해줍니다.문제는 이 기획이 제대로 된 건지, 아닌지 전혀 판단할 수가 없습니다. 초보자 입장에서 개발도 모르고 제대로 된 프로그램도 만들어보지 않았기 때문에 당연하다고 생각합니다.시간이 지나면 당연히 개발에 대한 지식이 생기고, 프로젝트를 실패하고 성공하는 걸 반복하면서 실력이 늘겠지만 시행착오를 조금이라도 줄이고 싶습니다.그래서 여러 AI한테 기획에 대한 피드백을 요청해서 그걸 토대로 판단하는 게 가장 괜찮을 것 같은데, 이 때 뭐라고 AI한테 지시해야 할 지가 궁금합니다. 이것도 AI 통해서 물어보면 되겠지만, 전문가로서 괜찮은 내용이나 정보가 있다면 알려주시면 정말 감사하겠습니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
clean 명령어가 안되는데, 따로 저장해줘야 하는지 궁금합니다.
안녕하세요 🙂[1. 질문 챕터] : chapter 1(환경 알아보기)예제 마지막 부분입니다.[2. 질문 내용] : build는 바로 안되어서 chmod +x build 간신히 했는데, clean 은 명령어 정확히 적어도 안되고, chmod 로 하면 찾을 수가 없다 그래서 type 명령어 써서 봤더니 역시나 clean 이란 명령어가 없다고 나오네요. [3. 시도했던 내용, 그렇게 생각하는 이유] : 폴더도 맞고 명령어도 슬래시랑 점 다 제대로 찍었는데 안되는건, 혹시 clean 이란 명령어를 bashrc 에 따로 적어줘야 하는건지 궁금해요. mobaxterm 에 ubuntu 는 22.04 쓰고 있습니다.
-
미해결C# OpenCV 컴퓨터비전 입문 강좌
53초에 OpenCVSharp2.4.10 폴더를 찾고 있습니다.
53초에 OpenCVSharp2.4.10 폴더를 찾고 있습니다. 어디있나요? OpenCV - 통합본안에 있나요 ? 있다면 bin폴더인가요? obj폴더인가요 ?
-
미해결Practical Testing: 실용적인 테스트 가이드
void는 어떻게 테스트하나요..? void로 애초에 코딩하면 안되나요??
강의를 수강한 이후 테스트 코드를 짜다가 문득 궁금하여 문의드립니다. 보통 테스트 코드는 입력이 있고, 그것에 대한 출력을 검증하는 것인데 반환 값이 void면 어떻게 테스트 코드를 짜면 되는지 궁금합니다. (예를들어 단순 update문) copilot이나 ai는 verify로 행위 검증을 하던데... 이렇게 하는게 맞는건지, 아니면 void로 반환하는것 자체를 지양하는게 좋은지... 의견을 여쭙고 싶습니다!!!
-
미해결[2026] 비전공자도 한 번에 합격하는 SQLD 올인원
Part1 > Chapter2 단원정리문제
안녕하세요 선생님,단원정리문제를 풀다 이해가 되지 않는 부분이 있어 문의드립니다.바로 Q&A상단에 같은 문의가 있긴한데 올려주신 답변으로는 이해가 잘 되지않아 문의드립니다. 문제7번) 관계에서 1:M관계에 대한 문제입니다[학생 - 강의]한학생이 여러강의를 들을 수있고 한강의에 여러학생이 듣는다는게 일반적인 사회적 통념인것같은데 어째서 이게 1:M인지 모르겠습니다.'학생 - 수강신청' 이런 느낌이엇으면 이해가 됬을거같은데 어째서 학생-강의 가 1:M이 되는걸까요?보편적으로 시험에서 나온다면 '강의'라는 것은 강의의 종류를 말하는것인지(ex. sql강의, 빅데이터강의) 강의를 듣는다는 행위인지(ex.수강신청)가 궁금합니다.[강사 - 과목]한강사가 여러과목을 할수있고, 한과목에는 한강사가 연결된다는것이 일반적인 사회적 통념이라 해당부분은 이해했습니다![주문 - 주문상세]한주문에 여러주문상세가 만들어질 수 있어서 1:M인걸까요? 주문상세 라고 하는건 A주문건에 대한 상세라고 생각해서 1:1관계라고 생각했는데 이거는 좀 다른 해석이 되는걸까요?앞에 수업에서도 계속 헷갈렸는데, 마지막 단원정리에서까지 틀리니 확실히 알고 넘어가야겠다 싶어서 문의드립니다!
-
미해결[6주 과정] 『혼자 공부하는 바이브 코딩 with 클로드 코드』 완독 챌린지
Claude 업그레이드 문
3주 강의중에 실습을 따라가다 보니 Claude 코드를 사용하려면 Claude MAX나 PRo로 업그레이드 해야 된다고 메세지가 나옵니다 업그레이드 하지 않으면 이후의 실습은 진행이 불가한지요 • 챌린지 활동 관련 문의: event@hanbit.co.kr• 학습 관련 질문: https://github.com/taehojo/vibecoding/issues 깃허브에 질문을 남기실 땐, 아래 3가지를 함께 알려주세요.1. 해당 부분의 챕터와 페이지 번호2. 발생한 오류 메시지 텍스트3. 문제가 된 코드나 오류 화면 캡처
-
미해결LLM 핵심 이론, 구조로 이해하기 -ChatGPT·RAG·Agent의 작동 원리를 한 번에-
강의자료를 받을 수 있게 해주시면 좋을 것 같아요
강의를 통해서 대략적인 LLM에 대해서 알게 되었는데요. 복습을 위해서 강의 자료를 공유 해주셨으면 좋겠어요
-
해결됨앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
수강 기간 연장 부탁드릴 수 있을까요?
구매 후에 늦게나마 시작해서 기간이 얼마 안남았네요ㅠ혹시 기간 연장이 가능할까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
ec2 서버에서 스프링 실행도 되고 인바운드 설정까지 했는데 index.html 안됨
로컬에서 실행할 때 문제없이 잘 작동했고, ec2 서버에서 스프링부트 실행되는 것도 확인했습니다. 그리고 인바운드 규칙도 설정하고 public IP 주소로 입력했는데도 index.html 화면이 계속 로딩만 되고 안 나옵니다ㅜㅜ 해결 방법 있을까요?
-
해결됨AI 다루는 백엔드 설계 기본 - SpringBoot SNS 편
CSRF 관련 궁금한게 있어요
현재 백엔드 프로젝트에서스프링 시큐리티 프레임워크 도움을 받기 위해CSRF 설정은 끄고 <form> 전송과 세션 방식으로 로그인 하고 있잖아요. (저는 그렇게 보였는데 아니면 제가 잘못 이해한거구요..) 그런데 요즘은SSR 방식이 아닌 현재 프로젝트처럼프론트 따로 서버 따로 해서서버는 REST API 만 개발하고 JWT 방식을 쓰잖아요 JWT 도 보안에 한계가 있는데아무튼 이걸 떠나서현재 CSRF 설정을 끄고 <form> 전송으로 로그인하는게보안상 많이 위험한 건 아닌가요? 제가 애초에 잘못 이해하고 있어서질문 자체가 잘못되었을 수 있지만관련해서 답변 부탁드립니다
-
미해결[라이브] AI 시대, 10년 후에도 살아남는 개발자의 기준
구글 밋에서 강의진행 합니다!
리허설 중 종료처리 했더니, 라이브를 진행할 수 없네요 🙏구글 밋에서 강의진행 합니다! 아홉시에 뵙겠습니다.https://meet.google.com/whd-axyy-rao
-
미해결기초 탄탄! 독하게 시작하는 Java Part 3(하) : 소켓과 파일 I/O
"이전 시간 강의 예제코드 실행시 왜 0bytes가 나오는지"에 대한 설명에 대한 질문 남깁니다!
1:11부터 이전 시간의 예제를 실행했을 때, 왜 0bytes가 나오는지 설명해주시는 부분에 대한 질문입니다! 제가 혼자서 생각해봤을 때는 "버퍼 인스턴스에 두 개의 비동기 write 작업이 동시에 접근해서 발생한 스레드 동기화 문제"라고 생각했는데, 강사님께서는 "native 수준에서 비동기 쓰기를 처리하려면 각각의 버퍼가 필요하다"고 설명해주셨습니다. 버퍼에 접근해서 데이터를 읽어오면 pos가 읽은 바이트수만큼 증가하고, 그 다음에 버퍼에 접근한 writer는 pos위치부터 읽기 시작하는데 그 뒤로는 데이터가 없기 때문에 읽지 못하게 됩니다. 그런데 매번 0bytes가 나오는건 아니고 어떨 때는 34bytes가 나오기도 했습니다. "버퍼에 접근해서 데이터를 읽어서 pos를 읽은 바이트 수만큼 증가"연산을 하기전에 버퍼에 접근하게 되면 데이터를 읽어올 수 있게 되는 것 같다고 생각했습니다.buffer.get(data.getBytes()); 위 코드를 asyncChannel.write 하기 전에 실행해본결과 모두 0bytes가 나오는 걸 보고, 버퍼의 상태에 따라서 결과가 달라진다고 판단했습니다.따라서, 버퍼에 두 스레드가 동시 접근하면서 발생하는 동기화 문제다 라고 생각했습니다! 제가 이해한 것이 틀린것인지 강사님과의 답변과 어떤 차이가 나는건지 궁금해서 질문남깁니다!