inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

merge() 관련 질문

미해결

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

안녕하세요. 영한님 책으로 복습 중에 궁금한 점이 생겼습니다. 117p 에서 merge() 의 동작 과정을 설명하는 내용 중에 아래의 내용이 있습니다. 2. 파라미터로 넘어온 준영속 엔티티의 식별자 값으로 1차 캐시에서 엔티티를 조회한다. 여기서 "준영속 엔티티면 1차 캐시에 당연히 없을텐데 왜 1차 캐시를 조회하지?" 라는 의문이 생겼습니다. 질문1) 어떠한 경우 때문에 1차 캐시를 조회하는 것인가요? 추가로, 119p 에 아래의 내용이 있습니다. 병합은 준영속, 비영속을 신경 쓰지 않는다. ~ 따라서 병합은 save or update 기능을 수행한다. 질문2) save 기능을 하는 경우에 merge() 내부적으로 persist() 로직이 포함되어 있나요?

  • java
  • jpa
조태준 댓글 1 좋아요 0 조회수 43

return하는 이유

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.여태 변수선언하면서 한번도 return 쓴적 없는데 이번 강의에서 sum을 return 해준 이유가 무엇인가요

  • java
  • 객체지향
안병욱 댓글 2 좋아요 0 조회수 83

stringtemplate를 이용하여 where절 검색 방법 질문 드립니다.

미해결

실전! Querydsl

Expressions.stringTemplate() 로 사용자 정의 복호화 함수로 필드를 복호화 후 containIgnorecase로 검색을 하고싶은데 서로 타입 에러로 되지않는데 혹시 이걸 해결을 할 수 있는 방법이 없을까요? where 절에 Expressions . stringTemplate ( "함수명{0})" , 엔티티.필드명 ).contailIgnoreCase(searchText); 이런 형태로 검색을 하고싶었는데 아무리 검색을 해봐도 찾을 수가 없어 질문을 남겨봅니다.

  • java
  • jpa
이성재 댓글 1 좋아요 0 조회수 108

설정관련질문드립니다

미해결

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 단축키를 누르다 실수로 어떤키를 잘못누르게 되어서 상단에있는 최근에 열어본 창이 보이지 않게 되었습니다. 예를 들면 StartTestMain.java HelloThread.java 등등 켜져있는창이 보이지 않습니다 기존 설정으로 다시 돌아가고 싶은데 어떻게 해야할까요?

  • java
  • 객체지향
  • 동시성
  • multithread
  • thread
댓글 2 좋아요 0 조회수 83

@Async 여부의 차이가 궁금합니다.

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

@Async @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) public void handleEventJoinCompleted(EventJoinCompletedEvent event) { try { kakaoTalkMessageApi.sendEventJoinMessage( event.getPhoneNumber(), event.getEventName() ); } catch (Exception e) { log.error("알림 발송 실패. eventId={}, eventName={}", event.getEventId(), event.getEventName(), e); } } 이 로직은 비동기적으로 이벤트를 처리하는 알림서비스 로직입니다. @TransactionalEventListner(Aftercommit)를 사용하면 메인 로직이 commit 된 이후에 해당 이벤트가 실행하는 걸로 알고있는데 @Asnyc를 붙히지 않았더라도 메인 로직에서 끝마치고 해당 이벤트를 실행하니깐 똑같은 결과가 나오지 않나요? 차이가 궁금합니다!

  • java
  • spring
  • mysql
  • redis
  • 이력서
kongminoo 댓글 2 좋아요 0 조회수 192

45강 빌드 오류입니다.

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

