inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

layoutMain.html, Deprecated 이슈, 워닝 해결 공유

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

WARN 2620 --- [nio-8080-exec-2] actStandardFragmentInsertionTagProcessor : [THYMELEAF][http-nio-8080-exec-2][template/layout/layoutMain] Deprecated unwrapped fragment expression "template/layout/base :: common_header(~{::title},~{::link})" found in template template/layout/layoutMain, line 3, col 7. Please use the complete syntax of fragment expressions instead ("~{template/layout/base :: common_header(~{::title},~{::link})}"). The old, unwrapped syntax for fragment expressions will be removed in future versions of Thymeleaf. 워닝 해결. 오래된 구문: template/layout/base :: common_header(~{::title},~{::link}) 새 구문: ~{template/layout/base :: common_header(~{::title},~{::link})}

  • spring
  • mvc
gblock gblock 댓글 2 좋아요 0 조회수 3018

게시글 포스트 기능 구현에 대한 질문

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요 수강 중에 질문이 생겼습니다. 현재 게시글 포스트 기능을 구현하고 있습니다를 멤버, 게시글, 댓글 이렇게 DB를 구성하고 각각 엔티티를 만들어서 구현하고 있습니다. 세션에 멤버 엔티티 자체를 저장해서 가져오는 것이 맞는 건지 궁금합니다. 혹은 멤버 엔티티의 pk만 저장하고 select를 날리는 게 맞는 건가요? 댓글을 등록하려면 게시글이 실제 db에 있는지 없는지 조회해야 할 것 같은데, 이러한 게시글 존재 조회 repository로직을 컨트롤러에 놓는게 맞는지 or 서비스(read 트랜잭션이 걸린)에 놓는 것이 맞는지도 궁금합니다.

  • spring
  • mvc
김재연 댓글 1 좋아요 0 조회수 258

4분 26초의 th:onclick에서 타임리프 문법에 궁금한 것이 있습니다.

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

강사님께서 강의에서 타임리프에 | | 이 표시를 넣으면 리터럴이 된다고 하셨는데 그러면 4분 26초에서 강사님에 넣으신 th:onclick="|location.href='@{/basic/items/{itemId}(itemId=${item.id})}'|" 이 코드 부분을 th:onclick="|location.href='@{/basic/items/${item.id}}'|" 이런 식으로 바꿔써도 상관이 없을 것이라고 생각했는데 왜 오류가 나는지 궁금합니다!!!

  • spring
  • mvc
지호 댓글 2 좋아요 0 조회수 758

hello.html thymeleaf 오류

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 위와 같은 오류메시지가 뜨고 localhost:8080/hello 에서 오류페이지만 뜹니다. + localhost:8080 은 오류페이지가 뜨고 localhost:8080/index.html은 원하는 결과페이지가 뜨는 이유는 뭔가요?

  • java
  • spring
  • mvc
  • spring-boot
이솔 댓글 2 좋아요 0 조회수 1240

12:20에서

미해결

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

Test할때 Service인데 왜 MemberRepository로 형변환 안 하고 바로 MemoryMemberRepository로 참조변수 타입을 지정하셨는지 궁금합니다! 일회용 Test라서 그런 건가요??

  • java
  • spring
  • mvc
  • spring-boot
신영 유 댓글 1 좋아요 0 조회수 284

어떨때는 validation을 쓰고, 어떨때는 @exceptionHandler을 써야하나요?

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

둘 다 원하지 않는 상황이 발생했을 때, 처리할 수 있는 방식인 거 같은데요. 제 생각엔 validation(@NotNull 같은...)으로 처리하는 많은 일을 @exceptionHandler을 통해서도 가능하다고 생각하는데요. 그래서 굳이 validation이 필요한 지, 언제 무엇을 사용해야 할지 헷갈려요 예를 들어 웹페이지에서 첨부파일을 받을 때 MultipartFile에서 받을 크기를 넘어서게 되면 SizeLimitExccededException이 발생하잖아요. 여기서 처리 방식이 dto에서 validation을 설정해 주고, bindingResult로 처리해 주는 것과, @exceptionHandler 통해서도 처리를 해줄 수 있다고 보는데요. 주로 어느 상황에는 ~을 쓰고, 어떤 상황에는 ~을 쓰는 게 존재하나요?

  • spring
  • mvc
