묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[스프링 배치 입문] 예제로 배우는 핵심 Spring Batch
질문x 1강 일단 실행 코드부분 5.0에 맞춰 수정
yaml 수정 시작spring: batch: job: name: ${job.name:NONE} # 'names' (복수형)가 삭제되고 'name' (단수형)으로 변경됨 enabled: true # 자동 실행을 원할 경우 (기본값 true) jdbc: initialize-schema: ALWAYS # Spring Boot 3.x 이상에서는 이 속성을 사용 (기존 spring.batch.initialize-schema 삭제됨) datasource: url: jdbc:mysql://127.0.0.1:3306/spring_batch driver-class-name: com.mysql.cj.jdbc.Driver username: root password: 1234 sql: init: mode: always yaml 수정 끝 job 패키지 하위 HelloWoldJobConf 수정 시작package com.example.SpringBatchTutorial.job; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.job.Job; import org.springframework.batch.core.job.builder.JobBuilder; import org.springframework.batch.core.repository.JobRepository; import org.springframework.batch.core.step.Step; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.infrastructure.repeat.RepeatStatus; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.PlatformTransactionManager; @Configuration @RequiredArgsConstructor public class HelloWorldJobConfig { /** * [Spring Batch 5.0 변경점 1] Factory 삭제 * - 과거: JobBuilderFactory, StepBuilderFactory를 사용 (Deprecated/삭제됨) * - 현재: JobRepository와 TransactionManager를 직접 주입받아서 Builder에 전달해야 함 */ private final JobRepository jobRepository; // Job과 Step의 상태(실행 기록 등)를 DB에 저장/관리하는 저장소 private final PlatformTransactionManager transactionManager; // 트랜잭션 관리자 (Commit/Rollback 담당) /** * Job 생성 설정 * - Job은 배치의 가장 큰 실행 단위입니다. */ @Bean public Job helloWorldJob() { // [변경점 2] new JobBuilder("이름", jobRepository) 사용 // Factory.get() 대신 Builder를 직접 생성하며, 두 번째 인자로 jobRepository가 필수입니다. return new JobBuilder("helloWorldJob", jobRepository) .start(helloWorldStep()) // 첫 번째로 실행할 Step 지정 .build(); // Job 생성 } /** * Step 생성 설정 * - Step은 Job 내부에서 실제 비즈니스 로직(읽기/처리/쓰기)을 담당하는 단계입니다. */ @Bean public Step helloWorldStep() { // [변경점 3] new StepBuilder("이름", jobRepository) 사용 return new StepBuilder("helloWorldStep", jobRepository) /* * Tasklet 정의 (단순 작업용) * - 람다(Lambda) 식을 사용하여 코드를 간결하게 작성했습니다. * - (contribution, chunkContext) -> { ... } 구조입니다. */ .tasklet((contribution, chunkContext) -> { System.out.println("Hello, World! Spring Batch 5.0"); // Step이 정상적으로 끝났음을 반환 (FINISHED) return RepeatStatus.FINISHED; }, transactionManager) // [변경점 4] TransactionManager 필수 전달 // Spring Batch 5부터는 Step을 만들 때 어떤 트랜잭션 매니저를 쓸지 명시해야 합니다. .build(); // Step 생성 } } /* 스프링 3.0.x 대의 버전 @Configuration // 이 클래스가 Spring의 설정(Configuration) 클래스임을 명시 @RequiredArgsConstructor // final이 선언된 필드에 대해 생성자를 자동으로 생성 (의존성 주입) public class HelloWorldJobConfig { // Job과 Step을 쉽게 생성할 수 있도록 도와주는 빌더 팩토리 (Spring Batch 5.0 이전 방식) private final JobBuilderFactory jobBuilderFactory; private final StepBuilderFactory stepBuilderFactory; //Job 생성 설정 //- Job은 배치의 가장 큰 실행 단위입니다. @Bean public Job helloWorldJob() { return jobBuilderFactory.get("helloWorldJob") // "helloWorldJob"이라는 이름으로 Job 생성 // RunIdIncrementer: Job 실행 시마다 파라미터 ID를 증가시켜, 같은 Job을 여러 번 재실행할 수 있게 함 .incrementer(new RunIdIncrementer()) .start(helloWorldStep()) // Job 시작 시 실행할 첫 번째 Step 지정 .build(); // Job 빌드 및 반환 } //Step 생성 설정 // - Step은 Job 내부에서 실질적인 처리를 담당하는 단계입니다. // - @JobScope: Job이 실행될 때 이 Bean이 생성되도록 설정 (Late Binding) @JobScope @Bean public Step helloWorldStep() { return stepBuilderFactory.get("helloWorldStep") // "helloWorldStep"이라는 이름으로 Step 생성 .tasklet(helloWorldTasklet()) // 이 Step에서 수행할 기능(Tasklet)을 지정 .build(); // Step 빌드 및 반환 } // // Tasklet 생성 설정 // - Tasklet은 Step 안에서 단일 작업을 수행하는 로직입니다. (단순 작업용) // - @StepScope: Step이 실행될 때 이 Bean이 생성되도록 설정 /// @StepScope @Bean public Tasklet helloWorldTasklet() { // 익명 클래스로 Tasklet 구현 return new Tasklet() { @Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { // 비즈니스 로직 작성 구간 System.out.println("Hello World Spring Batch"); // 이 Tasklet의 처리가 끝났음을 반환 (FINISHED: 종료, CONTINUABLE: 다시 실행) return RepeatStatus.FINISHED; } }; } } * */job 패키지 하위 HelloWoldJobConf 수정 끝 한국어 패치하신분들은 실행/디버그구성 > 빌드 및 실행 > 옵션 및 수정 > 프로그램 인수에 --spring.batch.job.name=helloWorldJob넣고 값 조회
-
미해결상상을 현실로! 스테이블 디퓨전 기본 클래스 +ComfyUI
RuntimeError: Couldn't clone Stable Diffusion. 에러 나시는 분들 참고
git clone 후 webui.sh 로 실행하다가RuntimeError: Couldn't clone Stable Diffusion. Command: "git" clone --config core.filemode=false "https://github.com/Stability-AI/stablediffusion.git" "/Users/sonjinhyo/Desktop/projects/stable-diffusions-projects/webui-prac/stable-diffusion-webui/repositories/stable-diffusion-stability-ai" Error code: 128에러 나시는 분들은 아래 링크 참고하시면 됩니다.https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/17255#issuecomment-3770666470
-
해결됨[인프런어워드 베스트셀러] 코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드
naver mail imap trigger 가져오기 문의
얼마전까지 text로 된 메일본문을 가져올 수 있었는데 갑자기 {{ $json.text }}가 undefined로 나오네요. html로 된 본문만 가져오는데 네이버 imap mail이 보내주는 형식이 변경된건지 제가 잘못한건지 몰라서요. 그리고 account 정보 입력하고 host정보도 이전에 성공했던거 동일하게 처리했는데 save하면 오류가 발생합니다.그런데 메일가져오기 실행하면 또 되네요.ㅠㅠ
-
해결됨PCB HW설계 실무 : STM32를 활용한 Mixed-signal 보드 설계 프로젝트
알티움(Altium) 실습 자료 공유 가능 여부 문의드립니다.
안녕하세요, 삼코치님! 강의를 통해 실무적인 설계 지식을 정말 많이 배우고 있습니다.강의 내용 중에 원래 알티움(Altium)을 사용하시려다 키캐드(KiCad)로 변경하셨다는 언급을 들었습니다. 실습을 진행함에 있어, 저는 알티움 환경에서 강의 내용을 그대로 구현해보고 싶은 마음이 큽니다.혹시 강의를 준비하시면서 미리 제작해두셨던 알티움용 라이브러리(.SchLib, .PcbLib)나 관련 프로젝트 파일이 있다면, 학습에 참고할 수 있도록 공유해주실 수 있을지 여쭙고 싶습니다. 바쁘시겠지만 확인해 주신다면 큰 도움이 될 것 같습니다. 감사합니다!
-
미해결설계독학's Verilog 마스터 Season 1 (실전 코딩 테스트 문제로 완성하는 디지털 설계 엔지니어의 커리어 도약)
fsm 설계 방식에 대한 질문
L0 - P11번 문제의 FSM설계에 대한 의문점이 있습니다. (강의 10분 20초)맛비님이나 강의처럼 항상 reg로 현재의 state와다음 state인 n_state를 선언하시고,이후에 매 clk마다 state <= n_state; 이런식으로 state를 두 번 정의하시는데 이러는 방식에 이유가 있을까요? 제가 다음과 같이 풀어서 문제를 맞추었는데 이러면 안되는 이유가 있다면 그것도 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
HasMatchingGameplayTag 역활이 조금 이해가 안갑니다.
1,2 강을 마무리 하며, HasMatchingGameplayTag 는 해당 게임플레이 테그가 현재 ASC 에 등록이 되어 있는지 체크하는 것으로 이해했는데요.HasMatchingGameplayTag 없다면 TryActivateAbilitiesByTag 를 통해 ABTAG_ACTOR_ROTATE 테그를 실행함으로서, ABTAG_ACTOR_ISROTATING 도 같이 asc 에 등록이 되고 CancelAbilities 를 통해 해체가 되면 ABTAG_ACTOR_ROTATE, ABTAG_ACTOR_ISROTATING 둘다 asc 의 테그 목록에서 사라진다. 이렇게 이해해야 하나요?
-
미해결[게임 프로그래머 도약반] DirectX11 입문
assimp-vc143-mtd.dll가 없어서 코드 실행을 진행할 수 없습니다 라는 에러가 뜹니다.
68강 SkyBox 강의에 첨부된 솔루션을 빌드 후 실행하면 아래와 같은 에러 메시지가 뜹니다. Engine 프로젝트를 먼저 빌드하고 전체 솔루션 재빌드 후에 실행하여도 마찬가지입니다.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
39. 문서와 코드 다듬기 updateInfo 테스트 질문 있습니다.
MemberDetail 테이블의 UK_MEMBER_DETAIL_PROFILE_ADDRESS 유니크 제약 조건과 관련해서 질문이 있습니다.39장 강의 마지막 부분에서, 해당 프로파일 주소(profile_address)를 빈 문자열로 바꿔 삭제할 수 있는 부분 테스트를 추가 하셨는데, 그런데 이렇게 되면 여러 사용자가 프로필 주소를 빈값으로 변경 할 경우 제약 조건에 충돌이 발생할 수 있을 것 같습니다.profile_address 값을 빈값으로 설정할 수 없도록 테스트를 조정하는게 더 맞아 보이는데 제가 생각한게 맞을까요?
-
미해결AI 시대의 혁신적인 게임 개발 입문 with Unity6
유니티 비법서 받을수 있을까요
안녕하세요 이전에 받은걸로 기억하는데, 포맷하고 메일을 정리해버려서 자료가 사라졌습니다 가능하다면 다시 받을수있는지 문의 드립니다 wnsdnr124@naver.com 입니다 감사합니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
gvim
안녕하세요 🙂 verilog HDL 시즌2로 처음 설계독학맛비님의 수업을 듣게 된 학생입니다.다름이 아니라 10분쯤에 파일을 열기 위해 사용하신 gvim을 따라 사용하니 맛비님과 다른 화면이 나와 질문글을 남깁니다. 첫번째론 gvim을 찾을 수 없다고 나와 이어서 나온 설명대로 3가지를 install한 후 다시 실행하자 화면이 다른 것을 알게 되었고 그제서야 보니 맛비님은 gvim, 저는 neovim으로 되어있는 것을 보았습니다. 큰 문제는 아니나, 제 화면에서는 코드 확인과 수정 정도만 가능하지만 맛비님의 화면에서는 file부터 edit, tools, window 등 다양한 버튼이 있어 가능하면 똑같은 GVIM을 사용하고 싶은데 어떻게 하면 되는지 알려주시면 감사하겠습니다. [1. 질문 챕터] : HDL 22장 10분쯤[2. 질문 내용] : gvim 관련하여[3. 시도했던 내용, 그렇게 생각하는 이유]아래의 화면과 같이 sudo pat install neovim-qt , vim-gik3, vim-motif을 실행 ㄴ
-
미해결AI 시대에 살아남기: Supabase로 백엔드 뚝딱!
감사히 잘 듣겠습니다.
수파베이스에 대한 갈증이 있었는데 타 플랫폼도 그렇고 한국강좌가 없어서 많이 아쉬워하고 있었는데요 인프런에 2만2천원짜리 강의하나밖에 없어서 그것을 듣긴했는데 그것만으론 많이 아쉬움을 느끼고 있던차에 이 강의가 나왔다는 메일을 받고 정말 기뻐서 바로 결제했습니다 수파베이스를 활용해서 만들고싶은 것들이 잔뜩 머릿속에 있거든요 감사히 잘 듣겠습니다.
-
미해결실무자를 위한 구글애널리틱스(GA4+GTM) 활용법(25년 Update)
주석 추가 기능이 안됩니다.
안녕하세요! 강의 유익하게 듣고 있습니다.주석 추가가 가능해졌다고 하셔서 시도해보았는데요. 저는 마우스를 갖다 대어도 주석 추가 버튼은 안뜹니다.그 사이에 또 바뀐걸까요? 아님 제가 잘 못하고 있는건지.. 여쭤봅니다! 감사합니다 : )
-
해결됨독하게 되새기는 C 프로그래밍
병행성 제어
안녕하세요. 새해 복 많이 받으세요. 병행성 제어 , 원자성 등 C++에 대해 조금 더 깊게 공부하고 싶은데 강사님 강의중에 수강 어떤것을 수강 하면될까요?
-
해결됨즐거운 블렌더 - 아이소메트릭 하우스
스피커 와이어프레임 모디파이어
와이어 프레임 적용 시 에좀 과하게 두꺼워지는?면이 거칠게 뒤집힌 것처럼 적용 되는 건이유가 뭘까요 스케일 수치는 1로 다 어플라이 되어있었는데..제가 스피커를 작게 만들고 싶어서 조금 작게 했는데너무 작아서 그런가 싶어 크기를 키워서도 해봤는데 안되는 것? 같아서요
-
미해결피그마UI3 기초 + 실무 탄탄 초스피드 완강코스
피그마_6강_컴포넌트 부분 질문입니다.
선생님, property로 묶었는데 밖에 나와도 다이아몬드가 1개가아니라 4개 다이아몬드로 나오고 아이콘을 변경해도 그대로 인데ㅠㅜ 왜그런걸까요복사해서 붙여넣기 한 후 밖으로 빼도 똑같습니다.네모안에 있을때는 다이아몬드가 하나인데네모 밖으로 빼면 다이아몬드가 네개가 됩니다.
-
미해결홍정모의 따라하며 배우는 C++
11:11 부근에 Something::temp와 Something::getValue의 앞에 &를 붙이는 이유가 뭔가요? (함수 이름은 포인터(주소)가 아닌가요?)
앞에서 '함수이름'은 포인터와 같다라고 배웠습니다. 그래서 실제로 7.9 함수 포인터 강의에서도 int (*ptr_func)() = func; //func는 함수 이름으로 함수포인터를 선언 및 초기화하고 호출 시에도 ptr_func()라고 호출했습니다.그런데 이번 강의 11:11부근에서 교수님께서 멤버함수의 포인터를 가져올 수 있다 말씀하시면서 선언 및 초기화하실 때 int (Something::*fptr1) = &Something::temp;라고 선언 및 초기화를 해주셨는데Something::temp 앞에 주소 연산자 [&]를 붙여주는 이유를 모르겠습니다. 검색해보니 함수포인터 초기화 시 함수이름에 &를 붙이지 않았다고 해도 내부적으로 형변환을 해준다고 하는 것을 알았습니다.실제로 int (Something::*fptr1) = Something::temp;로 주소 연산자 [&]를 붙이지 않았을 때도 에러 없이 정상 작동하는 것을 확인했습니다.그러나 '함수 포인터는 주소다, 포인터다'라고 배운 개념과 다르게 앞에 &를 붙이지 않으면 내부적으로 자동 형변환 된다는게 모순인 것 같은데 &는 주소를 나타내기 위한 연산자라고 배웠고 원래는 &를 명시적으로 함수이름 앞에 붙이는게 맞다(안붙이면 내부적으로 형변환된다)는 것이 말이 안되는 것 같습니다. 그러면 함수 이름은 포인터가 아닌 것이지 않을까요?
-
미해결
구글스프레드시트 확장 프로그램 사용방법
구글 스프레드시트와 확장프로그램을 연동해서 사용하는 방법등 을 공부할수 있는 강의는 없을까요???활장프로그램의 GPT를 이용하여 등록된 자룔를 기반으로 상담일지를 만들고 싶은데...가능할것같은데 이런 실무적인 교육을 찾고 있습니다. 저도 초보다보니 잘 설명하기는 힘들지만 사회복지시설에서 근무하다 보니 편하게 문서를 작성하는 방법을 찾고 있거든요...확장프로그램의 앱시트를 이용하여 앱을 만들고, speech to text기반으로 데이타를 6하원칙에 넣고, 이를 토대로 상담일지를 만들 수 있다면 좋을 것 같아서요..ㅎㅎㅎㅎ주저리 떨어 보지만 생각이 잘 정리가 안되네요...혹 조언 주실수 있으신가해서 떠들어 봤습니다. ㅎㅎㅎ
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
궁금한거 있습니다.
ClientSocket 즉 Session 의 소켓을 CreateIoCompletionPort 를 이용하여 등록해주어야지만 IOCP 큐로 부터 통지가 오지않나요? WSARecv 만 걸었는데 어떻게 통지가 오는지 궁금합니다.
-
미해결<제미나이 CLI 완벽 가이드> 4주 완독 챌린지 : 책 한 권을 온전히 '나만의 무기'로 만드는 시간
ch22 , ch24 오타
ch22 (page 208) 파일이름 : bin/call_tool 로 수정ch24 (page 225)파일이름 : _quarto.yml 로 수정_quarto.yml 에서 site-url 을 본인 github pages 주소로 수정해야 함before :after :
-
해결됨리눅스 퍼미션 마스터클래스 과정 – 「기초부터 실무·보안·서비스 운영까지」
방화벽 강의 자료 업로드 일정
안녕하세요.방화벽 강의 자료는 언제 업로드 예정인지 궁금합니다.