안녕하세요? 강사님 덕분에 열공하고 있습니다. 2가지 문의드립니다. 1) 프론트엔드의 리액트 소스 부탁드립니다. ==> cyj10241@gmail.com 2) 45강 빌드를 하려는데 오류가 납니다. 저는 java를 17를 인스톨했습니다. [ec2-user@ip-172-31-43-148 Spring_Web]$ java -version openjdk version "17.0.15" 2025-04-15 LTS OpenJDK Runtime Environment Corretto-17.0.15.6.1 (build 17.0.15+6-LTS) OpenJDK 64-Bit Server VM Corretto-17.0.15.6.1 (build 17.0.15+6-LTS, mixed mode, sharing) [ec2-user@ip-172-31-43-148 Spring_Web]$ chmod +x ./gradlew [ec2-user@ip-172-31-43-148 Spring_Web]$ ./gradlew build -x test FAILURE: Build failed with an exception. * What went wrong: Could not determine the dependencies of task ':bootJar'. > Could not resolve all dependencies for configuration ':runtimeClasspath'. > Failed to calculate the value of task ':compileJava' property 'javaCompiler'. > Cannot find a Java installation on your machine (Linux 6.1.134-152.225.amzn2023.x86_64 amd64) matching: {languageVersion=17, vendor=any vendor, implementation=vendor-specific, nativeImageCapable=false}. Toolchain download repositories have not been configured. * Try: > Learn more about toolchain auto-detection and auto-provisioning at https://docs.gradle.org/8.14/userguide/toolchains.html#sec:auto_detection . > Learn more about toolchain repositories at https://docs.gradle.org/8.14/userguide/toolchains.html#sub:download_repositories . > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org . 위와 같은 오류가 나는데 해결 방법을 알고 싶습니다. 감사합니다.

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
박정아 댓글 2 좋아요 0 조회수 358

에러

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. Execution failed for task ':test'. > There were failing tests. See the report at: file:///C:/Users/tahee/OneDrive/%EB%B0%94%ED%83%95%20%ED%99%94%EB%A9%B4/hello-spring/build/reports/tests/test/index.html * Try: > Run with --scan to get full insights. BUILD FAILED in 1s 4 actionable tasks: 2 executed, 2 up-to-date 5분 27초까지 하고 실행했는데 오류나요 챗지피티가 하라는 거 다 해봤는데도 소용이 없네요 이거 가지고 3시간째 매달려 있는데 해결해주실 분 계실까요 하 모든 코드에 에러 없는데 실행만 하면 저래요

  • java
  • spring
  • mvc
  • spring-boot
박태희 댓글 1 좋아요 0 조회수 167

변수 선언

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 변수를 만들 때 어떤 때는 예를 들어 int total;로 하고 어떨 때는 int total=0;으로 하시던데 무슨 차이인가요? 그리고 어떨때는 int total;로 하면 오류뜨고 int total=0;으로 하면 오류가 없어지던데 메커니즘이 어떻게 되는지 모르겠습니다.

  • java
  • 객체지향
안병욱 댓글 1 좋아요 0 조회수 57

12강에서 shrinkColumns 의 설정이 되지 않아요

해결됨

윤재성의 자바 기반 안드로이드 앱개발 Part 1 - UI Programming

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" android:shrinkColumns="0" android:stretchColumns="*" tools:context=".MainActivity"> <TableRow android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/Button5" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button6" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button7" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button8" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button9" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button10" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button11" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button12" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button13" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button14" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button15" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button16" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button17" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button18" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> </TableRow> </TableLayout> 버튼들의 너비도 바꿔봤는데 shrinkColumns 적용이 되지 않아요 왜 그런걸까요..?

  • java
  • android
승쨩 댓글 1 좋아요 0 조회수 78

강의 내용 관련 이해가 잘 되지 않아 질문 남겨봅니다.

해결됨

[개념 & 이론] 대기업 근무하며 경험한 Redis를 야무지게 사용하기