코찔질이 댓글 1 좋아요 0 조회수 352

Spring MVC 강의를 다 들으면 API 방식의 개발도 쉬워지나요?

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요, 선생님의 로드맵 두 개를 전부 결제해서 현재 스프링 입문 - 스프링 원리 기본편까지 마친 취준생입니다. 다름이 아니라, 제가 졸업을 위해 캡스톤 웹 개발 프로젝트를 프론트엔드 개발자와 협업해서 백엔드 스프링으로 개발하려는데, 이를 MVC 방식이 아니라 API 방식으로 개발하는 것이라면 선생님의 Spring MVC 강의가 아니라 API 개발에 특화된 모듈인 Spring Web이나 Webflux를 먼저 공부하고 MVC는 나중에 듣는게 맞나요? 아니면 선생님의 MVC 강의에서 API 방식의 개발도 가르치시나요? 어떤 순서로 공부를 해야 빠른 시일 내(한 달 정도 남았습니다.)에 API 방식의 백엔드 개발에 익숙해질지 여쭙고 싶습니다. 감사합니다.

  • spring
  • mvc
민설 댓글 1 좋아요 0 조회수 723

반환되는 세션안에는 어떤게 있나요?

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

<질문> 이미 있는 test로 로그인한다고 가정해보겠습니다 그러면 loginMember의 로그를 찍으면 아래와 같이 되고, loginMember= Member(id=1, loginId=test, name=테스터, password=test!) request.getSession()을 하면 HttpSession session = request.getSession(); request의 쿠키정보에서 얻어온 JSESSIONID값으로 Session들을 모아둔 Session저장소에서 동일한 sessionId(=JSESSIONID) 값이 있는지 찾습니다. 그다음 동일한 sessionId가 있으므로 해당 Session을 반환하는 데 이때 이 세션안에는 어떤게 있는 건가요?? 제가 생각한건 두개입니다. 1. JSESSIONID와 Value가 session에 들어있는경우 (session={ "JSESSIONID" : Value}) 그러면 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); 위 코드에서 초기화를 해주고, 세션 파일은 해시(hash)값으로 생성하니까 session={ "JSESSIONID" : Value, "SessionConst.LOGIN_MEMBER" : loginMember} 이런식으로 HttpSession안에 공존해서 있는 경우 그래서 클라이언트에게 응답할 때 이 세션안에 있는 JSESSIONID를 쿠키에 직접 넣어준다 2. session 안에 아무것도 없는 경우 이 세션은 사용자 test를 구분하기 위한 객체일뿐 session_test(test에 대한 세션)에 아무값이 없다(그냥 빈 객체) 그래서 아래코드를 하게되면 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); session={ "SessionConst.LOGIN_MEMBER" : loginMember} 이 된다. 그래서 클라이언트에게 응답할 때 세션저장소에서 이 세션의 JSESSIONID를 찾아서 쿠키에 넣어준다 제가 생각한 것 중에 답이 있는 지 궁금합니다. 답변주시면 정말 감사하겠습니다. 아래글을 참고 했습니다. https://www.inflearn.com/questions/520956/%EC%BB%A4%EB%AE%A4%EB%8B%88%ED%8B%B0-%EB%8B%B5%EB%B3%80-%EA%B8%80-%EB%B3%B4%EB%A9%B4%EC%84%9C-httpsession-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC-%EC%A0%95%EB%A6%AC%ED%96%88%EB%8A%94%EB%8D%B0-%EB%A7%9E%EB%8A%94%EC%A7%80-%ED%99%95%EC%9D%B8%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94

  • spring
  • mvc
코딩먹는하마 댓글 1 좋아요 2 조회수 335

Test코드 작성할 때 findById는 안해도 되나요?

해결됨

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

