inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

[건의][6장][작전1] deprecated 메소드

미해결

죽음의 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
댓글 2 좋아요 1 조회수 109

next.js 를 2대이상 실행하는 경우 제공하는 cache 기능들은 어떻게 되나요?

해결됨

Next.js 마스터 클래스: Part 3 - 실전 아키텍처 완성 (서버-클라이언트 동기화, 극한의 최적화, 풀스택 보안)

MSA 에서 BFF 로 활용하는 경우 클라우드 환경에서 성능과 관련하여 2~3대 이상 실행하는 경우 관련 기능들은 어떻게 동작하나요? part2 렌더링 패러다임의 전환: 캐싱 혁명 (Caching Revolution) part3 Next.js 16 서버 캐시와 TanStack Query의 동기화 또 이와 다른 주의 할 점이나 고려해야 하는 부분이 있나요?

  • javascript
  • react
  • typescript
  • next.js
  • frontend
icoon22 댓글 2 좋아요 0 조회수 114

오타?

미해결

React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지

2 퀴즈 강의에서 설명된 Create React App(CRA)과 Bit의 비교 중, Bit의 특징으로 언급된 것은 무엇인가요? 이거 오타 아닌가요? Bit -> Vite?

  • react
  • React-Context
  • react-router
  • tailwindcss
  • react-query
krug 댓글 1 좋아요 0 조회수 54

노션 데이타베이스 연결 문제

미해결

클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지

노션데이터베이스를 API 생성하고 두개 데이터베이스 만든 후 Invoice-web으로 연결하고 .env.local에 데이터베이스키와 데이터베이스 id까지 입력했지만 오류가 발생합니다. 혼자 고치려고 이래저래 해봤는데 문제를 못 찾겠네요 ㅜㅜ

  • react
  • 인공지능(ai)
  • claude
댓글 1 좋아요 0 조회수 91

달라진 클로드코드 UI에서 release-notes가 안떠요

미해결

클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지

보시다 싶이 릴리즈 노트 명령어가 뜨질 않습니다..ㅠㅠ 윈도우입니다

  • react
  • 인공지능(ai)
  • claude
info 댓글 1 좋아요 0 조회수 69

Verify domains to restrict who can publish GitHub Pages on them.

미해결

클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지

github > settings > Pages 에 이런 메시지가 있네요 Verify domains to restrict who can publish GitHub Pages on them.

  • react
  • 인공지능(ai)
  • claude
김재영 댓글 2 좋아요 0 조회수 69

클로드가 bash 쉘을 못 읽어요

미해결

클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지

클로드 코드를 윈도우 환경에 설치하고 node.js, 크롬, git 까지 설치를 완료했습니다. 그리고 나서 윈도우 cmd와 git bash, powershell 과 같은 터미널에서 node / npm / git / Claude 버전을 확인하면 잘 출력 되는데 클로드 코드 내부에서 버전을 확인하려고 하면 bash 쉘을 읽을 수 없다면서 안 됩니다. 일부러 사용자 계정도 하나 더 만들어서 영문으로 바꾸기도 했는데 왜 안될까요ㅠ환경변수 설정도 전부 맞춰서 했는데도 안됩니다

  • react
  • 인공지능(ai)
  • claude
인예지 댓글 2 좋아요 0 조회수 229

wsl 에 tmux 설치후 사용하려고 합니다.

미해결

클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지

안녕하세요! 저는 윈도우os를 사용하고있는데 agent teams 를 분할창에서 사용하고싶어 wsl를 설치하고 거기에 tmux 설치 후 활성화해서 클로드를 실행했는데 창 분할이 안되네요. 요금제 max 쓰고 있고, 공식문서 보고 "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS"="1" 도 설정했는데(settings.local.json에 설정) 분할 창은 안뜨고 이렇게 진행이 됩니다. 이게 in-process 방식인것같은데,, wsl 환경에서는 tmux 써도 분할창으로 작업은 안되는건가요? 에이전트들끼리 진행할때 대화하는 내용을 보고싶습니다.

  • react
  • 인공지능(ai)
  • claude
dalki7711 댓글 1 좋아요 0 조회수 195

H2데이터베이스 파일 생성

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] H2 데이터베이스 파일 생성방법 강의자료에서는 저장된 설정이 server가 아닌 embedded로 되어있는데 어떤것을 따라야할까요?

  • java
  • jpa
