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

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

해결됨

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

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

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

2022년 2회차 실기 4번

미해결

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

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

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

figma variable 반응형 디자인 결과물 공란

미해결

Figma MCP × AI x Vibe Coding 4시간만에 완성하는 반응형 웹포트폴리오

figma variable 연결 결과물에 url이 없는데, 어디서 받을 수 있을까요? 다시 걸어주시면 감사하겠습니다.

  • HTML/CSS
  • figma
  • 포트폴리오
  • 인공지능(ai)
  • 바이브코딩
채희 댓글 2 좋아요 0 조회수 114

이론 v0.91 오타 문의

해결됨

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

10. 프로그래밍 언어 활용 에서 3.java 관계연산자/비트연산자의 문제풀이 보시면 F | T 할때 F 를 0000 T를 1111로 표현하던데 true는 0001 아닌가요? F|T -> 0000 | 1111 -> 1111 -> T 라고 되어잇고 XOR 연산자에도 T를 1111 로 표기해서 묻습니다.

  • python
  • java
  • c
  • 정보처리기사
  • 정보처리산업기사
최민영 댓글 2 좋아요 0 조회수 89

9장 상속 문제와 풀이 질문

미해결

김영한의 실전 자바 - 기본편

@Override public void print() { super.print(); System.out.println("- 저자: " + author + ", isbn:" + isbn); } 다름이 아니고 @Override를 하는 이유가 부모에서 사용하는 메서드를 자식에서 재사용을 위해서 사용하신다고 했는데 궁금한 게 강의 내용 중에 객체를 생성하고 메서드를 사용할 경우 먼저 자식을 보고 그다음에 없으면 부모를 보신다고 하셨는데 그러면 이미 자식에는 print가 있으니까 저렇게 super.print();를 붙이면 굳이 @Override를 안 붙여도 상관없지 않나요? 관례가 있어서 많은 개발자분들께서 붙인다고 하셨는데 저 경우에는 재사용이 아니고 바로 자식 쪽에서 메서드가 있으니까 굳이 부모까지는 갈 필요가 없지 않나요??

  • java
  • 객체지향
탕면이 댓글 1 좋아요 0 조회수 71

NaverBookRepository.class 의 위치에 따른 모듈간의 의존성에 대해 질문드립니다.

해결됨

서버개발자 과제전형 완벽가이드 - 1편

학습관련 질문을 남겨주세요! 상세히 작성주시면 더 좋아요 🙂 안녕하세요, 강사님 🙂 이번 질문도 혼자 먼저 구현 후, 강사님의 강의를 들으며 리팩토링을 진행하며 궁금증이 하나 생겨 질문 드립니다. 저는 search-api 모듈의 com.library.repository의 NaverBookRepository.class 위치를 강사님과 다르게 external:naver-client 에 위치시켰습니다.(NaverBook/KakaoBook은 external 에 종속된 구현체라고 생각) 그러다 보니, naver-client 모듈이 search-api 모듈에 있는 BookRepository, PageResponse, SearchResponse 를 알아야 했으며, naver-client 모듈이 search-api 모듈을 implementation('...') 으로 의존?참조? 하게 되었습니다. // search-api 모듈 public interface BookRepository { PageResponse<SearchResponse> search(...); } 이렇게 external -> search-api 로 흘러가는 의존 방향에 이질감이 듭니다.(외부 API 가 app 을 안다..?) 그래서 모듈간 의존 방향이 search-api -> external 되도록 강사님 강의처럼 NaverBookRepository 를 search-api 모듈에 위치 시켜도 NaverClient 때문에 search-api에 feign 종속성이 생긴 다는 것이 모듈간 의존성 격리가 되지 않아서 멀티모듈의 장점이 퇴색되었다고 생각합니다. 강사님은 과제가 아닌 실무에서 search-api 와 external 간의 모듈 격리를 어떻게 하시며, 의존 방향을 어떻게 하시는지 궁금합니다. 저의 부족한 지식을 확장할 수 있게 강사님의 인사이트 공유해주시면 감사하겠습니다!

  • java
  • spring
  • spring-boot
  • database
종혁 댓글 2 좋아요 1 조회수 73

31분 50초 JAVA 문제

해결됨

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

