묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
assertThat을 사용할때 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]처음 강사님께서 save 메서드에서는 @Test public void save(){ Member member = new Member(); member.setName("Spring"); repository.save(member); Member result = repository.findById(member.getId()).get(); Assertions.assertThat(member).isEqualTo(result); }처럼 assertThat(member) 를 넣고 그 다음 isEqualTo(result)를 넣어 사용하셨는데,이후에 findByName 에서는@Test public void findByName(){ Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); Member result = repository.findByName("spring2").get(); Assertions.assertThat(result).isEqualTo(member1); }이처럼 result가 먼저 나오고 그 다음 member를 넣어 사용하십니다.혹시 무슨 차이일까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
아이디 중복오류
안녕하세요 , 김영한 강사님! 혹시 , 아이디나 닉네임 혹은 비밀번호와 같은 유일성이 보장되어야 하는 필드는 중복 오류를 검사할때 DB 연동까지 필요한 검증인것이죠? 혹시 이런 검증은 DB 강의 부분에서 따로 강의에서 나오는 부분이 있는지 궁금합니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타입에러-bindingResult
안녕하세요, 아래에 다른분께서 질문하신 내용의 답변을 토대로 다시 궁금증이 생겨 여쭙니다. 타입에러가 아닌 상태에서 바인딩이 된 상태에서 필드오류가 발생한다면 bindingResult 의 fieldError에 오류내용이 담기는것은 이해했습니다.만약 , 타입에러가 난다면 바인딩 이 안되는데, 이부분도validation 과 마찬가지로 스프링이 필드오류보다 먼저 binding result 에 오류값이 담기나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hello-spirng-0.0.1-SNAPSHOT.jar가 안됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.java jdk 버전 확인 21gradle 버전은 8.5입니다.빌드 설치 후 jar 실행하면 안되네요.다른 질문에 답변으로 환경변수 설정이 있길래 링크에 적힌 대로 다시 다 확인했는데도 안됩니다. 혹시 다른 방법이 있을까요?https://minstar0410.tistory.com/3
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ControllerV4HandlerAdapter 클래스 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.이 코드에서 이 부분을 보면강사님께서 "모델이랑 뷰를 셋팅한다"라는 식으로 말씀하셨습니다.이때, 뷰를 셋팅한다 => 컨트롤러에 맞는 url을 넘겨줘서 웹 페이지를 보여준다 라고 이해를 했습니다.하지만, "모델을 셋팅한다"라는 의미는 무슨 말씀이신지 잘 이해가 안됩니다. 설명 부탁드립니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
실행버튼
프로젝트 생성 강의 따라하는 과정에서 main 메서드 실행하려는데 실행버튼이 활성화 되지 않습니다java 17.0.9 , springboot 3.2.1 로 설치했는데저는 setting 화면부터 뭔가 다른 분들과 다르게 나오네요비슷한 질문 찾아봐도 저같은 케이스는 안보여서 질문남깁니다 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
jar 실행이 안 돼요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]gradlew.bat, gradlew build까지는 완료했습니다.그런데 jar 실행만 하면은 아래와 같은 에러가 뜹니다 ㅠㅠ Error: LinkageError occurred while loading main class org.springframework.boot.loader.launch.JarLauncher java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/launch/JarLauncher has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jsp 라이브러리 적용 안되는 현상
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]라이브러리 다운로드 로딩창도 확인하고, 다운로드 받아진 것으로 보이는데 jsp 파일이 생성되지 않습니다.new 로 생성할 때 jsp 가 보이지 않아서 file 로 new-form.jsp 를 입력해서 만들었는데도 jsp가 생성되지 않습니다. (강사님과 아이콘도 다르고 jsp 내부의 태그가 삽입되지 않은 빈 파일이 열립니다.)인텔리제이 무료버전이라 이런걸까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Map이 뭘까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.제가 자바 로드맵을 5%남기고 전부 들었는데, 남아있는 강의에도 Map에 대한 강의는 없었는데, 이후에 추가되는것일까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ControllerV4가 이해가 안됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요."MemberFormControllerV4에서 모델을 생성할 필요가 없다. 왜냐하면 프론트 컨트롤러에서 모델을 다 만들어서 넘겨준다." 라고 강사님께서 말씀하셨습니다. 그 이후에 ,FrontControllerServletV4에서 아래와 같이 작성하면서 model을 넘겨줬습니다.질문 1.이때, paramMap이랑 model이 의미하는게 무엇인가요?질문 2.또한, 강사님께서 말씀하신 모델을 각 컨트롤러에서 만들지 않고 FrontControllerServletV4로 넘겨주는 이유는 무엇인가요? 그리고 여기서는 "ModelView를 따로 만들어 줄 필요는 없고 파라미터에서 username과 age를 받아서 그냥 member에 넣어주면 된다" 라고 말씀하셨습니다. 질문 3"ModelView를 따로 만들어 줄 필요는 없고"가 무슨 의미인지 잘 이해가 안됩니다.Model을 FrontControllerServletV4에서 만들어 넘겨주기 때문에 model을 따로 생성하지 않아도 되고, view를 return해준다라고 이해하면 옳게 이해한 것인가요? 우선 저는 아래와 같이 이해를 했습니다.1.컨트롤러 조회 => 어떤 비지니스 로직을 수행할 것인지에 따라 Controller 선택2.호출(paramMap,model) => 선택된 Controller에게 paramMap(=url)과 model(= DB, 데이터를 저장해두는 저장소 객체)를 넘겨주고, 비지니스 로직을 수행함3.ViewName 반환 => 비지니스 로직을 수행하고, 보여줄 웹 페이지 화면의 url의 논리 주소를 넘겨줌4,5,6번 => viewName에 맵핑이 되는 view를 반환하고, model(데이터)를 이용하여 웹 페이지 화면에 보여줌
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
SpringMemberControllerV3 질문입니다!
public ModelAndView save(HttpServletRequest request, HttpServletResponse response) { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); Member member = new Member(username, age); memberRepository.save(member); ModelAndView mv = new ModelAndView("save-result"); //데이터를 직접 view에 전달하는방식 // mv.getModel().put("member", member); mv.addObject("member", member); return mv; } @GetMapping public String members(Model model) { List<Member> members = memberRepository.findAll(); model.addAttribute("members", members); return "members"; } } 위 2개의 코드는 결국 HandlerAdapter에 역할을 수행하여 반환값을 돌려받는 값의 차이가 있다고 생각합니다. 첫번째코드는 ModelandView로 반환이 되는거고 두번째 코드는 String으로 반환이 된다는점에서 차이가있다고 생각합니다. 여기서 제가 질문인사항이 위 2개의 코드를 호출한 코드가 각각메서드가 다르게 설정이 되어있어야 맞다고 생각합니다. viewname을 직접반환한거와 ModelView를반환한거에서 차이가있다고 생각들어 dispatcherservlet를 찾아봤는데 rendering에 대한 코드는 찾아볼수있었습니다만 저 두코드를 실행시킨 코드는 찾아볼수가 없었는지 아니면 제가 코드를 읽을수있는 능력이부족햇는지 잘모르겠습니다저번섹션부터 코드를 하나하나 분석해보니까 저 두코드를 실행시킨 부분도 궁금해서 제 능력으로는 찾아볼수가없어서 어디부분에 있는지 알려주시면 감사하겠습니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
modelview에 대해서 잘 이해가 안됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.해당 교재에는 이렇게 나와있습니다.이때, modelView 클래스의 역할은1.데이터(멤버)에 접근(데이터 추가,삭제 그리고 수정등)2.View 이름(이동해야하는 url)을 전달이렇게 이해하면 옳게 이해한 것이 맞나요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ParamMap과 model 질문
System.out.println("FrontControllerServeltV4.service"); String requestURI = request.getRequestURI(); ControllerV4 controller = controllerV4Map.get(requestURI); if (controller == null) { response.setStatus(HttpServletResponse.SC_NOT_FOUND); return; } Map<String, String> paramMap = createParamMap(request); Map<String, Object> model = new HashMap<>(); // 추가된부분 String viewName = controller.process(paramMap, model); MyView view = viewResolver(viewName); view.render(model, request, response); } private static MyView viewResolver(String viewName) { return new MyView("/WEB-INF/views/" + viewName + ".jsp"); } private static Map<String, String> createParamMap(HttpServletRequest request) { Map<String, String> paramMap = new HashMap<>(); request.getParameterNames().asIterator() .forEachRemaining(paramName ->paramMap.put(paramName, request.getParameter(paramName))); return paramMap; } public class ModelView { private String viewName; private Map<String, Object> model = new HashMap<>(); public ModelView(String viewName) { this.viewName = viewName; } public String getViewName() { return viewName; } public void setViewName(String viewName) { this.viewName = viewName; } public Map<String, Object> getModel() { return model; } public void setModel(Map<String, Object> model) { this.model = model; } } Map<String, Object> model = new HashMap<>(); 가 언제 생성되어있는지 알고싶어서 인프런 AI답변을 봤는데해당 내용에서 ModelView의 model 필드는 ModelView 클래스의 생성자에서 생성되며, Map<String, String> paramMap을 사용하여 요청 파라미터를 매핑하고 컨트롤러에 전달하는 방식에 대해 설명하고 있습니다. 이렇게 답변이 왔습니다. 저기서 호출한적이 없는거같은데 어떻게 매핑이된거죠? 두번째로, 첫번째 코드에서 Map<String, Object> model = new HashMap<>(); 부분이 두번째 코드와 똑같은 코드로작성되어있는데 다른코드맞는거같은데 왜 선언되어있는지 알수있을까요? 첫번째 질문과 두번째 질문이 많이 헷갈리네요.. 왜 같은지알수있을까요? 그리고 선언되어있는이유도요!
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
SessionManagerTest @Slf4j 사용하면 안되나요?
너무 기초적인 질문인것 같아서요Test Case 작성시@Slf4j 로그 어노테이션을 이용하여 로그를 출력하고 싶은데error: cannot find symbol log.info("SessionManagerTest1={}", member);이런 오류가 발생하네요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
코틀린 사용자인데 강의 보면서 진행이 가능할까요?
코틀린으로 프로그래밍을 입문했습니다. 자바를 사용할 줄은 모르고 코틀린만 사용이 가능한 상황인데, 코틀린으로 공부가 가능한가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
TEST 오류..?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.초록색 체크표시가 뜬거봐선 정상적으로 작동 된다는 거 같은데 에러메세지가 여러개 뜨네요 별 이상 없는건가요?밑에 에러메세지 남겨놓겠습니다.WARNING: A Java agent has been loaded dynamically (C:\Users\cwg12\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy-agent\1.14.10\90ed94ac044ea8953b224304c762316e91fd6b31\byte-buddy-agent-1.14.10.jar)WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warningWARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more informationWARNING: Dynamic loading of agents will be disallowed by default in a future releaseOpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
V3 Modelview와 Map<String, String> 질문
public ModelView process(Map<String, String> paramMap) { String username = paramMap.get("username"); int age = Integer.parseInt(paramMap.get("age")); Member member = new Member(username, age); memberRepository.save(member); ModelView mv = new ModelView("save-result"); mv.getModel().put("member", member); return mv;public class ModelView { private String viewName; private Map<String, Object> model = new HashMap<>(); public ModelView(String viewName) { this.viewName = viewName; } public String getViewName() { return viewName; } public void setViewName(String viewName) { this.viewName = viewName; } public Map<String, Object> getModel() { return model; } public void setModel(Map<String, Object> model) { this.model = model; }1.Modelview에서 model이 언제생성된거죠..? getmodel을 해주려면 먼저 선언이 되어있는 model을 가지고 반환해줘야하는데 언제선언이 된거죠? Map<String, String> paramMap = createParamMap(request); ModelView mv = controller.process(paramMap); String viewName = mv.getViewName(); //논리이름 new-form MyView view = viewResolver(viewName); view.render(mv.getModel(), request, response); } private static MyView viewResolver(String viewName) { return new MyView("/WEB-INF/views/" + viewName + ".jsp"); } private static Map<String, String> createParamMap(HttpServletRequest request) { Map<String, String> paramMap = new HashMap<>(); request.getParameterNames().asIterator() .forEachRemaining(paramName ->paramMap.put(paramName, request.getParameter(paramName))); return paramMap; } } Map<String, String> createMap에서 .forEachRemaining(paramName ->paramMap.put(paramName, request.getParameter(paramName))); 여기를 보면 request.getParmeter(paramName)로 paramName에대한 Value를 가지고오고있는데 여기서 말하는 Value는 age인데 int로 선언하는게 맞지않나요?항상 답변감사드립니다
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
프로젝트 실행 오류
다음과 같은 오류가 뜨는데 어느 부분을 고쳐줘야 할까요?javax 관련 패키지는 없어보입니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost:8080/hello 오류
index.html은 잘 열리는데 hello.html은 오류가 나네요 ㅠㅠ질문들 많이 찾아서 봤는데도 문제가 안보여요...도와주세요 ㅠㅠㅠ!
-
해결됨아키텍처 패턴 with iOS - GUI Architecture Patterns(이론)
MVC의 본질에 대한 질문
안녕하세요! MVC의 본질에 대한 강의를 듣다가 문득 궁금증이 생겨서 글을 남깁니다. 강의자님께서 유저의 멘탈모델과 컴퓨터 모델을 일치시키는 것이 MVC의 본질이라고 하셨습니다. 또한, 유저의 멘탈모델이라는 것이 사용자가 애플리케이션을 사용하면서 "내부적으로 이렇게 되있을 것이다." 라고 생각하는 것이라고 설명해주셨습니다. 첫 번째 궁금증은 유저의 멘탈모델과 컴퓨터 모델을 일치시킨다는 것은 곧 '유저가 애플리케이션의 인터페이스만 봐도 어떤 일이 발생할지, 어떻게 동작될지 대충 예상이 될 정도로 애플리케이션을 유저 친화적으로 만든다'라고 해석해도 될까요? 두 번째 궁금증은 만약, 위의 저의 해석이 맞다면, "프레젠테이션 계층과 유저의 멘탈모델, 즉 내부 구현 계층이 분리되면 유저 친화적인 애플리케이션을 개발할 수 있다."로 귀결될 수 있는데, 사실 프레젠테이션 계층과 모델 계층의 분리는 어디까지나 개발자를 위한 분리인 줄 알았는데, 사용자를 위한 분리였다는 의미로 해석되어 상당히 혼란스럽니다... 좋은 강의 제공해주셔서 감사합니다! 좋은 답변 기대할께요~