inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

handleSubmit을 useCallback으로

해결됨

따라하며 배우는 리액트 A-Z[19버전 반영]

handleSubmit를 useCallback으로 감싸서 만들어봤는데 const handleSubmit = useCallback( (e) => { e.preventDefault(); let newTodoData = todoData.map((data) => { if (data.id === id) { data.title = editedTitle; } return data; }); console.log(newTodoData); setTodoData(newTodoData); setIsEditing(false); }, [todoData, setTodoData, id, editedTitle] ); 의존성배열에 setTodoData 를 넣지않으면 아래오류가 나면서 handleSubmit 함수가 실행되지 않더라구요 React Hook useCallback has a missing dependency: 'setTodoData'. Either include it or remove the dependency array. If 'setTodoData' changes too often, find the parent component that defines it and wrap that definition in useCallback 제 지식으론 의존성배열에 todoData만 넣으면 될줄 알았는데 왜 setTodoData 까지 같이 넣어야하는지 궁금합니다!

  • react
  • redux
  • tdd
  • typescript
  • next.js
뽀개즈아 댓글 1 좋아요 0 조회수 470

axios.js 에 인스턴스를 만든 후 Banner.js 에 import 할 때 문의

미해결

따라하며 배우는 리액트 A-Z[19버전 반영]

안녕하세요! axios.js 에 인스턴스를 만들고 그 인스턴스를 export default instance; 로 export 해줬는데 그렇다면 Banner.js 에서 가져와서 사용할 때 import instance from "../api/axios"; 라고 가져와서 instance.get(requests.fetchNowPlaying); 이런 식으로 사용하는게 맞지 않나 생각이 들어서 질문 드립니다.

  • react
  • redux
  • tdd
  • typescript
  • next.js
Donald 댓글 1 좋아요 1 조회수 594

자바의 메소드 (Method), return, 전달 값(Parameter)가 갑자기 헷갈립니다...ㅎ

해결됨

나도코딩의 자바 기본편 - 풀코스 (20시간)