안녕하세요 31분 50초 Child() 함수에 this(5000) 이 있는데 부모를 호출 할 수 있나요? 저는 super, this 아무것도 없을때 명시적으로 super 는 없지만 자동으로 부모를 호출한다 super 가 있으면 부모를 호출한다. super, this 는 함께 못 쓰인다. 이렇게 알고 있어서, 문제를 풀 때 super 가 명시적으로 없어도 항상 숨어있다고 생각하고 접근했습니다. 그래서 Child() 생성자에 this 가 있으면 super 는 실행되지 않는다고 생각해서 부모 생성자 호출 과정을 제외하고 풀었는데, 결과가 다르게 나와서 헷갈렸습니다 this 가 있는데도 부모 호출이 맞는지 궁금합니다. 그리고 부모를 호출한다면 child() -> parent() -> parent(int x) -> child(int x) 순서가 맞는지도 알려주세요

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

렌더링 차단 리소스 javascript 실행에 관련해서 질문 있습니다.

해결됨

DOM에서 픽셀까지, 브라우저 렌더링과 CRP 완전 정복 - [DOM 완전 정복 Part 3]

안녕하세요? 수업을 듣다 질문이 있어서 남기게 됐습니다! 브라우저가 렌더링 과정이 DOM & CSSOM -> Render Tree -> layout 단계 -> Paint -> Compositing 단계 순서로 이해하고 있습니다. 이번 수업에서는 <script src="url"></script>를 발견하면 DOM 파싱을 멈추고 script 파일을 다운 후에 script가 먼저 실행한 다음 DOM을 다시 파싱 하는 걸로 이해했습니다. 여기서 궁금한게 생겼는데요. <body> 끝에 script 태그가 있고, script 코드 내용에서 DOM에 접근해서 한 요소의 widht, height, background를 변경하는 코드가 있어 먼저 실행 되었다면 브라우저 렌더링 어느 부분에 영향을 미치는지 궁금합니다. 제가 생각하기에는 script가 먼저 실행되고 나머지 파싱이 되는거라는 수업 내용에 따르면 DOM & CSSOM에서 적용이 된 후 다음 단계들을 따를 것 같습니다. 이 수업을 듣기 전에는 리플로우, 리페인트 과정이 있을 거라고 생각했으나 리플로우, 리페인트 과정이 없겠다는 생각이 들어 질문하게 되었습니다. 감사합니다.

  • HTML/CSS
  • javascript
  • dom
  • frontend
eddie 댓글 2 좋아요 0 조회수 86

렌더링 차단 리소스 관련해서 CSS 질문이 있습니다.

해결됨

DOM에서 픽셀까지, 브라우저 렌더링과 CRP 완전 정복 - [DOM 완전 정복 Part 3]

안녕하세요? 수업 잘 듣고 있습니다. 막연하게 알고 있던 렌더링에 대해서 자세히 알 수 있어서 정말 많은 도움이 되고 있습니다. 수업을 듣다 보니 궁금한 것이 생겨서 문의 드립니다. 수업 내용중에 CSS를 <head> 태그 안에 위치 하고 최적화 전력으로 불필요한 CSS는 media속성, loadCSS, 동적으로 분리 한다고 하셨는데요. CSS는 media속성 즉 media query를 말씀 하신 걸까요? loadCSS와 동적으로 분리 한다고 하셨는데 이 부분들이 감이 잡히지 않아 질문 드립니다. 감사합니다.

  • HTML/CSS
  • frontend
eddie 댓글 2 좋아요 0 조회수 76

SpringBoot 4.X에서의 Querydsl 설정

미해결

실전! Querydsl

