묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
web api 설계 (Post)
안녕하세요 영한님. 올려주신 spring 강의부터 jpa까지 거의 다 듣고 배운것을 활용해서 토이 프로젝트 만들고 있습니다. web api 설계시에 궁금한것이 있어 문의드립니다. 만약 parents 있고 children이 존재합니다. parent와 children은 1대N 관계입니다. 제가 처음 백엔드 api 설계했을때 아래처럼 설계했습니다. POST /parents : parents 리소스가 생성됩니다. POST /parents/{id}/children : parent와 연관된 children 이 생성됩니다. 설계를 마치고 프론트엔드에서 해당 api를 이용해서 등록하려했습니다. 여기서 궁금한것이 생겼습니다. 아래 두 방식중 어떤것이 좋은것인지 잘모르겠습니다. 1. 프론트에서 한번의 Post 요청으로 parents와 childrens list를 모두 생성합니다. request body 예시: { parent: "..." children:[ "...", "..." ] } 백엔드에서 parent정보로 parent 리소스를 만들고 만들어진 parent의 id와 body에 있는 children 리스트로 children 리소스를 생성합니다. 2. 프론트에서 POST /parent와 POST /parent/{id}/children을 각각 요청합니다. 먼저 POST /parents 요청을 보내고 응답값에서 parents id를 받아 children 갯수만큼 POST /parents/{id}/childrens 요청을 합니다.(이럴경우 요청수는 1+N이 겠네요). 1번과 2번 방식중에 어떤 방법이 나은지 잘 모르겠습니다. 제가 생각한 각각의 장단점입니다. 1번의 장점 : 하나의 요청에 모든 정보가 들어있어 요청 처리중 에러 발생시 기존에 저장된 정보도 롤백이 가능하다는 장점이 있을것같습니다. 또한 request도 한번이면 됩니다. 1번의 단점 : api가 직관적이지 않은것같습니다. 클라이언트는 POST /parents를 사용하면 parents 리소스가 생길것으로 예상합니다. 하지만 해당 요청으로 children이 생길것이라는것은 문서를 봐야합니다. 또한 유연하지 않다고 생각합니다(클라이언트마다 구현방식이 다를것이므로) 2번의 장점 : api가 직관적입니다. 유연합니다. 클라이언트가 구현방식을 바꾸더라도 백엔드의 api를 바꾸지 않아도 될것같습니다. 2번의 단점 : 클라이언트쪽에서 여러번 api를 호출해야합니다. 요청 도중에 에러가 발생할 경우 parents는 등록되고 children은 등록이 안될수도 있습니다. 둘중에 어떤것 방식을 실무에서 사용하나요? 2번으로 마음이 좀 기울긴하는데, 위에 적히 단점들이 걸리네요.. 그리고 클라이언트쪽에서 N개의 children를 모두 등록하고 싶을때 body에 list를 담아서 post /children 전부를 한번에 보내서 처리할수있게 api를 만드는게 좋은것인가요? (하나의 요청으로 여러개의 리소스 생성, 백엔드에서 리스트를 순회하면서 저장) 아니면 클라이언트쪽에서 list를 순회하면서 N번 post 요청 하게 만드는것이 좋은가요?( 하나의 요청으로 하나의 리소스생성, 대신 여러번 호출) 긴글 읽어주셔서 감사합니다.
-
미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
mongodb project 및 cluster관련
안녕하세요! 강의 잘 듣고 있습니다. 크리티컬한 질문은 아닌데요! boiler-plate 때 project를 만들었었는데, tdd-app에도 project를 새로 만들었습니다. 강의와 같이 간단한 프로젝트들이라면 프로젝트를 새로 안만들고 안쪽의 dbname만 바꿔서 사용하는 느낌으로 가는건가요? uri에서 dbname을 바꾸는건? 어떤 의도로 사용되는건지 여쭤보고 싶습니다!
-
미해결안드로이드 모바일 앱 모의해킹과 시큐어코딩
난독화 분석 시 팁
난독화 해제 기능을 제공하는 몇 몇 온라인 사이트 혹은 툴(무료) 사용에 대해 지금까지 만족스러운 결과를 얻지 못해 아쉬웠습니다. 그래서 분석가 관점에서 난독화된 패키지 분석 시 분석 시간을 단축 시킬 수 있는 팁이 있을까요?!
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
vagrant up시 에러가 발생합니다.
ㅛ 해당 에러가 발생하여 ssh 에접속후 yum update -y 로 yum을 업데이트하면 해당에러는 해결되는데요. 문제는 또다른에러가발생합니다. 이 에러에 대해서 찾아봤지만 도무지 해결책을찾을수 없어서 질문드립니다.
-
해결됨(UPDATED) Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
아이템 기반 CF 코드 질문
안녕하세요. 강의 7분 43초에 나오는 부분이 이해가 안갑니다.. rating_matrix_t[user_id] -> 이 부분은 기존 rating_matrix에서 transpose된 matrix니까 movie_id가 들어가야 하는게 아닌가요? 제가 이해를 잘 못하겠어서 조금만 더 설명해주시면 감사하겠습니다! 좋은 강의 감사합니다!
-
해결됨(UPDATED) Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
실시간 처리 질문
안녕하세요. 먼저 강의 잘 보고 있습니다! 강의를 보면서 의문이 드는게 있습니다. 현업에서는 데이터들이 많고 반응 속도가 중요할 것이라고 생각됩니다! 1. 많은 데이터들을 모두 메모리에 올리고 하나요? 아니면 db에 어떤 형식으로 저장을 하나요?? db에 저장한다해도 결국 cosine_similarity를 하려면 모든 정보를 다 메모리로 불러와야 되는건가요...? 이러면 다시 처음 질문으로 돌아가서 너무 궁금합니다ㅠㅠ 2. 지금 알려주시는 방법들이 실무에서 사용이 되나요? 예를 들어 쇼핑몰 제일 처음 들어갔을 때 맞춤 상품들을 보여준다고 하면, 사용자들이 로딩을 보는 시간이 몇초 될 것 같은데 제 예상과는 달리 지금 알려주시는 방법들이 빠른가요?? 아니면 다른 방법들을 사용하시는 걸까요?? 3. 지금 설명해주시는 방법들이 다 시간과는 연관이 없어보입니다! (강의 소개에서 연속값을 사용하는 개인화 추천 기술을 다룬다고 하셔서 제가 잘못 이해해서 시간도 고려한 데이터들을 사용하는 줄 알았습니다 ㅠㅠ) 제가 연속된 값들 즉 영화 A -> B -> C -> D를 본사람이 존재(p사람) 영화 A -> C -> B -> E를 본사람이 존재(q사람) 일떄 어떤 사람이 A -> B - > G 를 봤다면 다음에 볼 영화를 추천해준다 할 떄 p랑 시간 순으로 비슷하니 p가 본 C 또는 D를 추천해준다와 같이 시간도 예측 범위 안에 포함하고 싶다면 어떻게 해야하나요?? 지금 보여주시는 데이터들은 column들이 영화 이름으로 되어있어서 시간 정보가 삭제되는 것 같은데 해당 내용도 궁금합니다!! 좋은 강의 감사합니다!
-
미해결스프링 핵심 원리 - 기본편
프로젝트 생성시 오류
프로젝트를 생성하고 열자마자 모든 클래스에서 오류가 나요 ㅠㅠ No active profile set, falling back to 1 default profile: "default"오류 내용은 위와 같습니다..
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Faster RCNN regression 출처?
안녕하세요 강의 정말 잘 듣고 있습니다.ㅎㅎ 다름이 아니라 RCNN부분에서 RPN부분이 이해하지 못하여 질문드리게 됐습니다 Q. RPN부분에서 GT와 Anchor Box를 비교 , 그리고 GT와 예측값을 비교하여 RPN Bounding Box Regression을 진행하는 것으로 알고 있습니다. 제가 궁금한 점은 최초(맨 처음)의 Predicted값은 어떻게 만들어지는지가 궁금합니다. 처음에는 그저 랜덤값으로 정해지는 것인가요??
-
해결됨(UPDATED) Python을 이용한 개인화 추천시스템 | 추천알고리즘 | 추천인공지능
CF 관련 질문
안녕하세요. 제가 보다가 궁금증이 생겼습니다! sim_scores를 할 때 자기 자신에 대한 값은 제외하지 않고 하나요?? 좋은 강의 감사합니다!
-
미해결더 자바, Java 8
예제 코드 질문
javaClasses.stream().anyMatch(oc -> oc.getTitle().contains("Test"));해당 코드에서 filter 를 사용하지 않고 anyMatch 를 사용하신 이유가 궁금합니다! 정확히는 이 둘의 차이를 알고 싶은건데요, anyMatch 의 경우엔 모든 요소를 탐색하지 않는다라는 블로그의 글을 참고하였는데 조금더 정확히 강사님의 의견을 듣고싶습니다.
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
운영서버 배포
안녕하세요 ㅎㅎ nginx 사용하여 배포하는 부분 보고있는데요 . docker build . 으로 운영서버 이미지를 생성하고 , docker run -p 8080:80 이미지명 을 작성하셨는데 build 할때 docker build . 만 하게되면 이미지 이름 생성이 안되지 않나용 ???
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
Map.get 시간복잡도 질문
/** * solution * @param {array} vote : 투표 배열 */ function solution(vote) { const voteMap = new Map(); let answer = ''; let maxCount = 0; vote.forEach(function (item) { //투표 이력이 없을 경우 set, 있을 경우 카운팅 추가 voteMap.has(item) ? voteMap.set(item, voteMap.get(item) + 1) : voteMap.set(item, 1); if (voteMap.get(item) > maxCount) { maxCount = voteMap.get(item); answer = item; } }); return answer; } const answer = solution(['B', 'A', 'C', 'B', 'A', 'C', 'C', 'A', 'C', 'C', 'B', 'D', 'E', 'D', 'E']); console.log(answer); //C (5) 안녕하세요 저는 max값을 치환할 때 map을 순회하지 않고 map에서 지원하는 get메서드를 사용해서 해당 투표 값을 받아왔는데 시간복잡도에 영향이 가는지 궁금합니다.
-
미해결초보를 위한 도커 안내서
종료해도 컨테이너가 살아있는 현상 문의 드립니다.
강의 중 docker run --rm 으로 실행했던 컨테이너에서 Ctrl+C로 종료하셨는데 컨테이너가 살아있어서 여전히 응답이 되었던 부분 문의 드립니다. rm 옵션으로 도커 실행 시 프로세스가 종료되면 컨테이너도 자동제거가 되는게 아닌가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
WAS, WS 잘 이해가 안갑니다.
안녕하세요. 질문글도 모두 읽어 보았고, 댓글에 첨부해주신 링크를 포함해 검색도 해봤습니다. 하지만 용어로는 이해가 되는데, 실제로 와닿지가 않고 무엇을 의미하는지 모르겠어서 질문 남깁니다. 일단 대부분의 WAS, WS에 대해 정보를 제공하는 글들을 종합해보면 WAS는 WS + Container(Servlet, jsp 등 실행?)입니다. 그렇다면 클라이언트 - WS - WAS -DB 구조로 설계를 하면 결과적으로 WS가 두개 포함되는 것인가요? WS 그 자체와 WAS 안에 포함된 WS 이렇게 두개라는 생각이 듭니다. 사실 앞의 질문은 제 궁금증에 핵심은 아닙니다. 실질적으로 와닿지 않아서 추측으로 한번 이야기 해보겠습니다. 기능이 하나도 없는 IntelliJ를 가정해보겠습니다. 그리고 여기다가 Apache라는 WS를 하나 깔았습니다. 그렇다면 우리는 Controller를 사용할 수 있나요? 아니면 WS만 존재하는 상황에서 Controller라는 Java 코드 자체를 사용할 수 없나요? Controller를 만들 수 있다고 가정해 보겠습니다. 먼저 브라우저는 /welcome이라는 HTTP 요청을 보냅니다. 이 때, 깔려있던 WS인 Apache가 동작합니다. Apache는 Controller 코드에 /welcome에 해당하는 곳을 찾아서 index,html으로 페이지 이동을 시켜주겠죠.(이 부분을 페이지 이동이 아닌 서버에서 클라이언트로 html을 response 해준다라고 표현하는 것 같습니다.) 두번째로 WS인 Apache만 깔려있는 상태에서는 Controller, 아니 Java 코드 자체를 사용할 수 없다고 가정 해보겠습니다. 그렇다면 클라이언트는 /welcome이라는 HTTP 요청을 보낼 수 없겠죠. /index.html 이라는 HTTP 요청을 보내야할 것 같다고 추정됩니다. 다시 생각해보니 후자의 경우 Controller 및 Java코드를 쓸 수 없다면 Http요청 url을 받아줄 곳이 없기 때문에 /index.html이라는 HTTP 요청을 보낼 수는 없고, html 내에 location.href 등을 통해 직접적으로 페이지 이동만이 가능하지 않을까라는 생각이 듭니다. 이 때, Apache가 해당 HTTP 요청 or 직접적 페이지 이동 요청(무엇이 맞는지 모르겠습니다. 둘다 가능한지, 둘 중 하나만 가능한지)을 받아서 index.html 페이지를 띄워줍니다.(이 또한 페이지를 띄워주거나 페이지 이동한다는 개념을 WS가 html 파일을 클라이언트 쪽으로 response 해준다라고 하는 것 같습니다.) 물론 전자의 경우이든 후자의 경우이든 반환되는? index.html에는 html 태그, css파일, javascript, 이미지 등 우리가 정적 파일이라고 말하는 요소들로만 구성되어 있습니다. 즉, jstl, jsp 등의 서버 사이드 언어가 포함되지 않은 상태로, html tag와 이를 채우는 값들로 하드코딩 되어있는 파일입니다. 여기서 잠깐 질문을 정리해보겠습니다. 1. 클라이언트 - WS - WAS - DB 구조로 설계한다면 WS는 두개 포함된 것인가? 만약 WS, WAS를 두대씩 사용한다면 WS는 총 4개가 되는 것인가? 2. 깡통 IntelliJ(메모장 느낌?)에 Apache WS를 깔았을 시 전자, 후자 중 알맞게 이해한 내용이 있는지? 이렇게 정리할 수 있겠습니다. 이어서 다시 깡통 IntelliJ에서 모든 것을 지우고 WAS인 Tomcat을 깔아 보겠습니다. 그렇다면 우리는 Controller를 포함한 Java 코드를 사용할 수 있으며, servlet, jsp, thymleaf 등을 사용할 수 있습니다. 또 Http 요청을 동적으로 작성해서 보낼 수도 있습니다. 구체적으로 예를 들면, 클라이언트는 /member/{id}라는 http 요청을 보냅니다. 이 때, WAS인 Tomcat안에 포함된 WS가 해당 요청을 확인합니다. 확인해보니 member 하위에 붙는 {id}는 동적 요소입니다. 따라서 WAS 안에 포함된 Container로 보냅니다. 이 후 동작은 잘 모르지만 쭉 logic이 실행되고 DB에서 해당하는 값을 select 해올 수 있습니다. 즉, 어떤 id가 들어왔느냐에 따라 다른 결과를 출력하죠. 두번 째는 html파일에 타임리프를 사용하거나, jsp를 사용하거나, jstl을 사용하거나 하는 것이 가능해집니다. 물론 WAS는 WS를 가지고 있기 때문에 html, js, 이미지 등의 정적 파일도 관리 가능합니다. 그냥 WAS Tomcat이 존재하므로써 우리가 현재 인텔리제이에서 사용하는 모든 것들이 가능합니다. (스프링 등의 프레임워크 등의 기능을 말하는 것이 아닌 logic, db 등 처리 후 화면을 던져주는 것들) 3. 사실 WAS를 사용할 때, 설명을 구체적으로 하지 못하겠습니다. 제가 궁금한 점을 확실하게 기재하지는 못했지만 이와 같이 동작하는 것이 맞는지 궁금합니다. 즉, 인텔리제이에 작성한 코드들이 실행되고, 클라이언트에서 들어온 HTTP 요청에 따라 시작돼 응답하는 순간까지 모두 Tomcat이라는 WAS 서버가 하는 역할이라고 볼 수 있다가 맞는 말일까요? 4. 클라이언트 - WS - WAS - DB 구조에서 클라이언트에서 요청이 들어왔을 때, WS와 WAS는 실질적으로 무슨 처리를 하는 것인가요? 4-1. HTTP 요청이 아닌 단순 html 파일에서 location.href 등으로 페이지 이동을 직접 선언 했을 때, 요청된 페이지가 정적 페이지라면 WS가 처리한다. 4-2. WS도 Java 코드. Controller 등을 사용할 수 있다. 따라서 HTTP 요청이 왔을 때, Controller에서 확인한 후 단순 페이지 이동이나 정적 파일만을 응답한다면, WAS가 아닌 WS에서 처리한다. 4-3. 4-1번이 맞는지, 4-2번이 맞는지 모르겠습니다만 4-2번맞다고 가정했을 시, Controller에서 확인해봤더니 동적 파일로 이동하거나 동적 파일을 응답해주거나 추가적인 로직을 실행해야 하거나 DB와 연관된 작업일 경우 WS는 WAS가 일을 처리할 수 있도록 넘긴다. 쓰다보니 글이 길어졌습니다. 틀린 내용도 많을 것이고 잘 정리되지 않았지만 도움 요청 드려봅니다. 감사합니다.
-
미해결더 자바, Java 8
코드 질문있습니다.
List<String> collect2 = names.stream().filter(String::startsWith("k")).map(String::toUpperCase) 위 코드에서 .filter(String::startsWith("k")) 해당 부분이 에러가 나는데요, 왜 메소드 레퍼런스 방식이 에러가 나는것인지 모르겠습니다 ..filter(s -> s.startsWith("k")) 는 에러나지 않음. . toUppercase 도 static 메소드가 아닌데 에러나지 않고 startsWith 은 에러가 나는것일까요..? 제가 무엇을 제대로 모르고 있는것일까요..?
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
vagrant up 시 에러(kubeadm init)
[질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.[질문 하기] '1.2. 코드로 쉽게 구성하는 쿠버네티스 랩 환경' 과정 진행 중 vagrant up 에서 에러가 발생하였습니다. 관련하여 도움을 받을 수 있는 부분이 있을까 하여 문의드립니다. 1. 워커 노드가 구성되는 과정에서 다음 에러가 발생하면서 vagrant 실행이 중단되는 것을 보았습니다. https://192.168.1.10:6443/api/v1/namespaces/kube-public/configmaps/cluster-info?timeout=10s": dial tcp 192.168.1.10:6443: connect: connection refused [로그] ----------------------------------------------- w1-k8s-1.20: Dependency Installed: w1-k8s-1.20: conntrack-tools.x86_64 0:1.4.4-7.el7 w1-k8s-1.20: cri-tools.x86_64 0:1.23.0-0 w1-k8s-1.20: kubernetes-cni.x86_64 0:0.8.7-0 w1-k8s-1.20: libnetfilter_cthelper.x86_64 0:1.0.0-11.el7 w1-k8s-1.20: libnetfilter_cttimeout.x86_64 0:1.0.0-7.el7 w1-k8s-1.20: libnetfilter_queue.x86_64 0:1.0.2-2.el7_2 w1-k8s-1.20: socat.x86_64 0:1.7.3.2-2.el7 w1-k8s-1.20: Complete! w1-k8s-1.20: Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. w1-k8s-1.20: Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service. ==> w1-k8s-1.20: Running provisioner: shell... w1-k8s-1.20: Running: C:/Users/sunba/AppData/Local/Temp/vagrant-shell20220504-9152-agv56t.sh w1-k8s-1.20: [preflight] Running pre-flight checks w1-k8s-1.20: [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/ w1-k8s-1.20: error execution phase preflight: couldn't validate the identity of the API Server: Get "https://192.168.1.10:6443/api/v1/namespaces/kube-public/configmaps/cluster-info?timeout=10s": dial tcp 192.168.1.10:6443: connect: connection refused 2. 위 내용을 확인한 이후 마스터 노드가 구성될때의 로그를 확인 시 다음 에러가 먼저 발생했던 것으로 확인하였습니다. [ERROR ImagePull]: failed to pull image k8s.gcr.io/etcd:3.4.13-0: output: 3.4.13-0: Pulling from etcd filesystem layer verification failed for digest sha256:6937ebe10f0225ac2ef529a733a02d46829421411fb9e33145f19d4026d75478 kubeadm init 실행 중에 발생한 것 같은데, VM 에 직접 접속하여 동일한 명령을 실행했을 시에도 같은 에러를 확인할 수 있었습니다. 해당 과정이 정상적으로 진행되지 않아 이후 내용에서 에러가 발생하는 것으로 판단하고 있습니다. [로그] ----------------------------------------------- ==> m-k8s-1.20: Running provisioner: shell... m-k8s-1.20: Running: C:/Users/sunba/AppData/Local/Temp/vagrant-shell20220504-9152-1vs2oye.sh m-k8s-1.20: I0504 21:41:56.350942 3297 version.go:251] remote version is much newer: v1.24.0; falling back to: stable-1.20 m-k8s-1.20: [init] Using Kubernetes version: v1.20.15 m-k8s-1.20: [preflight] Running pre-flight checks m-k8s-1.20: [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/ m-k8s-1.20: [preflight] Pulling images required for setting up a Kubernetes cluster m-k8s-1.20: [preflight] This might take a minute or two, depending on the speed of your internet connection m-k8s-1.20: [preflight] You can also perform this action in beforehand using 'kubeadm config images pull' m-k8s-1.20: error execution phase preflight: [preflight] Some fatal errors occurred: m-k8s-1.20: [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver:v1.20.15: output: v1.20.15: Pulling from kube-apiserver m-k8s-1.20: 0d7d70899875: Pulling fs layer m-k8s-1.20: d373bafe570e: Pulling fs layer m-k8s-1.20: bd216676f0c7: Pulling fs layer m-k8s-1.20: 0d7d70899875: Verifying Checksum m-k8s-1.20: d373bafe570e: Verifying Checksum m-k8s-1.20: d373bafe570e: Download complete m-k8s-1.20: bd216676f0c7: Verifying Checksum m-k8s-1.20: filesystem layer verification failed for digest sha256:bd216676f0c74b2c08653aefec1786b044600c23e9c0bfec66a1471d9e202153 m-k8s-1.20: , error: exit status 1 m-k8s-1.20: [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager:v1.20.15: output: v1.20.15: Pulling from kube-controller-manager m-k8s-1.20: 0d7d70899875: Pulling fs layer m-k8s-1.20: d373bafe570e: Pulling fs layer m-k8s-1.20: 65c97745feee: Pulling fs layer m-k8s-1.20: d373bafe570e: Verifying Checksum m-k8s-1.20: 0d7d70899875: Verifying Checksum m-k8s-1.20: 0d7d70899875: Download complete m-k8s-1.20: 0d7d70899875: Pull complete m-k8s-1.20: 65c97745feee: Verifying Checksum m-k8s-1.20: filesystem layer verification failed for digest sha256:65c97745feeedee0d01b9c4c903e0bc020557314cea66e08076290358687651b m-k8s-1.20: , error: exit status 1 m-k8s-1.20: [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-scheduler:v1.20.15: output: v1.20.15: Pulling from kube-scheduler m-k8s-1.20: 0d7d70899875: Pulling fs layer m-k8s-1.20: d373bafe570e: Pulling fs layer m-k8s-1.20: f178a26415ce: Pulling fs layer m-k8s-1.20: 0d7d70899875: Verifying Checksum m-k8s-1.20: 0d7d70899875: Download complete m-k8s-1.20: d373bafe570e: Verifying Checksum m-k8s-1.20: d373bafe570e: Download complete m-k8s-1.20: 0d7d70899875: Pull complete m-k8s-1.20: f178a26415ce: Verifying Checksum m-k8s-1.20: d373bafe570e: Pull complete m-k8s-1.20: filesystem layer verification failed for digest sha256:f178a26415ceb0f8201c78c9629b92b299f198324f498f96d3d8c614ae7c2fcd m-k8s-1.20: , error: exit status 1 m-k8s-1.20: [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-proxy:v1.20.15: output: v1.20.15: Pulling from kube-proxy m-k8s-1.20: 20b09fbd3037: Pulling fs layer m-k8s-1.20: be5cda1e916d: Pulling fs layer m-k8s-1.20: be5cda1e916d: Verifying Checksum m-k8s-1.20: filesystem layer verification failed for digest sha256:be5cda1e916d7a8a6ae0d561d3d18bd3daf5fe4a45cc8a998aa0c12a0794782d m-k8s-1.20: , error: exit status 1 m-k8s-1.20: [ERROR ImagePull]: failed to pull image k8s.gcr.io/etcd:3.4.13-0: output: 3.4.13-0: Pulling from etcd m-k8s-1.20: Get https://k8s.gcr.io/v2/etcd/manifests/sha256:bd4d2c9a19be8a492bc79df53eee199fd04b415e9993eb69f7718052602a147a: tls: invalid certificate signature m-k8s-1.20: , error: exit status 1 m-k8s-1.20: [ERROR ImagePull]: failed to pull image k8s.gcr.io/coredns:1.7.0: output: 1.7.0: Pulling from coredns m-k8s-1.20: c6568d217a00: Pulling fs layer m-k8s-1.20: 6937ebe10f02: Pulling fs layer m-k8s-1.20: c6568d217a00: Verifying Checksum m-k8s-1.20: c6568d217a00: Download complete m-k8s-1.20: c6568d217a00: Pull complete m-k8s-1.20: 6937ebe10f02: Verifying Checksum m-k8s-1.20: filesystem layer verification failed for digest sha256:6937ebe10f0225ac2ef529a733a02d46829421411fb9e33145f19d4026d75478 m-k8s-1.20: , error: exit status 1 m-k8s-1.20: [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` m-k8s-1.20: To see the stack trace of this error execute with --v=5 or higher VirtualBox 와 vagrant 를 강의와 동일한 버전으로 재설치하고 vagrant destory / vagrant up 을 실행하는 등을 시도해보았으나 동일한 에러가 발생하였습니다. 원인을 확인하기가 어려워 혹시 해결방안이 있는지 알고 싶습니다
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
req.get('host)
origin 값을 프론트나 서버에서 안넣어줘도 host는 항상 찾을수 있으니 req.get('host')하면 바로 호스트네임이 찾아지던데 굳이 origin으로 찾은 다음에 url.parse해줘서 host를 찾는 이유가 있으신가요?
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
비쥬얼스튜디오코드 시험준비 익스텐션 설치
안녕하세요 웹디자인기능사를 준비중에 있는데 비쥬얼스튜디오코드가 처음이고, 코딩관련해서 노베이스입니다 실기시험장에가면 익스텐션이 설치되어있지 않고 익스텐션 항목은 보면 안된다고 하셨는데,[비주얼 스튜디오 코드(Visual Studio Code) 사용법 및 환경설정]이 영상에서보면 한글패치라던가 라이브서버, 칼라피커 등 익스텐션 설치에 대한 내용이 나오는데, 이 부분은 무시하고 알려주신 4가지 단축키만 설정하면 되는건가요? 한국어팩이 없으면 언어가 영어라서 단축키 설정에서 어떤걸 변경해야될지 잘 모르겠어요.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
memberservice 어노테이션
안녕하세요, 강의 진행중 아래와 같은 에러가 떠서 보니 memberservice가 중복되서 등록이 되어있다고 하는 것 같은데요, Caused by: org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean definition with name 'memberService' defined in class path resource [hello/hellospring/SpringConfig.class]: Cannot register bean definition [Root bean: class [null]; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=springConfig; factoryMethodName=memberService; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [hello/hellospring/SpringConfig.class]] for bean 'memberService': There is already [Generic bean: class [hello.hellospring.service.MemberService]; scope=singleton; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [C:\Users\63328\git\hello-spring\hello-spring\out\production\classes\hello\hellospring\service\MemberService.class]] bound. 아래처럼 세팅이 되어있었는데, memberserivce.java에 @memberservice 어노테이션을 지우면 잘 돌더라구요. 중복되서 bean이 등록되어서 그런건가요? SpringDataJpaMemberRepository.java랑 Memberservice.java에서 두번 등록된건가요? Memberservice.javapackage hello.hellospring.service;import hello.hellospring.domain.Member;import hello.hellospring.repository.MemberRepository;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import java.util.List;import java.util.Optional;@Transactional // jpa를 쓰려면 항상 transcation이 있어야함@Service // 이게 없으면 그냥 순수한 자바코드public class MemberService {private final MemberRepository memberRepository; @Autowired public MemberService(MemberRepository memberRepository) {this.memberRepository = memberRepository; }/** * 회원가입 */ public Long join(Member member) {//같은 이름이 있는 중복 회원은 안됨! validateDuplicateMember(member); memberRepository.save(member); return member.getId(); }private void validateDuplicateMember(Member member) {/** Optional<Member> result = memberRepository.findByName(member.getName()); ifPresent 이란? result의 값이 있으면 동작. Optional에서만 동작 result.ifPresent(m -> { throw new IllegalStateException("이미 존재하는 회원입니다."); }); **/ memberRepository.findByName(member.getName()).ifPresent(m -> {throw new IllegalStateException("이미 존재하는 회원입니다."); }); }/** * 전체 회원 조회 */ public List<Member> findMembers() {return memberRepository.findAll(); }public Optional<Member> findOne(Long memberId) {return memberRepository.findById(memberId); }}--------------------------------SpringConfig.javapackage hello.hellospring;import hello.hellospring.repository.JdbcMemberRepository;import hello.hellospring.repository.JdbcTemplateMemberRepository;import hello.hellospring.repository.JpaMemberRepository;import hello.hellospring.repository.MemberRepository;import hello.hellospring.service.MemberService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import javax.sql.DataSource;// 어셈블리 코드// OCP : 개방 - 폐쇄 원칙@Configurationpublic class SpringConfig { private final MemberRepository memberRepository; @Autowired public SpringConfig(MemberRepository memberRepository) { this.memberRepository = memberRepository; } /** @PersistenceContext private EntityManager em; //private DataSource dataSource; // springboot가 application.properties를 보고 자체적으로 bean생성. 즉, datasource 생성. @Autowired public SpringConfig(DataSource dataSource) { this.dataSource = dataSource; } @Autowired public SpringConfig(EntityManager em) { this.em = em; } **/ @Bean // spring bean 등록 public MemberService memberService() { //return new MemberService(memberRepository()); return new MemberService(memberRepository); } /** @Bean public MemberRepository memberRepository() { //return new MemoryMemberCloneRepository(); //return new JdbcMemberRepository(dataSource); //return new JdbcTemplateMemberRepository(dataSource); //return new JpaMemberRepository(em); return new JpaMemberRepository(em); } **/}-----------SpringDataJpaMemberRepository.javapackage hello.hellospring.repository;import hello.hellospring.domain.Member;import org.springframework.data.jpa.repository.JpaRepository;import java.util.Optional;// springdataJPA가 JpaRepository 를 상속하고 있으면 자동으로 구현체를 spring bean에 등록해줌public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository { @Override Optional<Member> findByName(String name);}
-
미해결스프링 부트 개념과 활용
맨 처음 프로젝트 생성 후 Run 시 에러
안녕하세요 강의 수강 시작한 학생입니다. 스프링 부트 프로젝트 생성 후 Run 시 문제가 발생하는데... 아무리 검색을 해 봐도 잘 모르겠어서 질문 남깁니다. Lombok 얘기가 있긴 한데... 그 이유때문은 아닌 것 같은데 혹시 초기 설정이나 그런 쪽으로 제가 빼 먹은 것이 있을까요? class는 완전 기본 형태인 main 안에 SpringApplication.run(Applicaion.class, args); 만 작성되어 있는 상태 입니다.