안녕하세요, 다름이 아니라 제가 메소드 (Method), 전달 값 (Parameter), return 개념을 공부하는 도중, 갑작스레 개념이 헷갈려서 이렇게 글을 남깁니다. 나도코딩 자바편에 나온 동영상 강의와 함께, 커뮤니티에도 등록된 글을 보면서 다시 한 번 복습을 하고 있는데요...ㅎ String getAddress(){ return "서울시 어딘가"; } 이제 전달 값, 그러니까 Parameter가 없는 메소드인 경우, 그냥 위와 같이 return으로 문장을 출력하는 반면에, 갑작스레 parameter와 return이 함께 있는 메소드가 헷갈리더라구요...ㅎ (반환 타입) 메소드 이름 (전달값1, 전달값2, ...) { 반환 값 선언 // 예시 : int result = 0 // 메소드가 수행하는 여러 명령문들 수행 동작 1; // 괄호 안의 전달 값들을 사용 및 동작 수행 수행 동작 2; // 전달 값1, 2들을 이용하여 수행 2 수행 동작 3; // 전달 값1, 2들을 이용하여 수행 3 ... return 반환 값; // return result - 결과 값 반환 } int add (int x, int y) { int result = x + y; // 이미 int result = 0;을 내포함 return result; } 제가 위의 메소드들에서 이해 한 부분은 (혹시 몰라서 다른 예시도 들고 왔습니다..ㅎ), void를 제외한 나머지 자료형 타입 (String, int 등...)들은 return을 가지고, 이 때 return을 하는 것은 반환 값이 되는데, 여기서 return 반환 값은 이미 이전에 괄호 안의 전달 값들을 이용하여, 수행 동작들을 마친 다음 반환 값을 저장하는 과정으로 이해하는 게 맞을까요? 이렇게 메소드가 수행 된 다음엔, main 메소드에서 참조변수를 통해 수행되는 과정으로 최종 결과를 출력하는 거구요...ㅎ 이렇게 이해하는게 올바르게 이해 한 것일까요? (반환 타입) variable = 메소드 이름(); System.out.println(variable); System.out.println();을 쓰는게 일반적이진 않지만, (다른 메소드를 불러서 처리하거나, 아니면 메소드 안에 이미 print문이 저장되어 있을 수도 있기 때문에) 제 스스로 이해를 돕기 위해서 일련의 과정을 위에 나온 것처럼 제 나름대로 정리해봤습니다. 또한 프로그래밍 공부를 계속하면서, 객체 지향 프로그래밍언어(OOP)의 기초 부분에서 가끔 헷갈릴 때가 있는데 (평상시에는 잘 씀에도 불구하고,) 그 때 마다 좋은 답글을 남겨주셔서 감사합니다. 덕분에 어려운 Java 프로그래밍 공부 잘 헤쳐 나가고 있습니다 :) 다시 한 번 감사합니다 :)

  • java
  • 객체지향
  • method
  • 메소드
  • return
  • 반환값
  • 전달값
  • parameter
댓글 2 좋아요 0 조회수 2174

질문좀 드릴께요 지도

해결됨

Next.js 시작하기(feat. 지도 서비스 개발)

안녕하세요 선생님 혹시 지도는 구글지도를 이용해서 하는 방법은 없을까요? 수강신청했습니다

  • seo
  • next.js
  • vercel
  • csr
  • ssg
  • ssr
나만죽을순없지 댓글 1 좋아요 1 조회수 531

Lists.js에서 List컴포넌트로 프롭스 보내줄때,

해결됨

따라하며 배우는 리액트 A-Z[19버전 반영]

<List key={data.id} id={data.id} title={data.title} completed={data.completed} todoData={todoData} setTodoData={setTodoData} provided={provided} snapshot={snapshot} /> List에 프롭스 key를 넘겨주었는데 왜 List.js에서는 key를 받지 않은 건가요?

  • react
  • redux
  • tdd
  • typescript
  • next.js
뽀개즈아 댓글 1 좋아요 1 조회수 359

오류 해결에 도움이 필요합니다.

미해결

[리뉴얼] React로 NodeBird SNS 만들기

시퀄라이즈 sync 부분 강의까지 들었습니다. port는 3306번을 다른게 차지하고 있어서 3307을 사용했습니다. node app.js 했는데 실행이 안되네요.. 오류를 파일 부분을 찾아보려했는데 다 모듈 관련된 부분인거 같아서 어디를 봐야 할지 막혔습니다. 워크벤치도 연결이 안되는 상황입니다. 서버 실행 중 ConnectionRefusedError [SequelizeConnectionRefusedError]: connect ECONNREFUSED 127.0.0.1:3307 at ConnectionManager.connect (/Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17) at processTicksAndRejections (node:internal/process/task_queues:96:5) at async ConnectionManager._connect (/Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:220:24) at async /Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:174:32 at async ConnectionManager.getConnection (/Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:197:7) at async /Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/sequelize.js:304:26 at async MySQLQueryInterface.tableExists (/Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/dialects/abstract/query-interface.js:102:17) at async Function.sync (/Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/model.js:939:21) at async Sequelize.sync (/Users/jinkyungjung/Documents/programming/TIL/react-nodebird/prepare/back/node_modules/sequelize/lib/sequelize.js:376:9) { parent: Error: connect ECONNREFUSED 127.0.0.1:3307 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16) { errno: -61, code: 'ECONNREFUSED', syscall: 'connect', address: '127.0.0.1', port: 3307, fatal: true }, original: Error: connect ECONNREFUSED 127.0.0.1:3307 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16) { errno: -61, code: 'ECONNREFUSED', syscall: 'connect', address: '127.0.0.1', port: 3307, fatal: true } }

  • react
  • redux
  • node.js
  • express
  • next.js
ea 댓글 1 좋아요 0 조회수 998

loginProcessingUrl 절대경로 상대경로 차이점

미해결

스프링 시큐리티

3) Form Login 인증 강의처럼 코드 작성하였는데 로그인이 안되고 계속 /login 페이지로 이동해서 코드를 자세히 보니 경로 설정이 잘못되었더군요. .loginProcessingUrl("/login_proc") 위 코드로 정상적으로 로그인이 되는데 경로를 슬래쉬를 붙이지 않고 'login_proc' 으로만 넣어주니까 로그인 먹통이었습니다. 혹시 어떤 이유에서 그런지 문의드려도 될까요? 아래처럼 태그를 보면 어차피 루트에서 이동하는건데 슬래쉬가 있고 없고의 차이점이 궁금하네요. 감사합니다. <form class="form-signin" method="post" action="login_proc">

  • java
  • spring-security
  • Spring Security
  • spring-boot
원데이 댓글 1 좋아요 0 조회수 1466

