학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 강사님과 똑같이 코드를 짯는데 저는 실행이 돼지 않습니다. ViewResolver setup!이라고 문구가 발생하는데 어떤 부분을 확인해야할까요 강사님과 같은 JAVA 및 HTML 파일 작성 실행했으나 500 ERROR 발생 파일의 경로 및 소스코드 확인했으나 이상 없음
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 현지 저는 사정상 이클립스로 진행을 하고 있는데요 model.addAttribute 부분에서 model.addAttribute (attributeName:"data", attributeValue:"hello!!"); 로 하면 오류가 나고 model.addAttribute ("data","hello!!");로 수정하면 오류가 나지 않습니다 차이가 뭔지 알 수 있을까요
안녕하세요? gradle init로 그레들 프로젝트 생성했습니다.(그레들 버전 : 8.12) Type : Application 나머진 수업해서 지정한 그대로 입니다. (java, groovy, ..) 아무런 변경 없이 gradle app:test 혹은 gradle app:build를 실행했습니다. 그럼, 다음의 예외가 발생합니다. java.lang.ClassNotFoundException: org.example.AppTest at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606) 실습한 환경은 윈도우즈이고 CLI는 윈도우즈의 cmd입니다. 혹시, 도움 받을 힌트가 있을까요? 참고로 이클립스 프로젝트로 import하고 build 태스크를 실행하면 정상적으로 test가 진행됩니다.
Primary Key 생성 전략에서 많은 것들을 알기 쉽게 설명해주셔서 감사합니다 🙂 제가 개인적으로 생각하는 가장 베스트 방법 2가지만 설명 드리도록 하겠습니다. Primary Key 값을 Snowflake 알고리즘으로 해결 장점 인덱스 탐색에 있어서 정렬된 순서로 차례대로 저장 하다보니 범위 검색에 있어서 장점이 될 수 있다. 단점 Secondary Index 생성시 각각 Leaf Node 에 PK 값 (포인터) 를 가지고 있다보니 아무래도 생성된 Snowflake 알고리즘 값은 길이가 길어서 인덱스 저장용량이 증가 될 수 있다. PK 생성 전략을 Auto_Increment 로 하고 샤딩키(article_id) 값을 Snowflake 알고리즘으로 설정 해서 저장 한다. (단 client 에게는 PK 값 대신 article_id 으로 노출 한다.) 장점 Secondary Index 생성시 각각 Leaf Node 에 PK 값 (포인터) 값이 용량이 작아 인덱스 저장 용량 부담이 없다. 인덱스 탐색에 있어서 정렬된 순서로 차례대로 저장 하다보니 범위 검색에 있어서 장점이 될 수 있다. 단점 client 으로 부터 요청시 샤딩키(article_id) 값으로 데이터 조회를 해야 하기 떄문에 Secondary Index -> Clustered_Index 까지 두번 인덱스 트리를 탐색 해야 하는 단점이 있다. 일단 이렇게 각각의 장단점을 설명 드렸습니다. 여기서 제가 궁금한것은 실무에서 데이터베이스 테이블 설계시 이 두가지 방법 중 하나를 선택 하는데 있어서 각각 어떤 경우에 적합한지 판단 내리기가 힘든 부분이 있습니다. 각각 케이스 마다 장단점을 알고 있지만 아무래도 자세하게 수치화 된 지표 가 없어 선택하는데 있어서 어려움이 있는데요. 선생님 경우는 실무에서 이 두가지 중 선택시 어떤 경우에 적절하게 판단 하시는지 노하우를 알려주시면 정말 감사 하겠습니다 🙂
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] v5 프론트 컨트롤러까지 해서 직접 사이드프로젝트를 해보려고 했는데, 서블릿이 인식이 안 되는 것인지 println이 콘솔창에 안 뜹니다 ㅠ package com.weblibrary.controller; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet(name = "frontController", urlPatterns = "/test/*") public class FrontController extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("FrontController.service"); } } 로컬주소/test/some 이런식으로 접속해보는데, 404가 뜨고 콘솔에는 println이 뜨질 않네요 ㅠㅠ
강의 내용에서, 트랜잭션 커밋전에 em.persist나 em.remove를 하면, 영속성컨텍스트의 1차캐시에 값이 저장 또는 삭제되고, 쿼리를 생성해서 쓰기지연저장소에 저장한다고 하셨는데요. 트랜잭션 커밋전에 쿼리를 생성해서 쓰기지연저장소에 저장하는것인가요? 아니면 트랜잭션 커밋 이후 내부적으로 flush()호출 시 쿼리를 생성해서 쓰기지연 저장소에 저장하는것인가요??
이렇게 설정되어있고, class파일도 잘 생성된것을 확인했는데, SEVERE: 경로 [/web]의 컨텍스트 내의 서블릿 [jsp]을(를) 위한 Servlet.service() 호출이, 근본 원인(root cause)과 함께, 예외 [JSP를 위한 클래스를 컴파일할 수 없습니다.: JSP 파일 [/sum.jsp]의 [5] 행에서 오류가 발생했습니다. MyUtil cannot be resolved to a type 2: pageEncoding="UTF-8"%> 3: <%@page import="kr.web.util.*" %> 4: <% 5: MyUtil my = new MyUtil(); 6: int sum = my.hap(); 7: %> 8: <!DOCTYPE html> JSP 파일 [/sum.jsp]의 [5] 행에서 오류가 발생했습니다. MyUtil cannot be resolved to a type 2: pageEncoding="UTF-8"%> 3: <%@page import="kr.web.util.*" %> 4: <% 5: MyUtil my = new MyUtil(); 6: int sum = my.hap(); 7: %> 8: <!DOCTYPE html> Stacktrace:]을(를) 발생시켰습니다. org.apache.jasper.JasperException: JSP를 위한 클래스를 컴파일할 수 없습니다.: 이와같은 오류가 발생합니다. 이유가 무엇일까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 뭔가 응답을 해주는건 response라고 배웠는데, members같은 데이터를 request에 담는 이유가 뭘까요?? 원래 사용 방법이 그런건 알지만, 이유가 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 강의에서 의존성 주입의 3가지 방법에 대한 내용이 나왔는데요. 그 중에서 "setter 주입" 방법의 경우, 만약 MemberController를 예를 들면, 스프링 서버가 뜰 때, MemberController 객체가 생성될 때 생성자가 호출되는 건 이해를 하는데, setter 주입 방식은 객체 생성 시 생성자 뿐만 아니라 setter도 같이 스프링에서 호출하는 걸까요? 그리고 위와같이 setter 주입 시 private으로 변경해도 스프링 서버 run하는데는 문제가 없던데 이유가 있을까요? 강의에서는 public으로 setter를 노출시키는게 setter 주입 방식의 단점이라고 하셔서요.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 저는 Gradle - Groovy / 3.4.1 / open JDK 17 / 이클립스-STS4 로 강의를 설정하려 하는데 계쏙 오류가 나서 질문드려봅니다. 메이븐으로 설정할 시에는 위와 같은 옵션 및 이클립스에서 서버 구동까지 문제없이 잘 되는데 그래들로 하는경우 계속 오류가 나서 프로젝트가 설정되지 않습니다. 그래들로 할 경우 인텔리제이로 해야하는건가요??
14:28 부분인데요 밑에 어느분이 합계 25로 나왓는데 이해가 안간다는 글을 봣습니다. 저도 결과는 다르지만 이 부분이 이해가 안됩니다. for문으로 수행될때.... sum=+arr[i] 1 0 1 3 1 2 6 3 3 10 6 4 i=5는 수행이 안됨 이렇게 해서 sum값이 10이 안될까요? 왜 1+2+3+4+5 의 값 15가 되는지 이해가 안되네요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 12분에서요 #ids.prev('x')에서 x에들어가는건 th:filed를 따라간다고 하셨는데 지금은 th:field="*{regions}" 잖아요? 근데 th:field="${item.regions}" 라면 #ids.prev('item.regions')가 맞는건가요? 어떻게되는건가요? 그리고 체크박스보다 label이 앞에나와도 prev인가요?
안녕하세요 강의 잘 듣고 있습니다. 현재 게시글 조회수 부분 보고있는데요 헷갈리는게 있습니다. 멀티 모듈 방식 이라 aricle과 view 모듈이 나눠져 있는데요 현재는 게시글 조회 api와 게시글 조회수 증가 api가 나뉘어져 있는거같은데요 프론트에서 게시글 조회 시 이 2개의 api를 사용하는 걸까요? 게시글 조회 api에서 게시글 조회 -> redis 조회수 1 증가 이렇게 하나의 api가 아니라 실무에서도 api를 나누는 방식으로 진행하는걸까요?
숨고와 같은 구인 구직 사이트인데 특정 작물에 대한 전문가와 매칭해주고 견적이 나오는 서비스를 프로젝트로 만들려고 생각중입니다. 이렇게 종류를 선택하면(위에 사진1에서 아래 사진2으로 넘어감니다.) 서비스일 경우 이런 카테고리는 따로 erd를 만들어 주어야 하나요? 아니면 enum으로 빼는 건지 감이 정말 1도 안 잡혀서 질문 드립니다. 견적 엔티티 를 이런식으로 만들고 컨설팅 형태 이런 것도 enum으로 만드나요? 나머지는 속성값으로 들어가는 것은 알고 습니다.) 그리고 맨 밑에 경우 만약 사진하고 글을 같이 첨부해서 컨설팅 내용을 신청할경우 이것도 erd로 따로 빼 놓나요?( aws 로 작업할경우 s3로 이미지만 따로 저장하는 것은 알 고 있습니다.)
이와같이 설정하였는데요, server.xml에도 <Context path="/web" docBase="C:\eclipse-jee-2019-09-R-win32-x86_64\WEB\webapp"/> 이와같이 등록을 해주었습니다. 톰캣을 실행한 뒤 localhost:8081/web으로 접속하는 경우, localhost:8081/web/index.html과 동일한 화면이 출력되어 나옵니다. index2.html의 경우는 localhost:8081/web/index2.html 이렇게 정확하게 명시를 해줘야 index2.html화면이 나오던데요. 기본적으로 localhost:8081/web 를 입력한 경우 index.html이 출력되어 나오는 이유와, localhost:8081/web/index.html해당 url이 localhost:8081/web 와 동일한 동직을 수행하는 이유와 동일하게 수행되는 원리가 궁금합니다. 그리고 localhost:8081/web의 경우 왜 index2.html이 아닌 index.html이이 지정되어 나오는지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 아니오. 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 실습중 맥북에서 ._Var8.java와 같이 ._*파일이 계속 생겨 오류가 생깁니다. 맥북 M1입니다. 혹시 해결하는 법도 알 수 있을까요..?
안녕하세요. 해당 강의에서는 채팅 서버가 하나지만 만약 채팅서버를 2개 운영한다고 가정했을때 (A.jar, B.jar) 배포를 위해 A jar 를 내리고 다시 올릴때 서버가 내려가기전 A jar 의 socket 객체정보를 B jar 로 보내려면 어떤 방법을 사용해야할까요? socket 을 직렬화해서 보내려고 했는데 socket 은 제가 만든 클래스가 아니다보니 Serializable 를 상속받지못해 불가능할것같은데.. 실무에서는 채팅 이중화서버운영 무중단 배포를 어떤식으로 하는지 궁금합니다 ㅠㅠ .. 강의보다 심화된 내용이지만 해당 부분에 대한 지식을 쌓기가 힘들어서 글을 작성하게 되었습니다. 감사합니다.