학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 강사님! 내부조인 문제와 풀이 3번에서 "고객별" 총 구매액이니까 group by를 u.user_id로 해야하는 것이 아닌가요??! u.name으로 하면 강의에는 데이터가 적어서 상관없지만 실무에서 동명이인이 있는 경우 합쳐진 결과가 나올 것 같아 건의드립니다!! u.name으로 하신 이유가 궁금합니다!! 강의 잘보고있습니다 감사합니다.
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
YOLO 모드는 Dev Container 같은 격리된 환경에서 사용하여 안정성 확보 => 이 부분이 이해가 안가요. YOLO모드가 권한스킵하는 역할인데, Dev Container 예시를 봐도 무슨 연관이 있는지 잘 모르겠어요. 그냥 YOLO모드는 디렉터리,파일 권한 스킵하기 위해서 쓰는거 아닌가요?
한글이 영어,숫자 보다 먼저 정렬되도록 하고 싶습니다. 해당 컬럼에는 한글이 주로 많이 있습니다. 오름차순 정렬시 한글(가나다),영문/숫자/그외문자 순으로 정렬 현재 사용하는 것은 쿼리단에서 정규식을 이용해서 한글을 우선순위를 높여서 정렬을 시키는데 뭔가 비효율적인것 같습니다. 콜레이션을 변경하면 가능할까요? 콜레이션을 변경하는 것을 추천하나요? 그렇다면 어떤식으로 콜레이션을 적용하는게 좋을까요? 해당 컬럼에만 적용하기? 쿼리에서 정렬에 콜레이션을 명시하는 방법? 어떤 방법을 권장하나요? 콜레이션을 임의로 변경 시 문제점이나 유의사항이 무엇이 있을까요? 참고로 mysql8 사용중이고, utf8mb4_ko_0900_as_cs 으로 변경을 고려중입니다. 해당 컬럼은 영어,숫자,한글이 들어가고, 주로 한글이 많습니다. 그리고 유니크한 컬럼입니다.
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
claude zsh: command not found: claude 기존에 터미널에서 잘 사용했는데 claude가 안됩니다. 재설치해보려했는데 에러가 나요. npm error code ENOTEMPTY npm error syscall rename npm error path /Users/jay/.nvm/versions/node/v22.17.0/lib/node_modules/@anthropic-ai/claude-code npm error dest /Users/jay/.nvm/versions/node/v22.17.0/lib/node_modules/@anthropic-ai/.claude-code-mCqqbn73 npm error errno -66 npm error ENOTEMPTY: directory not empty, rename '/Users/jay/.nvm/versions/node/v22.17.0/lib/node_modules/@anthropic-ai/claude-code' -> '/Users/jay/.nvm/versions/node/v22.17.0/lib/node_modules/@anthropic-ai/.claude-code-mCqqbn73' npm error A complete log of this run can be found in: /Users/jay/.npm/_logs/2025-10-02T12_47_24_324Z-debug-0.log
강의 예제를 따라가면서 SystemFailureJobConfig 배치를 실행했는데, 계속 FlatFileItemReader에서 JobParameter로 전달한 inputFile이 null로 들어오는 문제가 발생했다. 정확하게는 Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.batch.item.file.FlatFileItemReader]: Factory method 'systemFailureItemReader' threw exception with message: Path must not be null 이 오류 였으며, public FlatFileItemReader<SystemFailure> systemFailureItemReader( @Value("#{jobParameters['inputFile']}") String inputFile) { log.info("오잉 Reader inputFile: " + inputFile); // null return new FlatFileItemReaderBuilder<SystemFailure>() .name("systemFailureItemReader") //여기서 path not null 오류 발생 .resource(new FileSystemResource(inputFile)) .delimited() .delimiter(",") .names("errorId", "errorDateTime", "severity", "processId", "errorMessage") .targetType(SystemFailure.class) .linesToSkip(1) .build(); } .name("systemFailureItemReader") 이 위치에서 발생하고 있었다. 그리고 line numbers are likely diverged. try to find the current location inside 'SystemFailureJobConfig. systemFaliureItemReader()' 이 메시지도 함께 보였다. GPT에 물어봐서 해결이 되긴 했는데, KillBatchSystemApplication에서 CommandLineRunner를 구현하고 직접 경로를 지정해주었다. @SpringBootApplication @AllArgsConstructor public class KillBatchSystemApplication implements CommandLineRunner { private final JobLauncher jobLauncher; private final Job systemFailureJob; public static void main(String[] args) { SpringApplication.run(KillBatchSystemApplication.class, args); } @Override public void run(String... args) throws Exception { JobParameters params = new JobParametersBuilder() .addString("inputFile", "/Users//Desktop/kill-batch-system2/system-failures.csv") .toJobParameters(); jobLauncher.run(systemFailureJob, params); } } 실무에서는 CLI로 파라미터를 전달하는것이 핵심이라 했던걸로 기억한다. CLI로 전달한 JobParameter를 StepScope Bean에서 안전하게 받는 다른 방법은 없나?? 아 지금 작업도구는 MacOS M1, Spring Boot 3.4.7 이다. 연휴 잘 보내길 바란다.
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
입문자인데 2주차부터 난이도가 너무 급상승 해서 봐도 이해가 너무 힘듭니다 ㅠㅠ 이걸 계속 해야하는건가 싶어지네요;.. 의미없는 시간이 흘러가는건가 싶고.. 챌린지는 하고 있는데 챌린지 수업을 위해서 또다른 공부를 하게되는꼴이 되어버리는거 같아서 끝까지 완주해야하나 고민됩니다
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
project 단위에 CLAUDE.md 는 /init 으로 생성하는걸 알겠는데, User Scope 범위에 CLAUDE.md는 어떤식으로 생성해야 하나요? 프로젝트 내부에서 만들어서 직접 ~/.clause/CLADUE.md로 옮기는건지 .... 책만으로 정확한 방법 파악이 안됩니다
청크 단위로 트랜잭션 된다는건 이해했다. 그에 관련해서 궁금증이 생겼는데, reader, processor에서 처리하다가 Exception이 나도 사실 DB엔 롤백할게 없으니 사실상 Writer 작업 중에만 단 한번 롤백이 수행될 것이라고 예상되는데 맞는가? read 시에, process 도중에도 롤백이 일어날 경우가 있는지 궁금하다. 추가로 과거 스프링 배치 공식 문서의 잘못된 다이어그램 이라던지 null을 줘야 끝난다는 점과 97개 와 같이 자세한 예시를 들어준 점, read(), process()가 각각 10번씩 수행된다는 것과 같이 사용자들이 많이 헷갈려 하는걸 명확하게 알려줘서 좋은 것 같다.
16강을 수강하고 있습니다. CustomLoginFailureHandler 사용자가 로그인에 실패했을 때 호출되는 메서드에 대한 질문입니다. if(savedRequest != null) { String targetUrl = savedRequest.getRedirectUrl(); //사용자가 접근하려던 URL // 즉, 로그인에 실패했지만 사용자를 원래 있던 페이지로 보내줌 // 실패 시 사용자가 접근하려던 URL 로그 출력 log.info("[핸들러 - 사용자가 접근 시도한 URL]\n-> " + targetUrl); // 사용자가 접근하려던 URL로 리다이렉트 (로그인 실패 후에도 이동) response.sendRedirect(targetUrl); } 그런데 if문의 마지막 줄을 보면 로그인 실패 후에도 targetUrl 즉, 사용자가 접근하려했던 페이지로 이동시킨다고 작성 되어 있는데 ... 로그인 실패 시에도 targetUrl로 리다이렉트시키는 이유가 뭔가요?? 로그인에 실패하면 로그인 페이지에 남아있어야 하는 것 아닌가요 ...?
[질문 내용] 고급 1편을 들으면서 2편과 3편을 동시에 같이 들어도 되나요? 고급 2편이나 3편에서 앞서 배운 부분을 활용하거나 하는 부분이 있을까요? 람다나 어노테이션 같은 개념을 빨리 보고 싶은데 강의 순서와 독립적으로 들어도 이해에 문제 없을지 궁금해서 질문합니다
앞선 질문에 대한 답변 고맙다 미스터 KILL-9 덕분에 손쉽게 엑셀을 처형 (처리)할 수 있었지 하지만 그 다음 관문이 존재하는군 후후.. 각 STEP 마다 RepeatStatus 에 따라서 트랜잭션이 보장하는건 이해했다 하지만 여러 관계가 존재하는 테이블 데이터 적재 시 트랜잭션을 어떻게 보장할지 감이 안온다 미스터 KILL-9 예를 들어 설명하지.. FILE-A, FILE-B 각각 다른 컬럼을 가진 파일들이지 FILE-A는 TABLE-A에 적재하고 FILE-B는 TABLE-B에 적재한다 각 FILE 당 ROW 100개씩 읽으면서 적재하고 문제가 생기면 해당 100건만 롤백할텐데 문제는 TABLE-A 와 TABLE-B의 관계다 TABLE-A 가 부모고 TABLE-B자 자식 테이블인 상황에서 특정 TABLE-B 데이터 롤백 시 TABLE-A 데이터도 마찬가지로 롤백 해야할거 같은데 이런 경우 어떻게 원자성을 보장할 수 있는가에 답변할 수 있겠는가..? 현재 내가 떠오른 방안은 결국은 모든 데이터 처리이니 특정 부분 처리 실패하면 데드 DLQ (Dead Letter Queue) 에 담아서 나중에 처형( 처리)하도록 해야하나 싶다!
Spring Boot + Kotlin + java 21로 진행중이다. 먼저 좋은 강의 너무 고맙고, 나도 다른 사람의 Q&A 처럼 BatchConfig가 있어서 수행시에 부트만 떴다가 꺼지고 아무것도 출력되지 않아서 당황했다 (그래서 강의 자료에 더이상 불필요하다 보다는 제거하라고 명시하면 좋을 것 같다) 질문이 있는데 1. BatchConfig가 있고 없고가 어떤 것 때문에 수행결과에 차이점을 주는거야? 2. Kotlin을 사용한 Spring Boot에서는 @Import를 사용하지 않았는데, 이때도 자동으로 설정을 해주는걸까? BatchConfig가 있다는 것 자체로 배치 수행은 안하고 부트가 바로 끝나버려 두 질문 다 그냥 궁금증일 뿐이다. BatchConfig를 제거하면 수행에는 문제가 없다.