mysql 1064에러

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] h2말고 기존 mysql을 설치한게있어 heidisql을 이용하여 강의자료 코드 복붙하였습니다. 계속 1064 신택스 에러가 떠서 찾아봐도 해결이 되지않아 직접 생성했는데 아래처럼 해도 상관없나요?

  • spring
  • java
  • MVC
  • spring-boot
나마스테 댓글 1 좋아요 0 조회수 622

getter setter 질문

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 마지막 8분 22초에서 System.out.println 으로 member의 getName을 찍어서 확인하는데 Form html에서 input name을 name="name"이 아닌 name="asd"로 변경후 Form class에서도 private String name을 private String asd로 바꾸고 getter에서 return도 name->asd로 변경했습니다 이때 메서드명은 getName() 그대로 남겼는데 sout(시스템아웃프린트)로 찍어보니까 null이 뜹니다. 메서드명을 getAsd()로 바꾸니까 정상적으로 작동이 되구요 게터와 세터 메서드명을 꼭 변수의 이름과 맞춰야하는건가요? 이유가뭔가요?

  • spring-boot
  • spring
  • java
  • MVC
나마스테 댓글 1 좋아요 0 조회수 501

JDK 설치(해결완료 )

미해결

나도코딩의 자바 기본편 - 풀코스 (20시간)

설치부터 막히네요 ㅎㅎ 일단 echo로 시작하는 두 문장은 터미널에 붙여 넣고 실행했습니다. 그리고 brew help 터미널에 적고 다음으로 brew tap adoptopenjdk/openjdk 실행했습니다. brew search jdk한 후 brew install --cask adoptopenjdk8했는 데 오류가 뜨네요. 이유를 모르겠습니다.

  • java
  • oop
크레이지핫독 댓글 3 좋아요 0 조회수 1759

함수형 인터페이스(전반전)에서 작성한 코드가 이해되지 않습니다.

미해결

나도코딩의 자바 기본편 - 풀코스 (20시간)