plugins { id 'java' id 'org.springframework.boot' version '4.0.5' id 'io.spring.dependency-management' version '1.1.7' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'study' version = '0.0.1-SNAPSHOT' description = 'querydsl202604' java { toolchain { languageVersion = JavaLanguageVersion.of(21) } } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-h2console' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-webmvc' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa-test' testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' // test 롬복 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' // Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta' annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') } // querydsl 추가 def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } configurations { querydsl.extendsFrom compileClasspath } compileQuerydsl { options.annotationProcessorPath = configurations.querydsl } 이렇게 하면 build 폴더에도 Q붙은 엔티티들 나오고요. 테스트 코드 짤 때도 Q붙은 엔티티들 불러올 수 있습니다. 참고하세요.

  • java
  • jpa
  • querydsl
댓글 2 좋아요 0 조회수 250

Breadth MMFI 404 에러

해결됨

(AI 퀀트) 바이브 코딩으로 미국 주식 AI 자동 분석 시스템 만들기 with Claude Code

안녕하세요 Part 2 프롬프트 5번에서 MMFI 지표 바탕으로 Breadth 관련 지표를 두고 있는데, 404에러가 확인됩니다. (강사님 코드로도) 연관 강의 : 200일선의 마법 & Breadth & 금리/신용 센서 연관 프롬프트: _breadth_signal 메서드를 추가해줘. yfinance로 ^MMFI(NYSE 50일 MA 위 종목 비율)를 3개월치 가져와서: - 70% 이상: risk_on - 50~70%: neutral - 30~50%: risk_off - 30% 미만: crisis 데이터 수집 실패 시 {'breadth_pct': None, 'breadth_regime': 'neutral'} 반환. logger.debug로 에러 로깅하되 시스템은 멈추지 않도록 해줘. 다른 대체 지표를 두고 해야할 것 같은데, 어떤게 좋을까요?

  • HTML/CSS
  • python
  • 머신러닝
  • 인공지능(ai)
  • 바이브코딩
AiwkBon 댓글 1 좋아요 0 조회수 72

이론 요약 파일 버전1

해결됨

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

v1.0 이론을 업로드해주신다고 하였는데, 혹시 언제쯤 업로드될까요?

  • python
  • java
  • c
  • 정보처리기사
  • 정보처리산업기사
osoh63 댓글 3 좋아요 0 조회수 159

해당 프로젝트 깃헙 주소도 공유해주시나요?!

해결됨

(AI 퀀트) 바이브 코딩으로 미국 주식 AI 자동 분석 시스템 만들기 with Claude Code

안녕하세요~ 강의 잘 듣고 있습니다! ㅎㅎ 저의 경우 Codex를 이용중에 있어서 vscode + codex 를 통해 실습해보고 있는데 미세하게 claude 모델이랑 다른 output이 나오긴 합니다. 관련하여 비교분석 할 수 있게끔 강사님 깃헙 코드도 같이 있으면 좋을 것 같습니다~

  • HTML/CSS
  • python
  • 머신러닝
  • 인공지능(ai)
  • 바이브코딩
AiwkBon 댓글 4 좋아요 0 조회수 107

리스트, 딕셔너리,튜플 강의 위치

해결됨

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

(기출)2025년 3회 코드해설 14분 40초 리스트, 딕셔너리, 튜플에 대해 말씀해주시는데, python부분을 모두수강하였는데 이 부분은 따로 들은 기억이 없어 혹시 어디에 이부분 설명이 있는지 궁금하여 질문남깁니다. 좋은 강의 잘듣고있습니다. 감사합니다.

  • python
  • java
  • c
  • 정보처리기사
  • 정보처리산업기사
hangil lee 댓글 2 좋아요 0 조회수 68

자료 다운로드 건 문의 입니다.

해결됨

2026 벼락치기 합격! 기출문제 집중 정보처리기사 실기

안녕하세요 수업노션자료파일에 보면 자료 다운로드 가 있는데 받으면 empty zip 파일만 생깁니다. 파일 받을 수 없는건가요? 보내주신 메일로 받아도 똑같다고 제가 다시 확인 후 메일 보내 달라고 요청했는데 회신이 없습니다 .확인 부탁 드립니다.

  • python
  • java
  • c
  • 정보처리기사
  • database
violin_ku 댓글 2 좋아요 0 조회수 91

부모 호출 관련 여부

해결됨

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

Java: 상속을 정리하는 문제 10개 Java 강의를 들으면서 자식을 호출할 때 부모 기본 생성자 또는 부모꺼를 호출 후 자식 것을 호출해야한다는 내용과 자식만 호출해도 되는 경우의 내용이 섞여서 나오는데 자식을 호출할 때 부모 기본 생성자 또는 부모꺼를 호출 후 자식 것을 호출하는 경우가 어떤 것이 있는지 정리해서 알려주실 수 있을까요?

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

인기 태그

인프런 TOP Writers

주간 인기글