main 은 id를 가지고 있고, 이를 복제한 replica 들은 main 의 아이디로 그룹화되어 있음 그런데, main 이 어떠한 일로 인해(삭제 등) 새롭게 만들어지면 새로운 id 를 가지게 됨 이때 구 id 를 가지고 그룹화되어 있는 replica 들은 현재의 main 과 id 가 다르니 전체 동기화가 일어남 그러면, [구 id 를 가지고 그룹화되어 있는 replica 들] 은 계속 구버전 id 를 가지게 되는건가요? 아니면, 동기화 후 새로운 id 로 다시 그룹화가 되는 걸까요? 추가로, 강의 초반에 위 내용 관련해서 '카프카와 비슷하다'라는 설명이 나왔는데, 카프카에 대해 잘 모르는 입장에서는 조금 혼란스러울 수 있을 것 같습니다. 가능하시다면 추후 강의를 개선하실 계획이 있으실 경우 이 부분을 조금 더 자세히 설명해주시면 좋을 것 같습니다.

  • 아키텍처
  • redis
  • cache
김지환 댓글 2 좋아요 0 조회수 112

active profiles는 인텔리제이 커뮤니티 버전에 없네요

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

무료버전은 해당 기능설정을 지원하지 않네요. 뭐지? 했던분들 참고하시면 좋겠네요

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
장은성 댓글 2 좋아요 0 조회수 75

update 쿼리 발생

미해결

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

안녕하세요. JpaMain.java 코드에서 em.persist 순서에 따라 UPDATE 문이 발생하는데요. em.persist(parent); em.persist(child1); em.persist(child2); 이렇게 적었을 땐 강사님과 똑같은 코드로 update 문이 발생하지 않고, 아래와 같이 작성했을 때 update 쿼리가 마지막에 한번 더 나갑니다. em.persist(child1); em.persist(child2); em.persist(parent); 이유가 무엇인지 궁금합니다. 편의 메서드에서 child을 더티 체크하기 때문에 update 쿼리가 나간 것 같은데, 왜 순서를 바꿨을 땐 update 쿼리가 발생하지 않는지 잘 모르겠습니다!

  • java
  • jpa
nick 댓글 1 좋아요 0 조회수 50

Cache-Aside 패턴에서 Cache Miss 시

해결됨

[개념 & 이론] 대기업 근무하며 경험한 Redis를 야무지게 사용하기

안녕하세요 강사님! Look-Aside 패턴과 Thundering Herd 관련 강의(3:37~) 내용을 듣다가 궁금한 점이 있어 질문드립니다. 캐시-어사이드 패턴에서 캐시 미스가 발생했을 때, 강의 중 보여주신 그림에서는 ‘ 캐시가 직접 DB를 조회하고 데이터를 업데이트한 뒤 서버에 응답까지 전달하는 구조 ’ 처럼 표현해주셔서 다소 혼란스럽습니다. 제가 알고 있기로는 캐시-어사이드 패턴은 캐시 미스 발생 시 애플리케이션(서버)이 직접 DB를 조회하고, 조회한 데이터를 캐시에 갱신(PUT)한 뒤 클라이언트에 응답하는 방식으로 동작하는 것으로 알고 있습니다. 만약 MSA 환경에서 캐시 서버가 별도로 구성되어 있고, 데이터를 API 통신 형태로 제공하는 구조라면 그림으로 그리시면서 설명해주신 부분이 어느 정도 이해가 되지만, 해당 파트가 MSA 를 전제하고 설명하는 맥락은 아닌 것 같아서요. 혹시 이 부분에 대해 제가 잘못 이해한 부분이 있다면 피드백 주시면 감사하겠습니다!

  • 아키텍처
  • redis
  • cache
100and 댓글 2 좋아요 0 조회수 105

예제2

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. Scanner 반복예제2에서 코드 똑같이 입력했는데 마지막 int sum 줄에서 오류가 발생합니다.. 왜 이러는걸까요?

  • java
  • 객체지향
미미 댓글 2 좋아요 0 조회수 87

try-with-resources 강제 종료 시 자원 정리

미해결

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 클라이언트의 자원 정리에 대해 궁금한 점이 생겨 질문드립니다. 코드에서 클라이언트의 자원은 try-with-resources 를 적용해 정리하는데, 만약 클라이언트 프로그램을 IntelliJ에서 종료 버튼으로 종료하면 클라이언트의 try-with-resources의 close() 메서드가 호출이 되어 자원이 정리되고 프로그램이 종료되는지, 아니면 바로 프로그램이 종료되고 OS의 책임으로 넘어가는지 궁금합니다. 항상 좋은 강의 감사드립니다!

  • java
  • 네트워크
  • 객체지향
