킬구형, 청크 지향 처리 시 벌크 read를 할 수 있는 방법이 있어? ItemReader 사용 시 소스에서 1건 씩 데이터를 읽어온다면, 단건 SELECT문이 매번 날아가거나 아니면 JDBC의 ResultSet next()를 사용하는 것 같은데,, 전자면 DB 부하가 너무 심하고 후자여도 네트워크 IO가 꽤 발생할 것 같은데.. 지금 수백? 수천만? 건 정도의 데이터를 마이그레이션 해야하는 업무를 받았는데, 청크 생성 시 DB 부하나 네트워크 트래픽을 좀 줄이고 싶은데 다건 SELECT를 통해 처리하는 방법이 있을까?
마지막 강의에서 진행한 헥사고날 아키텍처 테스트에서 저는 아래와 같이 에러가 발생하고 있는데 어떻게 수정을 해야 할까요? 소스 코드는 동일한 것 같은데... 무엇이 차이인지 모르겠어요 13:09:39.840 [Test worker] INFO com.tngtech.archunit.core.PluginLoader -- Detected Java version 17.0.12 Architecture Violation [Priority: MEDIUM] - Rule 'Layered architecture considering all dependencies, consisting of layer 'domain' ('com.inflearn.splearn.domain..') layer 'application' ('com.inflearn.splearn.application..') layer 'adapter' ('com.inflearn.splearn.adapter..') where layer 'domain' may only be accessed by layers ['application', 'adapter'] where layer 'application' may only be accessed by layers ['adapter'] where layer 'adapter' may not be accessed by any layer' was violated (1 times): Method <com.inflearn.splearn.SplearnTestConfiguration.passwordEncoder()> calls method <com.inflearn.splearn.domain.member.MemberFixture.createPasswordEncoder()> in (SplearnTestConfiguration.java:19) java.lang.AssertionError: Architecture Violation [Priority: MEDIUM] - Rule 'Layered architecture considering all dependencies, consisting of layer 'domain' ('com.inflearn.splearn.domain..') layer 'application' ('com.inflearn.splearn.application..') layer 'adapter' ('com.inflearn.splearn.adapter..') where layer 'domain' may only be accessed by layers ['application', 'adapter'] where layer 'application' may only be accessed by layers ['adapter'] where layer 'adapter' may not be accessed by any layer' was violated (1 times): Method <com.inflearn.splearn.SplearnTestConfiguration.passwordEncoder()> calls method <com.inflearn.splearn.domain.member.MemberFixture.createPasswordEncoder()> in (SplearnTestConfiguration.java:19) at com.tngtech.archunit.lang.ArchRule$Assertions.assertNoViolation(ArchRule.java:94) at com.tngtech.archunit.lang.ArchRule$Assertions.check(ArchRule.java:86) at com.tngtech.archunit.library.Architectures$LayeredArchitecture.check(Architectures.java:347) at com.inflearn.splearn.HexagonalArchitectureTest.hexagonalArchitecture(HexagonalArchitectureTest.java:22) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at com.tngtech.archunit.junit.internal.ReflectionUtils.invoke(ReflectionUtils.java:111) at com.tngtech.archunit.junit.internal.ReflectionUtils.invokeMethod(ReflectionUtils.java:103) at com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor$ArchUnitMethodDescriptor.execute(ArchUnitTestDescriptor.java:203) at com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor$ArchUnitMethodDescriptor.execute(ArchUnitTestDescriptor.java:173) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
사실지금까지 강의들으면서 오류나면 코파일럿에게 오류난거 보여주고 꾸역꾸역 22강까지 왔는데요 현재4가지 수정해야 할 오류가 있는데 오류1 http request 3개 오류 오류2 워드프레스 발행시 그림 크기조절 안됨 오류3 call image 노드 계속 실행 오류4 ai 불러오는 메인노트 오류 등등 앞으로도 오류가 계속있을건데 그냥 전체 워크플로어를 json코드로 만들어 export 하고 커서 ide같은 ide에 일괄 오류 수정 요청 후 다시 import 하여 오류를 수정할수 있을지 여쭤봅니다
http request 3개에서 에러뜸 api 호출 문제 createplanai에서 too many request에러 call blog image maker 나 다른 AI에서 계속로딩 되는데 워드프레스 가면 발행되있음 어렵네요~~ 코파일럿하고 물어봐서 모바텀엑스에서 하는데 해결이 안돼네요 도와주세요
저는 그냥 이중포문은 복잡해 보여서 psvm { int row = 5; for(int i = 1 ; i <= row; i++) { sout("*".repeat(i)) } 이렇게 풀었는데 답은 제대로 나오긴 하는데 이중포문은 먼가 조건식이 두개를 복잡해서 처음에 아이디어가 안떠올랐는데 저렇게 풀었는데 이중포문으로 풀어야 나중에 더 복잡한 문제도 구현해 낼수 있나요??
안녕하세요. 먼저 좋은 강의 감사합니다. 몇 번의 우여곡절 끝에 블로그 자동화까지 잘 따라갔습니다. 다만 10번 글을 작성하면 3번 정도는 제목과 다른 엉뚱한 글(데이터 기반 마케팅, 인공지능 이미지 활용 콘텐츠 등의 글) 이 작성됩니다. 어디서 잘못되었나 보니, WritePostAI에서 아웃풋이 안 나갔더라고요. 그래서 이전 노드 내용과는 완전 다른 새로운 내용이 작성된 것 같습니다. 그런데 다시 Execute step을 클릭하면 다시 관련 내용으로 잘 작성됩니다. 왜 그런 건지 궁금합니다. gemini의 일시적인 오류일까요? 그러기에는 너무 자주 일어나는 것 같아서 문의 남깁니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. static 메서드를 사용할 때 어쩔 때는 클래스 자체를 임포트 하시고 어쩔 때는 static 임포트를 하시는데 혹시 기준을 알 수 있을까요?
안녕하세요 !! 도메인 모델의 값 객체 도입편에서 궁금한게 있습니다. 패스워드는 passwordEncoder를 의존하여 암호화와 매치 여부를 확인합니다. 이메일 vo는 검증 패턴이 member만 사용하는 것이 아니라 다른 곳에서도 사용할 수 있고 중복된 코드를 줄이기 위해서 변경하셨습니다. password도 이메일 vo처럼 매번 passwordEncoder를 주입받는 게 아니라 password VO를 만들어서 관리할 수 있을거같은데 패스워드는 의존성 주입으로 해결하게 되신 이유가 궁금합니다
오타 발견 root@4ea86c29f1f7:/data# redis-cli set attack:2 "{\"id\":2,\"timestamp\":\"${TODAY}T09:28:47\",\"targetIp\":\"203.0.113.50\",\"attackType\":\"XSS\",\"payload\":\"<script>alert('HACKED!');</script>\"}" 위 명령어 실행 시, 아래와 같은 에러 메시지 발생! bash: !': event not found 에러 발생 원인 bash: !': event not found 에러는 Bash의 히스토리 확장(history expansion) 때문에 납니다. ! 문자(예: HACKED! )가 들어가면 bash가 ! 로 시작하는 히스토리 토큰(예: !! , !$ , !123 )으로 해석하려 하고, 매칭되는 히스토리 항목이 없으면 event not found 오류가 납니다. set +H # 히스토리 확장 끄기 ... redis-cli set attack:2 "{\"id\":2,\"timestamp\":\"${TODAY}T09:28:47\",\"targetIp\":\"203.0.113.50\",\"attackType\":\"XSS\",\"payload\":\"<script>alert('HACKED!');</script>\"}" ... set -H # # 히스토리 확장 켜기 OK redis key들을 set 하기 전에 히스토리 확장을 끄고 실행할 경우 정상 동작
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
YOLO 모드는 Dev Container 같은 격리된 환경에서 사용하여 안정성 확보 => 이 부분이 이해가 안가요. YOLO모드가 권한스킵하는 역할인데, Dev Container 예시를 봐도 무슨 연관이 있는지 잘 모르겠어요. 그냥 YOLO모드는 디렉터리,파일 권한 스킵하기 위해서 쓰는거 아닌가요?
[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주차부터 난이도가 너무 급상승 해서 봐도 이해가 너무 힘듭니다 ㅠㅠ 이걸 계속 해야하는건가 싶어지네요;.. 의미없는 시간이 흘러가는건가 싶고.. 챌린지는 하고 있는데 챌린지 수업을 위해서 또다른 공부를 하게되는꼴이 되어버리는거 같아서 끝까지 완주해야하나 고민됩니다