김주현 댓글 2 좋아요 0 조회수 98

[예제][3장][작전2] windows 에서 마지막 예제

미해결

죽음의 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 댓글 2 좋아요 1 조회수 97

DFS/BFS

미해결

2026 코딩테스트 올인원 [JAVA]

학습 관련 질문을 남겨주세요. 구체적으로 적을수록 좋아요! 마크다운과 단축키를 활용하면 글을 더 편하게 작성할 수 있어요. 커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해보세요. 편하게 질문주세요:) 직접 답변 드리도록 하겠습니다~ 안녕하세요. 제가 DFS/BFS부분이 많이 약해서 ㅠㅠ 질문입니다. lockers = [[1, 2], [3], [], [0]] 이런 이중행렬인데 인접리스트로 코드 변환 안하고 생각해도 괜찮다는 의미 인거죠…? 감사합니다.

  • java
  • 코딩-테스트
  • 알고리즘
  • data-structure
제비꼬리 댓글 2 좋아요 1 조회수 80

음성 파일 두개가 들리네요

미해결

[LottieFiles 공식] After Effects로 만드는 Lottie 애니메이션 (수료증 발급)

음성이 겹쳐서 들립니다

  • after-effects
  • Lottie
  • 3d
type func 댓글 0 좋아요 0 조회수 51

6.8 zustand 세션 질문입니다.

미해결

한 입 크기로 잘라먹는 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 댓글 2 좋아요 0 조회수 144

fetchBoardsOfMine, fetchBoardsCountOfMine 에러 문의드립니다

미해결

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

프로젝트 진행 중 fetchBoardsOfMine과 fetchBoardsCountOfMine 요청 시 회원정보 인증에 실패했다는 응답이 옵니다. 같은 accessToken을 입력했을 때 fetchUserLoggedIn 요청 시에는 정상적인 응답이 오는데 위의 두 요청에선 실패응답이 오는 상황입니다. 혹시 fetchBoardsOfMine과 fetchBoardsCountOfMine에서 추가적인 인증이나 요청값이 필요한 건가요? 추가적으로 학습자료 노션에 있는 REST-API 주소( http://practice.codebootcamp.co.kr/api-docs )는 접속이 안되고 있습니다.

  • react
  • node.js
  • seo
  • graphql
  • next.js
tlstjs0712 댓글 1 좋아요 0 조회수 86

CLAUDE.md 200줄 이하 기준

미해결

클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지

클로드는 매 대화(요청/응답)마다 CLAUDE.md 를 읽나요? 루트 CLAUDE.md는 항상 읽고, 하위 CLAUDE.md는 해당 폴더에 접근할 때만 읽잖아요. 그러면 /rules CLAUDE.md는 항상 읽나요? 아니면 조건부로 읽나요? 200줄 이하 규칙은 어떤 CLAUDE.md가 준수해야 하나요? 루트 CALUDE.md만 준수? 개별 CLUADE.md 각각 준수? 모든 CLUADE.md를 합쳐서 준수?

  • react
  • 인공지능(ai)
  • claude
매콤한각설탕 댓글 2 좋아요 0 조회수 139

커서 킬때마다 오류

미해결

클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지

커서에서 터미널을 킬때 마다 아래와같이 느낌표가 뜨면서 아래와 같은 확장을 원합니다. 계속 재시동을 하고 있는데 킬때마다 이러는데 원인은 무엇인지 혹시 해결방법이 있나요?

  • react
  • 인공지능(ai)
  • claude
동영배 댓글 2 좋아요 0 조회수 83

ai 도구 질문

미해결

React Three fiber(R3F)로 배우는 인터렉티브 3D 웹 개발

혹시 glb 파일을 이미지 파일만 보고 만들어주는 ai 툴 같은게 있을까요..?

  • javascript
  • react
  • typescript
  • 인터랙티브-웹
  • three.js
  • webgl
  • react-three-fiber
jadubell 댓글 1 좋아요 0 조회수 94

한국어 설정 방법 문의

미해결

클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지

settings.json 파일에 language에 설정 만으로 셋팅이 된다고 하는데요. 에러가 발생합니다. 왜그런 건지 문의드립니다.

  • react
  • 인공지능(ai)
  • claude
댓글 1 좋아요 0 조회수 74

인기 태그

인프런 TOP Writers

주간 인기글