'회원 리포지토리 테스트 케이스 작성' 강의에서 나오는 코드에 대한 질문입니다. MemoryMemberRepositoryTest 파일에서 유일하게 MemoryMemberRepository의 findById() 메서드만 테스트코드를 작성하지 않았는데 따로 이유가 있는 것인가요? 해당 메서드는 테스트를 해볼 필요가 없어서 작성을 의도적으로 안하신건지 아니면 강의 상 생략하신 건지 궁금합니다.

  • java
  • spring
  • mvc
  • spring-boot
새옹지마 댓글 1 좋아요 1 조회수 774

bindingResult 질문 있습니다.

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 1:50쯤에 bindingResult설명하실 때 addItem의 매개변수로 bindingResult가 있으면 에러가 나도 컨트롤러가 호출되고, bindingResult가 없으면 컨트롤러 호출 없이 바로 에러페이지로 넘어간다고 하셨는데, 이전에 만든 ValidationItemControllerV1에서는 bindingResult가 없는데도 addItem()컨트롤러가 호출된 것이 아닌가여? 그러니까 에러처리도 되고, 타임리프를 통해서 유저에게 어떤 에러가 났는지 알려줄 수 있게 된것이 아닌가 하고 헷갈리네용

  • spring
  • mvc
YH 댓글 2 좋아요 0 조회수 473

회원 리포지토리 테스트 케이스 작성 강의 관련 질문입니다.

해결됨

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] afterEach() 함수를 적어두지 않으면 멤버가 중첩되어 에러가 발생한다고 강의 내에서 말씀하셨는데, 해당 함수를 적기 전에도 에러가 발생하지 않았기 때문에 질문드립니다. 코드 내용은 강의 내에서 작성하신 코드와 같은데, 어째서일까요?

  • java
  • spring
  • mvc
  • spring-boot
이새영 댓글 1 좋아요 0 조회수 313

강사님 설정 관련 질문입니다.

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

수업에 관련된 것은 아니고 강사님 강의들을 들을 때마다 강사님께서 괄호를 클릭하실때 노란색?으로 괄호들이 굵게 강조되는 표시가 뜨는 기능이 정말 편해보였는데 아무리 찾아봐도 나오지 않아서 혹시 어떤 설정이나 플러그인인지 알 수 있을까요...?

  • spring
  • mvc
지호 댓글 1 좋아요 0 조회수 453

logger는 언제 사용하나요

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] logger는 정보를 남길 떄 사용한다면 어느 정보를 남겨야 하는지 어떻게 파악이 가능한가요 좀 더 구체적으로 설명 가능한가요

  • spring
  • mvc
일선 댓글 1 좋아요 0 조회수 541

해당 강의 점프하고 스프링 핵심원리 - 기본편 으로 가도 되나요?

미해결

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

현재 무료강의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 위 강의는 3월쯤 약 70%? 정도 수강했습니다. 그 후에 스프링부트 + JPA + Thymeleaf를 사용한 프로젝트를 하느라 강의를 더 못 들었는데요 아직 스프링에 대해 두루뭉실하게 알고 있는 것 같기도 하고, 강의를 통해서 좀 기반을 다잡고 싶어서 무조건 강사님 강의를 들으려고 합니다. 그런데 다만 제 기억으로는 무료강의 파트가 약간 "맛보기" 형식으로 쑥쑥 훑어 넘어가는 강의였던 것 같아요. (그래서 개인적으로 재미도 그닥 없었던....ㅠㅠ 생소한 거 투성이었다 해야하나..) 현재 제 수준이 어느정도인지 모르겠지만 바로 유료 강의인 스프링 핵심원리 - 기본편 으로 수강을 진행해도 될까요?

  • java
  • spring
  • mvc
  • spring-boot
roovies 댓글 1 좋아요 0 조회수 545

모르겠어여

미해결

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

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

  • java
  • spring
  • mvc
  • spring-boot
heedda 댓글 1 좋아요 0 조회수 573

타임리프

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 타임리프의 단점이 딱히 없다고 느꼈습니다만 금융권에서는 JSP 를 주로 사용한다고 하는데 그 이유가 혹시 무엇일까요? 안정성 문제일까요?

  • spring
  • mvc
작성자 댓글 1 좋아요 0 조회수 507

웹서버 실행시 무한로드