안녕하세요 선생님🙇‍♀️ 함수형 인터페이스(전반전) 강의를 듣다 이해가 되지 않는 부분이 있어 질문 드립니다. public class _04_FunctionalInterface { public static void main(String[] args) { KRWConverter converter = new KRWConverter(); // converter.convert(2); convertUSD(converter, 2); } public static void convertUSD(Convertible converter, int USD) { converter.convert(USD); } } public static void convertUSD(Convertible converter, int USD) {converter.convert(USD);} 에서 (Convertible converter, int USD) 이 부분이 이해가 되지 않았습니다. Convertible converter 를 사용한 이유가 무엇인가요?

  • oop
  • java
고 예진 댓글 1 좋아요 0 조회수 487

http://localhost:8080/hello-mvc?name=Spring 오류

해결됨

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

똑같이 한 거 같은데 오류가 뜨네요,,,

  • java
  • spring
  • spring-boot
  • MVC
모깅 댓글 2 좋아요 0 조회수 1201

http://localhost:8080/hello 로그인 ㅠㅠ

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. http://localhost:8080/hello 에 들어가면 로그인이 하라는 창이 뜨구요 취소 시 Unauthorized 이렇게 뜹니다. ㅠㅠ 프로젝트 새로 만들어도 똑같아서요 build.gradle 에 들어가도 시큐어리티가 없네요 ㅠㅠ

  • spring-boot
  • MVC
  • java
  • spring
박혜란 댓글 1 좋아요 0 조회수 773

route에서 res.status(201).json시 undefined

해결됨

[리뉴얼] React로 NodeBird SNS 만들기

안녕하세요 선생님 게시글 수정을 route에서 처리하고 마지막으로 res.status(201).json(fullPost) 이렇게 게시글 정보를 담아서 보내려는데 자꾸 사가에서 데이터를 undefined로 받습니다..담기 전에 fullPost를 콘솔로 찍어보면 데이터가 잘 들어가 있는데 프론트로 넘어가면 undefined로 바뀌어요. 그래서 단순 문자열도 res.status(201).json('성공');이런 식으로 보내봤는데도data가 이렇게 undefined로 뜨는건 어느 부분을 봐야 하는 건가요?

  • redux
  • react
  • nodejs
  • express
  • Next.js
뉸뉴 댓글 1 좋아요 0 조회수 516

객체 연관관계를 선택적으로 사용할 수 있는 방법은 없을까요?

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] member 을 조회할때 team 을 같이 조회하는 경우와 member 만 조회하는 경우 선택적으로 유연하게 사용가능한 방법이 있을까요? member 목록만 심플하게 사용하고 싶은 경우가 있을것 같은데, 굳이 team 정보가 필요하지 않는 경우에는 불필요하게 조회가 일어날 수 있을것 같아서요 이런경우에는 어떻게 사용하면 좋을지 궁금합니다.

  • JPA
  • java
수달달 댓글 1 좋아요 0 조회수 444

엔티티 컬럼의 CamelCase 를 SnakeCase로 매핑해주는 옵션 확인

미해결

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

엔티티내에 컬럼 CamelCase 를 SnakeCase 로 변환해 쿼리하는 옵션이 이거인가요? spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy

  • JPA
  • java
수달달 댓글 1 좋아요 0 조회수 748

h2로 테이블 생성이 안됩니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

모든 클래스에 entity를 넣은 것은 확인했고요 ㄴh2도 켜져있는 거 확인했습니다. 스프링부트는 3.0.3버전 h2는 2.1.214버전을 사용하고 있습니다. entity도 저렇게 diagram으로 잘 나오는 것을 확인했습니다. application.properties는 다음 사진과 같이 설정해뒀습니다. build파일에 classes에 entity들도 잘 들어가 있고 실행하는데는 에러가 안납니다. 실행시키고 h2에 들어가보면 테이블이 생성이 안돼있고 스프링부트 로그에도 테이블 생성 쿼리가 안보입니다. 뭐가 문제일까요?

  • JPA
  • spring-boot
  • spring
  • java
  • 웹앱
새벽형개발자 댓글 1 좋아요 0 조회수 966

빌드 실행

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. spring boot 에 내장되어 있는 tomcat 말고 따로 설치되어 있는 tomcat 으로 서버가 돌아가는 거 같은데 계속 오류가 뜨네요 내장되어 있는 tomcat으로 빌드하고싶은데 설정을 어떻게 바꿔야할까요 ??

  • spring-boot
  • java
  • spring
  • MVC
도연 댓글 1 좋아요 0 조회수 685

spring data jpa를 적용했을 때 회원가입과 중복회원 확인 메소드 오류가 납니다.

해결됨

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 코드는 강사님과 똑같이 작성했는데 Invalid property 'id' of bean class 라고 에러가 떴습니다. 제 생각엔 JpaRepository가 구현한 save 메소드가 setId를 해주지 못했거나 SpringDataJpaMemberRepository가 JpaRepository가 구현한 save 메소드를 주입을 못해준 거 같은데 어떻게 해결을 해야할지 모르겠어서 질문 올립니다ㅠㅠ Member.java 코드 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; public long getId(){ return id; } public void setId(long id){ this.id = id; } MemberRepository.java 코드 package hello.hellospring.repository; import hello.hellospring.domain.Member; import java.util.List; import java.util.Optional; public interface MemberRepository { Member save(Member member); Optional<Member> findById(Long id); Optional<Member> findByName(String name); List<Member> findAll(); } SpringDataJpaMemberRepository.java 코드 package hello.hellospring.repository; import hello.hellospring.domain.Member; import org.springframework.data.jpa.repository.JpaRepository; import java.util.Optional; public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository { @Override Optional<Member> findByName(String name); } SpringConfig.java 코드 package hello.hellospring.service; import hello.hellospring.repository.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.persistence.EntityManager; @Configuration public class SpringConfig { private final MemberRepository memberRepository; @Autowired public SpringConfig(MemberRepository memberRepository) { this.memberRepository = memberRepository; } @Bean public MemberService memberService() { return new MemberService(memberRepository); } } 에러 로그 org.springframework.beans.InvalidPropertyException: Invalid property 'id' of bean class [hello.hellospring.domain.Member]: Getter for property 'id' threw exception; nested exception is java.lang.reflect.InvocationTargetException 중략 Caused by: java.lang.NullPointerException at hello.hellospring.domain.Member.getId( Member.java:17 )

  • spring
  • java
  • MVC
  • spring-boot
김예찬 댓글 1 좋아요 0 조회수 1285

오류 질문

미해결

따라하며 배우는 리액트 A-Z[19버전 반영]

검색을 해보니 컴포넌트 명 관련해서 에러 라고 나와져있는데 소스 를 확인해봐도 오타 문제는 아닌거같아 강사님께 여쭤봅니다 ㅠㅜ 무슨문제일까요 ?

  • tdd
  • typescript
  • react
  • redux
  • Next.js
junwoo 댓글 1 좋아요 0 조회수 537

인기 태그

인프런 TOP Writers

주간 인기글