173만명의 커뮤니티!! 함께 토론해봐요.
미해결
죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
형 ... @Bean public Step threatAnalysisStep( JpaPagingItemReader<Human> humanThreatDataReader, ItemProcessor<Human, TargetPriorityResult> threatAnalysisProcessor, FlatFileItemWriter<TargetPriorityResult> targetListWriter ) { return new StepBuilder("threatAnalysisStep") .<Human, TargetPriorityResult>chunk(10, transactionManager) .reader(humanThreatDataReader) .processor(threatAnalysisProcessor) .writer(targetListWriter) .taskExecutor(taskExecutor()) // deprecated 되어서 안씀 // .throttleLimit() .build(); } ... 에서 .throttleLimit() 부분이 5 이후로 deprecated 된다고 명시되어 있어. 관심사 분리로 인해서 taskExecutor 정의 부분에서 설정하라고 권장하는 것을 확인했거든. 현재 강의가 사실상 Spring Batch 5.x 까지의 기본 내용과 원리를 살펴봤잖아 ? 그렇다 하더라도 혼란을 줄 수 있기 때문에 해당 부분은 삭제하던지 아니면 추가 내용을 기재해야 할 것으로 보여.
java spring spring-boot spring-batch backend
2026-04-09T10:56:12.374Z
댓글 2
좋아요 1
조회수 109
해결됨
Next.js 마스터 클래스: Part 3 - 실전 아키텍처 완성 (서버-클라이언트 동기화, 극한의 최적화, 풀스택 보안)
MSA 에서 BFF 로 활용하는 경우 클라우드 환경에서 성능과 관련하여 2~3대 이상 실행하는 경우 관련 기능들은 어떻게 동작하나요? part2 렌더링 패러다임의 전환: 캐싱 혁명 (Caching Revolution) part3 Next.js 16 서버 캐시와 TanStack Query의 동기화 또 이와 다른 주의 할 점이나 고려해야 하는 부분이 있나요?
javascript react typescript next.js frontend
icoon22
2026-04-09T10:00:30.308Z
댓글 2
좋아요 0
조회수 114
해결됨
Next.js 마스터 클래스: Part 3 - 실전 아키텍처 완성 (서버-클라이언트 동기화, 극한의 최적화, 풀스택 보안)
수업 자료가 없어요.
javascript react typescript next.js frontend
icoon22
2026-04-09T09:51:06.021Z
댓글 2
좋아요 0
조회수 89
미해결
React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
2 퀴즈 강의에서 설명된 Create React App(CRA)과 Bit의 비교 중, Bit의 특징으로 언급된 것은 무엇인가요? 이거 오타 아닌가요? Bit -> Vite?
react React-Context react-router tailwindcss react-query
krug
2026-04-09T08:42:01.923Z
댓글 1
좋아요 0
조회수 54
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
노션데이터베이스를 API 생성하고 두개 데이터베이스 만든 후 Invoice-web으로 연결하고 .env.local에 데이터베이스키와 데이터베이스 id까지 입력했지만 오류가 발생합니다. 혼자 고치려고 이래저래 해봤는데 문제를 못 찾겠네요 ㅜㅜ
2026-04-09T08:20:11.354Z
댓글 1
좋아요 0
조회수 91
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
보시다 싶이 릴리즈 노트 명령어가 뜨질 않습니다..ㅠㅠ 윈도우입니다
info
2026-04-09T08:03:26.292Z
댓글 1
좋아요 0
조회수 69
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
github > settings > Pages 에 이런 메시지가 있네요 Verify domains to restrict who can publish GitHub Pages on them.
김재영
2026-04-09T07:25:46.814Z
댓글 2
좋아요 0
조회수 69
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
이미지 캡쳐 후 클로드 코드 실행 후 터미널에 붙혀지지가 않는데 해결 방법 부탁드립니다.
mskwon333
2026-04-09T06:14:15.038Z
댓글 3
좋아요 0
조회수 180
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
클로드 코드를 윈도우 환경에 설치하고 node.js, 크롬, git 까지 설치를 완료했습니다. 그리고 나서 윈도우 cmd와 git bash, powershell 과 같은 터미널에서 node / npm / git / Claude 버전을 확인하면 잘 출력 되는데 클로드 코드 내부에서 버전을 확인하려고 하면 bash 쉘을 읽을 수 없다면서 안 됩니다. 일부러 사용자 계정도 하나 더 만들어서 영문으로 바꾸기도 했는데 왜 안될까요ㅠ환경변수 설정도 전부 맞춰서 했는데도 안됩니다
인예지
2026-04-09T06:13:12.588Z
댓글 2
좋아요 0
조회수 229
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
안녕하세요! 저는 윈도우os를 사용하고있는데 agent teams 를 분할창에서 사용하고싶어 wsl를 설치하고 거기에 tmux 설치 후 활성화해서 클로드를 실행했는데 창 분할이 안되네요. 요금제 max 쓰고 있고, 공식문서 보고 "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS"="1" 도 설정했는데(settings.local.json에 설정) 분할 창은 안뜨고 이렇게 진행이 됩니다. 이게 in-process 방식인것같은데,, wsl 환경에서는 tmux 써도 분할창으로 작업은 안되는건가요? 에이전트들끼리 진행할때 대화하는 내용을 보고싶습니다.
dalki7711
2026-04-09T05:35:56.105Z
댓글 1
좋아요 0
조회수 195
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] H2 데이터베이스 파일 생성방법 강의자료에서는 저장된 설정이 server가 아닌 embedded로 되어있는데 어떤것을 따라야할까요?
김주현
2026-04-09T04:23:04.555Z
댓글 2
좋아요 0
조회수 98
미해결
죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
... @Slf4j @Configuration @RequiredArgsConstructor public class LogProcessingJobConfig { private final JobRepository jobRepository; private final PlatformTransactionManager transactionManager; private final String BASE_PATH = "C:\\Users\\user\\Desktop\\batch\\section3\\flatfileitemwriter"; @Bean public Job logProcessingJob( Step createDirectoryStep, Step logCollectionStep, Step logProcessingStep ) { return new JobBuilder("logProcessingJob", jobRepository) .start(createDirectoryStep) .next(logCollectionStep) .next(logProcessingStep) .build(); } @Bean public Step createDirectoryStep(SystemCommandTasklet mkdirTasklet) { return new StepBuilder("createDirectoryStep", jobRepository) .tasklet(mkdirTasklet, transactionManager) .build(); } @Bean @StepScope public SystemCommandTasklet mkdirTasklet( @Value("#{jobParameters['date']}") String date ) { SystemCommandTasklet tasklet = new SystemCommandTasklet(); tasklet.setWorkingDirectory(BASE_PATH); String collectedLogsPath = "collected_ecommerce_logs\\" + date; String processedLogsPath = "processed_logs\\" + date; try { tasklet.setCommand("cmd.exe", "/c", "mkdir", collectedLogsPath, processedLogsPath); tasklet.setTimeout(3000); } catch (Exception e) { log.error("mkdirTasklet error: ", e); } return tasklet; } @Bean public Step logCollectionStep(SystemCommandTasklet scpTasklet) { return new StepBuilder("logCollectionStep", jobRepository) .tasklet(scpTasklet, transactionManager) .build(); } @Bean @StepScope public SystemCommandTasklet scpTasklet( @Value("#{jobParameters['date']}") String date ) { SystemCommandTasklet tasklet = new SystemCommandTasklet(); tasklet.setWorkingDirectory(BASE_PATH); String processedLogsPath = "collected_ecommerce_logs\\" + date; StringJoiner commandBuilder = new StringJoiner(" & "); for (String host : List.of("localhost")) { // Windows 환경에서 해당 코드를 적용하려면 ssh 관련 설정들을 찾아야 해서 주석 처리 // String command = String.format("scp %s:~/ecommerce_logs/%s.log %s\\%s.log", host, date, processedLogsPath, host); String sourcePath = BASE_PATH + "\\ecommerce_logs\\" + date + ".log"; String command = String.format("copy %s %s\\%s.log", sourcePath, processedLogsPath, host); commandBuilder.add(command); } tasklet.setCommand("cmd.exe", "/c", commandBuilder.toString()); tasklet.setTimeout(10000); return tasklet; } @Bean public Step logProcessingStep( MultiResourceItemReader<LogEntry> multiResourceItemReader, LogEntryProcessor logEntryProcessor, FlatFileItemWriter<ProcessedLogEntry> processedLogEntryJsonWriter ) { return new StepBuilder("logProcessingStep", jobRepository) .<LogEntry, ProcessedLogEntry>chunk(10, transactionManager) .reader(multiResourceItemReader) .processor(logEntryProcessor) .writer(processedLogEntryJsonWriter) .build(); } @Bean @StepScope public MultiResourceItemReader multiResourceItemReader( @Value("#{jobParameters['date']}") String date ) { MultiResourceItemReader<LogEntry> resourceItemReader = new MultiResourceItemReader<>(); resourceItemReader.setName("multiResourceItemReader"); resourceItemReader.setResources(getResources(date)); resourceItemReader.setDelegate(logFileReader()); return resourceItemReader; } private Resource[] getResources(String date) { try { String formattedBasePath = BASE_PATH.replace("\\", "/"); String location = "file:///" + formattedBasePath + "/collected_ecommerce_logs/" + date + "/*.log"; PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); return resolver.getResources(location); } catch (IOException e) { throw new RuntimeException("Failed to resolve log files", e); } } @Bean public FlatFileItemReader<LogEntry> logFileReader() { return new FlatFileItemReaderBuilder<LogEntry>() .name("logFileReader") .delimited() .delimiter(",") .names("dateTime", "level", "message") .targetType(LogEntry.class) .build(); } @Bean public LogEntryProcessor logEntryProcessor() { return new LogEntryProcessor(); } @Bean @StepScope public FlatFileItemWriter<ProcessedLogEntry> processedLogEntryFlatFileItemWriter( @Value("#{jobParameters['date']}") String date ) { String outputPath = Paths.get(BASE_PATH, "processed_logs", date, "processed_logs.jsonl").toString(); ObjectMapper objectMapper = new ObjectMapper(); JavaTimeModule javaTimeModule = new JavaTimeModule(); javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"))); objectMapper.registerModule(javaTimeModule); return new FlatFileItemWriterBuilder<ProcessedLogEntry>() .name("processedLogEntryJsonWriter") .resource(new FileSystemResource(outputPath)) .lineAggregator(item -> { try { return objectMapper.writeValueAsString(item); } catch (JsonProcessingException e) { throw new RuntimeException("Error Converting item to JSON", e); } }) .build(); } @Data public static class LogEntry { private String dateTime; private String level; private String message; } @Data public static class ProcessedLogEntry { private LocalDateTime dateTime; private LogLevel level; private String message; private String errorCode; } public enum LogLevel { INFO, WARN, ERROR, DEBUG, UNKNOWN; public static LogLevel fromString(String level) { if (level == null || level.trim().isEmpty()) { return UNKNOWN; } try { return valueOf(level.toUpperCase()); } catch (IllegalArgumentException e) { return UNKNOWN; } } } public static class LogEntryProcessor implements ItemProcessor<LogEntry, ProcessedLogEntry> { private static final DateTimeFormatter ISO_FORMATTER = DateTimeFormatter.ISO_DATE_TIME; private static final Pattern ERROR_CODE_PATTERN = Pattern.compile("ERROR_CODE\\[(\\w+)]"); @Override public ProcessedLogEntry process(LogEntry item) throws Exception { ProcessedLogEntry processedLogEntry = new ProcessedLogEntry(); processedLogEntry.setDateTime(parseDateTime(item.getDateTime())); processedLogEntry.setLevel(parseLevel(item.getLevel())); processedLogEntry.setMessage(item.getMessage()); processedLogEntry.setErrorCode(extractErrorCode(item.getMessage())); return processedLogEntry; } private LocalDateTime parseDateTime(String dateTime) { return LocalDateTime.parse(dateTime, ISO_FORMATTER); } private LogLevel parseLevel(String level) { return LogLevel.fromString(level); } private String extractErrorCode(String message) { if (message == null) { return null; } Matcher matcher = ERROR_CODE_PATTERN.matcher(message); if (matcher.find()) { return matcher.group(1); } // ERROR 문자열이 포함되어 있지만 패턴이 일치하지 않는 경우 if (message.contains("ERROR")) { return "UNKNOWN_ERROR"; } return null; } } } 윈도우즈에서는 scp 명령어 관련해서 windows 서비스에서 open-ssh-server 실행 현재 사용하고 있는 사용자(windows 사용자) 가 관리자 권한을 보유 할 경우 programdata/sshd_config 파일 수정 필요 기타 파일 권한 정리 필요 로 인하여 scp 프로그램을 windows 환경의 intellij idea 에서 id, 비번치게끔 ide 콘솔에서 지원하지 않는거 같아. 그래서 제미니가 추천해준대로 실습 환경에서 scp 접속 단을 copy 로 그냥 퉁치는 것으로 바꿔놨어. 나처럼 windows 환경인 사람들이 있으면 혹시나 참고했으면 좋겠네. ObjectMapper, JavaTimeModule 같은 경우는 org.springframework.boot:spring-boot-starter-json 의존성 추가 필요
java spring spring-boot spring-batch backend
qlghwp123
2026-04-09T03:43:12.602Z
댓글 2
좋아요 1
조회수 97
미해결
2026 코딩테스트 올인원 [JAVA]
학습 관련 질문을 남겨주세요. 구체적으로 적을수록 좋아요! 마크다운과 단축키를 활용하면 글을 더 편하게 작성할 수 있어요. 커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해보세요. 편하게 질문주세요:) 직접 답변 드리도록 하겠습니다~ 안녕하세요. 제가 DFS/BFS부분이 많이 약해서 ㅠㅠ 질문입니다. lockers = [[1, 2], [3], [], [0]] 이런 이중행렬인데 인접리스트로 코드 변환 안하고 생각해도 괜찮다는 의미 인거죠…? 감사합니다.
java 코딩-테스트 알고리즘 data-structure
제비꼬리
2026-04-08T23:56:15.371Z
댓글 2
좋아요 1
조회수 80
미해결
[LottieFiles 공식] After Effects로 만드는 Lottie 애니메이션 (수료증 발급)
음성이 겹쳐서 들립니다
type func
2026-04-08T21:48:31.322Z
댓글 0
좋아요 0
조회수 51
미해결
한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편
session.ts import type { Session } from "@supabase/supabase-js"; import { create } from "zustand"; import { combine, devtools } from "zustand/middleware"; type State = { isLoaded: boolean; session: Session | null; }; const initialState = { isLoaded: false, session: null, } as State; const useSessionStore = create( devtools( combine(initialState, (set) => ({ actions: { setSession: (session: Session | null) => { set({ session, isLoaded: true }); }, }, })), { name: "sessionStore", }, ), ); export const useSession = () => { const session = useSessionStore((store) => store.session); return session; }; export const useIsSessionLoaded = () => { const isSessionLoaded = useSessionStore((store) => store.isLoaded); return isSessionLoaded; }; export const useSetSession = () => { const setSession = useSessionStore((store) => store.actions.setSession); return setSession; }; App.tsx import { Button } from "@/components/ui/button"; import RootRoute from "./root-route"; import supabase from "@/lib/supabase"; import { useEffect } from "react"; import { useSetSession } from "@/store/session"; export default function App() { const setSession = useSetSession(); useEffect(() => { //console.log("111"); supabase.auth.onAuthStateChange((event, session) => { setSession(session); }); }, []); return <RootRoute />; } 코드는 강의와 동일하게 잘따라간 것 같은데 개발자 도구 에서 session이랑 isLoaded가 안보입니다. 새로고침을 해도, 탭을 껏다 켜도, 리액트를 껏다 켜도, 제미나이한테 물어봐도 이게 해결이 안됩니다..... +추가 App.tsx import { Button } from "@/components/ui/button"; import RootRoute from "./root-route"; import supabase from "@/lib/supabase"; import { useEffect } from "react"; import { useIsSessionLoaded, useSession, useSetSession } from "@/store/session"; export default function App() { const setSession = useSetSession(); const session = useSession(); const isLoaded = useIsSessionLoaded(); useEffect(() => { //console.log("111"); supabase.auth.onAuthStateChange((event, session) => { setSession(session); }); }, []); useEffect(() => { console.log("현재 세션 상태:", { session, isLoaded }); }, [session, isLoaded]); // 값이 바뀔 때마다 실행됨 return <RootRoute />; } 이렇게 하고 새로고침하면 콘솔에는 찍히긴 합니다 단순한 리덕스 툴킷 버그인지 콘솔에 찍히니까 넘어가도 상관없는지 모르겠습니다.
react typescript react-query supabase zustand
kin412
2026-04-08T15:11:02.669Z
댓글 2
좋아요 0
조회수 144
미해결
[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
프로젝트 진행 중 fetchBoardsOfMine과 fetchBoardsCountOfMine 요청 시 회원정보 인증에 실패했다는 응답이 옵니다. 같은 accessToken을 입력했을 때 fetchUserLoggedIn 요청 시에는 정상적인 응답이 오는데 위의 두 요청에선 실패응답이 오는 상황입니다. 혹시 fetchBoardsOfMine과 fetchBoardsCountOfMine에서 추가적인 인증이나 요청값이 필요한 건가요? 추가적으로 학습자료 노션에 있는 REST-API 주소( http://practice.codebootcamp.co.kr/api-docs )는 접속이 안되고 있습니다.
react node.js seo graphql next.js
tlstjs0712
2026-04-08T13:34:27.011Z
댓글 1
좋아요 0
조회수 86
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
클로드는 매 대화(요청/응답)마다 CLAUDE.md 를 읽나요? 루트 CLAUDE.md는 항상 읽고, 하위 CLAUDE.md는 해당 폴더에 접근할 때만 읽잖아요. 그러면 /rules CLAUDE.md는 항상 읽나요? 아니면 조건부로 읽나요? 200줄 이하 규칙은 어떤 CLAUDE.md가 준수해야 하나요? 루트 CALUDE.md만 준수? 개별 CLUADE.md 각각 준수? 모든 CLUADE.md를 합쳐서 준수?
매콤한각설탕
2026-04-08T12:30:24.464Z
댓글 2
좋아요 0
조회수 139
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
커서에서 터미널을 킬때 마다 아래와같이 느낌표가 뜨면서 아래와 같은 확장을 원합니다. 계속 재시동을 하고 있는데 킬때마다 이러는데 원인은 무엇인지 혹시 해결방법이 있나요?
동영배
2026-04-08T12:04:35.167Z
댓글 2
좋아요 0
조회수 83
미해결
React Three fiber(R3F)로 배우는 인터렉티브 3D 웹 개발
혹시 glb 파일을 이미지 파일만 보고 만들어주는 ai 툴 같은게 있을까요..?
javascript react typescript 인터랙티브-웹 three.js webgl react-three-fiber
jadubell
2026-04-08T11:27:27.483Z
댓글 1
좋아요 0
조회수 94
미해결
클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지
settings.json 파일에 language에 설정 만으로 셋팅이 된다고 하는데요. 에러가 발생합니다. 왜그런 건지 문의드립니다.
2026-04-08T11:23:25.036Z
댓글 1
좋아요 0
조회수 74