미해결

[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]

위에 코드와 같이 웹서버를 열 때 처음 실행만 정상적으로 뜨고 두 번째부터는 로드중으로 계속 화면에 아무것도 안 뜹니다. 주피터 노트북과 아나콘다 프로그램을 완전히 종료하고 다시 접속해 위에 코드를 입력하면 다시 처음만 정상실행되고 두번째부터는 무한로드중으로 뜹니다. 다른 컴퓨터로 실행해봤을 때는 정상적으로 화면에 출력되는 것을 확인했고 제 노트북만 이러네요. 이거 때문에 아나콘다도 다시 설치해보고 윈도우에 내장되어 로컬호스트 주소도 확인하고 윈도우도 재설치해보고 컴퓨터 자체를 포맷해봤는데도 계속 같은 증상이네요. 혹시 문제가 무엇일까요? 이거 때문에 수업 진도를 못 나가고 있어요. 도와주세요ㅠㅠ

  • python
  • rest-api
  • flask
댓글 1 좋아요 0 조회수 533

안녕하세요

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 강의 중 몇가지 질문이 생겨 질문드립니다. 감사합니다! 1. 현재 대부분의 실무에서는 JSP 가 아닌 타임리프를 이용한다고 생각해도 되나요? 2.Request 를 보낼 때 본인의 ip 주소를 변경해서 보낼 수 있도 있나요? 이게 VPN 방식인가요? 3.@RequestParam 어노테이션이 있으면 url 뒤에 query 문이 자동으로 생성이 되는 건가요? @ResponseBody 를 실무에서 사용할 일이 예시가 어떤게 있을까요?

  • spring
  • mvc
작성자 댓글 1 좋아요 0 조회수 312

인터셉터 질문입니다.

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

인터셉터를 듣던중 궁금증이 생겨 질문남깁니다. 인터셉터를 사용해서 사용자의 로그인 인증이 가능했습니다. 만약, 특정 API를 로그인, 비로그인 사용자가 모두 접속이 가능하고, 로그인 사용자일 시 추가 작업이 발생하는 경우에 인터셉터를 사용하여 해결합니까? 다른 방법이 있다면 어떤 것이 있나요? 예를 들어 특정 숙소의 신청 상태의 관해서, 비 로그인 시 추가 작업 없음, 로그인 사용자 시 사용자 신청 상태를 판별하는 추가 작업 필요.

  • spring
  • mvc
  • interceptor
rnqhstlr2297 댓글 1 좋아요 0 조회수 458

세션을 사용할 수 있다면, URL를 설계할때, /member/{id} 와 같이 PathVariable를 가져갈 필요가 있을까요?

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

'모든개발자를 위한 HTTP웹 기본지식' 에서 배운 바로는 URL를 설계할때, 회원조회를 위한 url 이라 치면, "/member/{id}" 같이 PathVariable인 회원id 값을 url에 명시해 두었습니다. 그런데 이번에 쿠키와 세션을 학습하면서 느낀건데, 애초에 그냥 "/member" 로만 해도, 로그인한 세션값으로 회원 정보를 가져와 해당 회원에 맞는 화면을 응답해도 되지 않을까요? 비슷한 또 다른 예시인데, userA가 자신이 주문한 item들을 전체 조회하고자 할때 요청할 url를 "/orders/{memberId}" 로 하여 memberId를 통해 회원객체를 조회하고, 조회한 객체의 주문목록을 화면으로 뿌려주는것보다는, "/orders" 로만 url을 잡고 세션값을 통해 현재 요청을 날린 회원 객체를 받아 주문목록을 화면에 뿌려주는것이 조금 더 url을 간결하게 만들 수 있지 않을까.. 라는 생각이 들었습니다. 결론: url을 "/member/{id}" 으로 잡았던 이유가 아직 세션을 학습하기 이전이라 그런것인가요, 아니면 다른 이점이 있기 때문일까요?

  • spring
  • mvc
  • http
  • url
  • uri
  • 쿠키
  • 세션
Shin Berg 댓글 1 좋아요 0 조회수 669

인기 태그

인프런 TOP Writers

주간 인기글