묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨디자인 시스템 with 피그마
오토 레이아웃 한번 더 하는 이유
강사님, 혹시 '앱 다운로드' 버튼 만들 때'아이콘 + 앱 다운로드' 부분을 1차적으로 오토 레이아웃 생성하는 것은 알겠는데 거기에 한번 더 오토 레이아웃을 해주는 이유를 알 수 있을까요? 한번만 해도 상하좌우 패딩 값 주면 충분할 것 같아서요!!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
native 와 file 의 다른점
이번 강의의 native 와 기존에 처음부터 보여주신 uri : file///~~~ 의 방법과 크게 다른점이 뭔가요? 다른점이 없는것 같은데요...
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
댓글 기능 구현에 대한 질문
안녕하세요.강의 잘보고 있습니다.현재 저는 게시글, 댓글 기능을 구현하고 있습니다. 타임리프 + 스프링부트로 구현하고 있는데, 게시글 상세를 눌렀을때 어떤 방식으로 댓글을 가져오는 것이 효율적인지가 궁금합니다. 게시글 상세 요청 -> 페이지 응답 -> 응답받은 페이지에서 ajax로 다시 서버에 댓글 페이지 요청게시글 상세 요청 -> 댓글이랑 상세페이지 한꺼번에 타임리프로 렌더링해서 페이지 응답 (즉, 항상 게시글 상세와 댓글을 함께 랜더링함)게시글 상세 요청 -> 첫 댓글 페이지랑 게시글 상세페이지 한꺼번에 타임리프로 렌더링해서 페이지 응답 -> 두번째 댓글페이지부터는 ajax로 응답 혹은 다른 방법이 있다면 알려주세요 !!
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
구현역량에 대한 질문
안녕하세요 강의 완강후 오랜만에 질문드립니다!그동안 클린코드, sql, oop, cs등을 공부해보고 강의도 다시 복습중입니다.다름이 아니라 구현능력에 대한 질문입니다. 강의코드를 이해하거나 복붙, 수정해서 api를 구현하는 것은 가능한데, 백지상태에서 구현하라고 하면 머리가 하얘집니다… 아직 부족하다고 생각돼서 회사에 지원은 안해봤는데 막상 과제테스트를 하게되면 정말 막막할 것 같네요..(어떤 회사들은 과제테스트 할 때 라이브러리를 사용하지 않고 구현해야된다고 하더군요)새로운 api를 구현하려고 하면 일단 강의코드를 참고해서 복붙 ,수정 작업을 반복하는데 이게 맞나하는 생각이 드네요.그래서 코드를 한줄 한줄 따라 치면서 이해하고 외우는 방법으로 구현능력을 키워보려 하는데 괜찮은 방법일까요? 아니면 그냥 코드를 참고하더라도 무작정 구현을 많이 해보는게 좋을까요?그리고 코파일럿을 쓰고있는데 굉장히 편리하긴 하지만 구현능력을 키우려면 쓰지 않는게 좋겠죠?독학으로 하다보니 여러 생각이 많아지는 것 같습니다. 조언 부탁드릴게요!
-
해결됨곰책으로 쉽게 배우는 최소한의 운영체제론
멀티태스킹, 멀티쓰레드에서 질문이 있습니다.
강사님 좋은 강의 감사합니다.정확하게 이해를 하지 못해서 질문을 남겨봅니다.cpu에서 실행 단위가 쓰레드라고 말씀해주셨는데 cpu가 쓰레드를 하나씩 대기 큐에서 코어가 감당할수 있는 쓰레드만큼 꺼내서 실행하고 다음 쓰레드를 실행한다고 이해를 했습니다.멀티 태스킹은 하나의 os안에 여러 프로세스가 실행이 가능하게 한다는 의미로 이해를 했는데 그러면 프로세스 A 안에 있는 쓰레드 A-1, A-2,A-3이 있고프로세스 B안에 있는쓰레드 B-1,B-2,B-3가 있다면 대기큐에 [ A-1,A-2,A-3,B-1,B-2,B-3 ]있다고 할때CPU 코어가 3개라면A-1,A-2,A-3 쓰레드를 꺼내서 실행하고 빠르게 B-1,B-2,B-3를 꺼내서 실행하는걸 반복하다보니사용자 입장에서는 A,B 프로세스 둘 다 같이 동작하느거처럼 느낀다고 보는걸까요?
-
해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
큐 구현 질문 드립니다
안녕하세요,doublylinkedlist 에서 insertAt 수정 중에if(newNode.next == null){ //새로 삽입한 노드가 마지막 노드라면 this.tail = newNode; }이 부분은 index == this.count 일 때 데이터를 삽입하는 경우에만 해당되는 것 같은데,else if문 밖으로 빼서 공통적으로 처리해주는 이유가 궁금합니다. 감사합니다!
-
해결됨[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
해당 강좌 내용을 PC게임 제작에 접목해도 괜찮을까요?
강의 내용이 모바일 플랫폼을 기준으로 하고 있는데 이 내용을 pc게임에 적용해도 괜찮을지 궁금합니다
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강기한 연장 문의 드립니다.
선생님 강의 잘 듣고 있습니다!상반기 취업준비 때문에, 강의 수강기한이 이번달이라는 걸 까먹고 있었네요 ㅠㅠ혹시 수강기한 연장 가능하시다면 부탁드립니다! 감사합니다 :)
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
6-6강 질문
안녕하세요! 카일님. 주말이나 휴일에 틈틈이 카일님 강의 수강 중입니다 ㅎㅎ 강의 내용이 알찬 게 많아서 도움이 정말 많이 되네요 ㅎㅎFoodie Express의 새 기능 로그 설계 파트에서 궁금증이 생겨 댓글을 남기게 되었는데요,CTR과 CVR을 메인 지표로 로그설계를 하고, 차후에 해당 지표들을 분석할 때, CTR의 경우는 '높다', '낮다'를 어떻게 판단하나요?CVR의 경우는, 이전 결제 전환율을 비교해보면 좋을 것 같은데, CTR의 경우 이전에 없던 기능이다 보니, 클릭율이 5%라고 하면, 그게 높은 건지 낮은 건지 그 기준을 어떻게 판단하시는 지 궁금합니다. 편하실 때 답 달아주세요!:) 감사합니다.
-
미해결
자바스크립트 진짜 기초 질문..
알고리즘 문제 푸는데 질문이 있어서 질문 드립니다.ㅠ우선 진짜 기초적인 질문이라.. 어이없을 수도 있지만 궁금해서 여쭈어보아요두 번째 코드 줄에서 let sum을 통해 sum을 0으로 변수로 지정해줘야하는 이유가 궁금합니다!그리고 function함수를 사용하면 return함수를 필수적으로 사용해야지만 값이 반환되는걸까요?미리 감사합니다..ㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-C 복습 !
안녕하십니까 큰돌님복습하다가 궁금한게 생겼습니다안전영역 최대값을 구하기 위해 ret 을 1로 초기화하는데3중 반복문의 첫 번째 for문이 무조건 1부터 100까지 돌면서 잠기지 않는 지역이 있을 수 있어도(이때, 최소값은 1)영역 높이가 최대 100이고 반복문 d값이 100까지 가면 결국 마지막에 100 이하의 높이인 영역은 잠기므로 무조건 최소값은 0으로 되는 거 아닌가요 ?? 그래서 ret 을 0으로 초기화 해야 된다고 생각하는데 뭔가 어렵네요ㅜ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
쿼드트리 메모리 초과 질문
안녕하세요 강사님 ㅎㅎ맞은 코드 : http://boj.kr/1b7e6a102d7a4a3893e9e95d35517735틀린 코드 (메모리 초과) : http://boj.kr/8e21367e52314b8585922b74a0fabad8둘의 차이는 재귀함수의 기저사례만 다릅니다. 하지만 둘의 차이가 왜 메모리 초과를 발생시키는지는 잘 이해가 가지 않아서 질문드립니다 !
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
db1 - 트랜잭션 매니저 강의 관련 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]트랜잭션 매니저 관련 강의를 듣고 있는데요 예를 들어 private final PlatformTransactionManager transactionManager;이렇게 해서 트랜잭션 매니저를 주입받는다고 했는데 이 클래스가 빈으로 등록된것도 아닌데 어떻게 주입받는건가요??
-
해결됨Jenkins를 이용한 CI/CD Pipeline 구축
sonarQube강의가 안 보여요
실습26) Jenkins를 이용하여 Ansible 서버에 배포하기 순서상으로 이 강의 다음에 보여야되는데 강의가 안 보이는데어떤 강의를 수강해야될까요?aws로 sonarQube를 실행하는 강의를 듣고 싶은데 ㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-L 주몽 질문입니다.
안녕하세요변수 선언하는데 있어서 main위에 선언하는 것과 main안에서 선언하는게 무슨 차이가 있나요??int n, m, num[15001], cnt;해당 부분을 main 안에서 선언한 경우 틀렸다고 나오고, main위에다가 선언해야 맞았다고 나오는데, 그 차이를 이해하기 어려워서요!확인부탁드립니다.http://boj.kr/0068cf0a6ca54091a5b44ac723c2ff4d
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
깃주소
깃주소 알려주세요, 뭐 다 들어야 깃 주소를 아는건지 왜 찾을수가 없나요
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
1-10 가장 짧은 문자거리 문제에서 어디가 틀린걸까요?
강사님이 설명해주신 방법이랑 조금 다르게 풀었는데, 계속 오답이 나와서 문의드립니다.어느 부분이 틀린 건지 못찾겠습니다도와주세요..import java.util.Scanner; public class Main { public int[] solution(String str, char c){ int tmp=0; int[] answer = new int[str.length()]; for(int i=0; i<str.length(); i++) { if(str.charAt(i)!=c) { tmp++; } else { tmp=0; } answer[i] = tmp; } for(int i=0; i<answer.length-1; i++) { if(answer[i]!=0 && answer[i+1]==0) { int arrayTmp = answer[i]; for(int j=0 ; j<arrayTmp/2 ; j++) { answer[i-j] = 1 + j; } } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner scanner = new Scanner(System.in); String str = scanner.next(); char c =scanner.next().charAt(0); for(int a : T.solution(str, c)) { System.out.print(a+ " "); } } }
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
inputStream.close() 작성 하여도 UncheckedIOException 에러 발생
다른 분들이 올리신 글 보고 inputStream.close()를 추가해주었는데도 UncheckedIOException 에러가 발생합니다. 버전문제일까요..?현재 사용중인 버전은 2.7.14 입니다.
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
SpinLock 구현 과정에 대해서 질문이 있습니다.
SpinLock 에 사용되는 특의 함수,atomic 키워드와compare_exchange_strong() 메소드를 쓰면서 구현을 하는 과정에 대해서 들었는데,의문점이void Add(), Sud() 메소드에순서상의 lock_guard() 를 먼저 실행하면 되지 않을까 생각합니다.thread1,thread2두 개의 쓰레드가 하나의 locked 부울 데이터를 공유한 상태에서 동시에 lock_guard() 를 할 수 있는 경우에서 locked 부울을 동시 접근하는 경우도 있겟지만,=> 이러면 deadlock 이 발생하겠죠.같은 말로,thread t1(Add);thread t2(Add);같은 경우도 위에 deadlock 발생하는 같은 이치라고 보시면 될꺼 같습니다.결국에는 locked 부울 데이터를 공통적으로 사용한다는 부분에서 생기는 문제니까요.즉, thread 1 또는 thread 2 가 동시적으로 접근하지 않는 이상 deadlock 은 발생하지는 않을 것이며,add 메소드에서 lock_guard() 를 했기에, 모든 작업을 다 끝내고 그 다음 add() 메소드를 실행하지 않을까 하고 생각합니다.하지만 main 에서 Add(), Sub() 를 순차적으로 실행했기에 Add() 에 먼저 thread1, thread2 가 동시에 수행을 한다해도 결국에는 Add() 메소드에서 lock_guard 를 둘 중 하나가 먼저 수행하기 때문에 Add() 메소드를 먼저 접하는 thread 가 수행을 하고,그 뒤의 Sub() 메소드 또한 실행을 하지만,이 또한 thread 1 또는 thread 2 둘 중 하나가 lock_guard() 를 하고 있는 상태이기 때문에 다른 스레드가 _locked 부울에 접근을 하지 못하는 이유로 deadlock 이 발생하지 않고 원하는 값이 출력되지 않을까 생각했고, 실제로도 0 값이 나오기는 했습니다.좀 더 정확하게는,멀티스레드가 순차적으로 수행하지 않고 동시 다발적으로 실행이 된다면 종류는 아마,1. A thread Add() 실행B thread Sub() 실행 2. B thread Sub() 실행A thread Add() 실행3. A, B thread Add(), Sub() 동시 실행같은 경우의 수가 더 있을 수도 있지만 현재는 여기 까지 밖에 볼 수 없었습니다.만약 main() 함수에서 3번 경우에서 두 메소드에서 동시 다발적으로 처리를 수행한다면 deadlock 이 테스트를 하면서 운이 좋게 안 뜬걸로 볼 수있지만,순차적으로 Add() -> Sub() 식이라면, 즉 1번 경우라면 SpinLock 을 처음 방식처럼 구현하는 상태에서,lock_guard() 메소드를 순서를 바꿔서 처리하는 방법도 옳은 방법으로도 되는지 알고 싶습니다.int32 sum;class SpinLock{public:void lock(){ while (_locked){}_locked = true;}void unlock(){_locked = false;}private:bool _locked = false;};void Add(){lock_guard<SpinLock> guard(spinLock);for (int32 i = 0; i < 10'000; ++i){sum++;}}void Sub(){lock_guard<SpinLock> guard(spinLock);for (int32 i = 0; i < 10'000; ++i){sum--;}}void main(){thread t1(Add);thread t2(Sub);t1.join();t2.join();cout << sum << endl;}.. 생략
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
itemName에 null
public class ServletUploadControllerV2 { @Value("${file.dir}") private String fileDir; @GetMapping("/upload") public String newFile() { return "upload-form"; } @PostMapping("/upload") public String saveFileV1(HttpServletRequest request) throws ServletException, IOException { log.info("request={}", request); String itemName = request.getParameter("itemName"); log.info("itemName={}", itemName); Collection<Part> parts = request.getParts(); log.info("parts={}", parts); for (Part part : parts) { log.info("==== PART ===="); log.info("name={}", part.getName()); Collection<String> headerNames = part.getHeaderNames(); for (String headerName : headerNames) { log.info("header {}: {}", headerName, part.getHeader(headerName)); } //편의 메서드 //content-disposition; filename log.info("submittedFileName={}", part.getSubmittedFileName()); log.info("size={}", part.getSize()); //part body size //데이터 읽기 InputStream inputStream = part.getInputStream(); String body = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); log.info("body={}", body); //파일에 저장하기 if (StringUtils.hasText(part.getSubmittedFileName())) { String fullPath = fileDir + part.getSubmittedFileName(); log.info("파일 저장 fullPath={}", fullPath); part.write(fullPath); } } return "upload-form"; } } <로그>2023-08-15 18:53:08.744 INFO 11860 --- [nio-8081-exec-7] h.u.c.ServletUploadControllerV2 : request=org.apache.catalina.connector.RequestFacade@46f8d0d2023-08-15 18:53:08.744 INFO 11860 --- [nio-8081-exec-7] h.u.c.ServletUploadControllerV2 : itemName=null2023-08-15 18:53:08.744 INFO 11860 --- [nio-8081-exec-7] h.u.c.ServletUploadControllerV2 : parts=[]2023-08-15 18:53:08.747 DEBUG 11860 --- [nio-8081-exec-7] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [926]2023-08-15 18:53:08.747 DEBUG 11860 --- [nio-8081-exec-7] o.a.coyote.http11.Http11InputBuffer : Received []2023-08-15 18:53:08.747 DEBUG 11860 --- [nio-8081-exec-7] o.apache.coyote.http11.Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@7e5a37d:org.apache.tomcat.util.net.NioChannel@72e2ee37:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8081 remote=/0:0:0:0:0:0:0:1:50696]], Status in: [OPEN_READ], State out: [OPEN]2023-08-15 18:53:16.474 DEBUG 11860 --- [nio-8081-exec-8] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [926]2023-08-15 18:53:16.474 DEBUG 11860 --- [nio-8081-exec-9] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [0]2023-08-15 18:53:16.474 DEBUG 11860 --- [nio-8081-exec-8] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request headerjava.io.EOFException: null at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1347) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1234) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:785) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:348) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:263) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]2023-08-15 18:53:16.474 DEBUG 11860 --- [nio-8081-exec-9] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request headerjava.io.EOFException: null at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1347) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1234) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:785) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:348) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:263) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]2023-08-15 18:53:16.474 DEBUG 11860 --- [nio-8081-exec-8] o.apache.coyote.http11.Http11Processor : Error state [CLOSE_CONNECTION_NOW] reported while processing requestjava.io.EOFException: null at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1347) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1234) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:785) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:348) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:263) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]2023-08-15 18:53:16.474 DEBUG 11860 --- [nio-8081-exec-8] o.apache.coyote.http11.Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@45100ea6:org.apache.tomcat.util.net.NioChannel@3f9eb895:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8081 remote=/0:0:0:0:0:0:0:1:50697]], Status in: [OPEN_READ], State out: [CLOSED]2023-08-15 18:53:16.474 DEBUG 11860 --- [nio-8081-exec-9] o.apache.coyote.http11.Http11Processor : Error state [CLOSE_CONNECTION_NOW] reported while processing requestjava.io.EOFException: null at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1347) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1234) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:785) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:348) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:263) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.78.jar:9.0.78] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]2023-08-15 18:53:16.475 DEBUG 11860 --- [nio-8081-exec-9] o.apache.coyote.http11.Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@7e5a37d:org.apache.tomcat.util.net.NioChannel@72e2ee37:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8081 remote=/0:0:0:0:0:0:0:1:50696]], Status in: [OPEN_READ], State out: [CLOSED] itemName에서부터 null이 들어가서 오류가 나는 것 같은데 강사님 소스 그대로 붙여넣기 해도 동일한 오류가 발생합니다ㅠㅠitemName 파라미터를 왜 못 가져올까요,,