inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

H2데이터베이스 파일 생성

미해결

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

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

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

[예제][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 조회수 94

DFS/BFS

미해결

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

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

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

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 조회수 138

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 조회수 82

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 조회수 137

커서 킬때마다 오류

미해결

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

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

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

ai 도구 질문

미해결

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

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

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

한국어 설정 방법 문의

미해결

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

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

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

추가 질문드립니다!

미해결

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

안녕하세요. 빠른 답변 감사합니다. Shift+Enter 오류 관련하여 답변 확인하고 몇 가지 더 궁금한 사항이 생겨 질문드립니다! iterm2를 삭제해도 git, node, Homebrew 등 개발 도구들은 전혀 영향 없다고 확인했습니다. Q1. 맥 OS 터미널에서 권한 설정, 개발 도구 설치를 하면 이게 자동으로 iterm2에도 반영이 되는 것인지 궁금합니다! 예를 들면 맥 OS 터미널에서 클로드 코드에 대한 세부 설정을 바꾸면 iterm에도 반영 이 되는 것인지, iterm2 외에 다른 터미널 프로그램(고스티 같은)을 설치해도 마찬가지로 별도 설정없이 적용 되는지 궁금합니다! 그리고 커서에서 변경한 설정이나 권한 설정이 터미널이나 아이텀에도 적용되는지, 그 반대의 경우도 적용이 되는지 도 궁금합니다. 즉, 터미널은 어떤 프로그램을 쓰든 하나라고 생각해도 되나요? Q2. Cursor는 VS Code 기반이라 /terminal-setup을 실행해도 Shift+Enter 대신 Option+Enter로 동작하는 경우가 있다고 확인했습니다! 그럼에도 불구하고... 저는 맥 내장 터미널과 커서 안에서 알트 엔터 줄바꿈이 너무 불편해서 시프트 엔터로 변경하고 싶은데 이것은 방법이 없을까요? 클로드 코드로 옵션 엔터 대신 시프트 엔터로 바꿔달라고 몇번 요청하고(그 사이 여러 파일들을 읽고 분석했는데도) 동작하지 않아.. 혹 방법이 있는지 궁금합니다!

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

운영체제 강의 27분 (CPU 스케줄링 - SRTF)

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

CPU 스케줄링에서 SRTF(Shortest Remaining Time First)에 대해 질문 있습니다. 실제 시험에서 SRTF or SRT or SRF 셋 중에 하나를 쓰면 정답인가요? 시중에 있는 기출문제집의 해답에서는 SRT라고 되어 있어서 질문 드립니다.

  • python
  • java
  • c
  • 정보처리기사
  • 정보처리산업기사
준상 댓글 2 좋아요 0 조회수 75

새로운 기능 추가 할때

미해결

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

이미 목표한 웹어플리케이션을 완성한 다음, git hub에 배포한다음, 새로운 기능을 만들어야 합니다. 새로운 기능이 적지 않을때, 기존의 PRD와 ROADMAP에 내용을 추가해서 개발해야 할까요? 아니면 새로운 기능으로만 구성된 PRD 와 새로운 ROADMAP을 추가로 생성해서 진행하는 것이 좋을까요?

  • react
  • 인공지능(ai)
  • claude
이동윤 댓글 2 좋아요 0 조회수 47

토큰 사용량에 대해 궁금한점이 있어요

미해결

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

안녕하세요. 강의 목적으로 클로드 코드 Pro를 구독하여 현재 섹션22까지 강의 완료 했어요. 하지만 토큰 걱정으로 인해 강의에서 진행하시는 클로드 코드 사용을 많이 따라하지 않으면서 진행해오다가 섹션 22강의와 함께 섹션 22 미션을 진행하면서 토큰을 많이 쓴거같아요. 정상적인 토큰 사용량인지 궁금증이 있어 이렇게 질문을 드리게 되었어요. 스크린샷과 같이 토큰 사용량이 확인되는데 이렇게 사용한것이 정상적인걸까요..?

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

섹션 12. 69번 AI활용 프로젝트 생성1:CoT 프롬프트 엔지니어링 질문

미해결

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

next.Js로 스타터 Kit 생성해달라할때 프로젝트 안에 파일이나 디렉토리있으면 오류 날거라는데 저는 오류가 안나고 잘 진행되었는데 혹시 이유 알 수 있을까요? 선생님과 완전 똑같은 상태였습니다.

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

프롬프트 엔지니어링 체계적인 작성 방법

미해결

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

아래 강의들을 시청하면서, 대충 흐름은 알겠지만 막상 혼자 하려면 이런 방법론들을 어떻게 적용할 지 모르겠습니다. CoT 프롬프트 엔지니어링 (단계별로 생각?) 역할 프롬프트 엔지니어링 (당신은 XXX입니다?) 오류 수정과 명확한 프롬프트 엔지니어링 이 3개의 프롬프팅이 정확히 무엇이며 언제 사용하는 것인지 추상적이게 느껴집니다. 중간중간에 1번과 2번을 동시에 적용하는 거 같기도 하네요. 그리고 혹시 정석적인 템플릿? 같은 게 있다면 알려주세요.

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

cloudinary 관련

미해결

타입스크립트로 배우는 리액트(React.js) : 기초부터 최신 기술까지 완벽하게

if (previewImage) { const formData = new FormData(); formData.append("file", previewImage); formData.append("upload_preset", "react_blog"); // formData.append("api_key", "688125195814112"); // formData.append("api_secret", "S2HFi155abf2HkDpkcgArvWP5HE"); // formData.append("public_id", "87f7932d-354d-4a7f-8f39-5dbf751f1c46"); const { data } = await axios.post( "https://api.cloudinary.com/v1_1/dptshe37e/image/upload", { formData }, ); console.log(data); https://api.cloudinary.com/v1_1/dptshe37e/image/upload { "error": { "message": "Upload preset must be specified when using unsigned upload" } } 일단 강의가 정말 훌륭합니다. 잘 듣고 있고 정말이지 많은 도움이 되고 있습니다. 게시글 등록하기 -4 강을 듣고 있는데 파일 업로드 부분에서 좀 막히네요. 요청 시 오류가 나는데요. 여러가지 방향으로 시도해 봤는데 잘 안되네요. 강의 촬영 시점하고 cloudnary 가 개편되었는데 특별하게 다른 점은 없어 보입니다. 일단 업로드 부분은 보류하고 다음 강의 들어야겠네요. 한번 살펴 봐 주시면 감사하겠습니다.

  • react
  • react-router
  • redux-toolkit
  • zustand
  • react.js
태리바이트 댓글 3 좋아요 0 조회수 90

2022년 2회차 실기 4번

미해결

윤파고의 정보처리기사 DB/프로그래밍 All-In-One

col2만 세어야 하니까 3이죠,,?

  • python
  • java
  • c
  • dbms/rdbms
  • 정보처리기사
andrew98038@gmail. 댓글 1 좋아요 0 조회수 46

저는 왜 콘솔에서 props가 한 줄만 찍히나요?

해결됨

React start with Next.js

next.config.mjs 에서 reactStrictMode 설정을 한 것도 아닌데 왜 콘솔에 한 줄만 뜰까요? next.js , react, node.js 버전은 현재 기준 가장 최신 버전이고, mac 환경입니다. npm run dev 로 실행했습니다. 강의시점과의 버전 차이 문제일까요?

  • javascript
  • react
  • 웹앱
  • ajax
속터져 댓글 1 좋아요 0 조회수 82

커서 에서 우측 사이드바 설정법이 궁금합니다.

해결됨

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

선생님 화면을 보면 좌측 사이드바(?) 말고 우측도 이렇게 설정해두셨는데 어떻게 할 수 있는지 궁금합니다. 선생님처럼 클로드 코드를 고정핀으로 해두고 쓰고 싶은데, 설정방법에 대한 안내가 없어 질문드립니다! 좌측에는 추가가 되는걸로 알고 있는데 좌측은 이미 사용되는게 있으니 우측에 하고싶습니다! secondary side bar 설정까지는 찾았는데 해당 창으로 사이드바를 띄워도 선생님처럼 설정할수는 없네요 ㅠㅠ... 방법 알려주시면 감사하겠습니다!

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

claude wrapper 에 대해서도 강의 해주세요

미해결

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

부탁드립니다.

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

인기 태그

인프런 TOP Writers

주간 인기글