hi 댓글 1 좋아요 0 조회수 120

공통 속성을 여러 개 사용하고 싶을 때 사용방법?

미해결

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

데이터베이스 정규화 등으로 그럴 일은 거의 없겠지만, 만약 @MappedSuperclass 어노테이션을 사용하는 여러 클래스가 있을 때 여러 개를 적용하고 싶다면 어떻게 사용하면 될까요? 자바는 단일 상속만 지원해서 궁금해지네요. 1번 질문과 비슷한 질문일 수 있는데 상속 관계 매핑과 공통 속성(@MappedSuperclass)을 같이 사용하고 싶을 때도 어떤 식으로 해야하는지 궁금합니다.

  • java
  • jpa
nick 댓글 2 좋아요 0 조회수 103

스프링과정은 언제 오픈하나요?

미해결

[2025] 자바 입문 부트캠프 JAVA DEEP DIVE [PART2/2 심화편]

현재 스프링 과정을 공부해야하는데 강사님 커리큘럼을 따라갈려고 기다리고있는중입니다. 향후 남은컨텐츠는 언제 출시될지 일정이 궁금합니다.

  • java
  • jsp
  • 객체지향
c7681330 댓글 2 좋아요 0 조회수 113

junit5 사용하시는 분들

미해결

스프링 기반 REST API 개발

@ParameterizedTest @CsvSource({ "0, 0, true", "100, 0, false", "0, 100, false" }) public void testFree(int basePrice,int maxPrice,boolean isFree){ // Given Event event = Event.builder() .basePrice(basePrice) .maxPrice(maxPrice) .build(); //When event.update(); //Then assertThat(event.isFree()).isEqualTo(isFree);; } @RunWith(JUnitParamsRunner.class) 는 junit4 여서 사용하지 못하고 junit5 에서는 @Test 로 파라메터 값을 지원하지 않기 때문에 파라메터 테스트를 위해 @ParameterizedTest ` CvSure` 으체해서스트했습니다

  • java
  • spring
  • rest-api
정동희 댓글 1 좋아요 0 조회수 109

다른 강의 언제나오나용?

해결됨

[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편

안녕하세요! 24년도부터 강의 잘 보고 있습니다! 덕분에 알고리즘이 재미있어졌습니다! 이직준비를 위해 강의를 연장했는데, 다른 강의는 언제쯤 나오나요? 너무 너무 기다리고 있습니다~ 그리디 부탁드립니당 ㅎㅅㅎ 강의 영상마다 질문이 있으면 언제든 그리고 바로 질문 남겨주세요 ! 질문할 때 가장 정확하게 이해할 수 있습니다. 해당 영상과 관련된 질문들을 해주실 때 제가 가장 정확히 답변 드릴 수 있습니다! 취업 전반의 상담이나, "제 코드가 왜 틀렸는지 알려주세요"와 같이 광범위한 질문은, 질문자의 상황에 따라 답변이 달라질 수 있기 때문에, 정확한 답변을 드리기가 어렵습니다 :( 이런 분들을 위해서는 멘토링 항목으로 별도 제공하고 있으니, 다음 링크를 참고해주세요! 이 링크를 통해서는 본인의 코드가 왜 틀렸는지 모를 때 질문을 주셔도 좋고, 취업 전반(면접 준비, 자소서, CS 면접 등) 에 관련한 질문을 주시면 답변 드리겠습니다 :) "이 질문은 해도 되나?"라는 생각이 드신다면 우선 남겨주세요! 제가 답변 드리기 어려운 건 멘토링에 올려 달라고 재요청 드리겠습니다 :)

  • java
  • 코딩-테스트
  • 알고리즘
  • dfs
세진:) 댓글 2 좋아요 1 조회수 116

인기 태그

인프런 TOP Writers

주간 인기글