묻고 답해요
137만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이미지 관리 풀스택(feat. Node.js, React, MongoDB, AWS)
선생님 aws-sdk 모듈을 찾을 수 없다고 합니다.
aws-sdk는 따로 설치를 안해도 괜찮도 하셔서 설치를 안했습니다. 하지만 Cannot find module 'aws-sdk' 에러가 발생합니다.
-
해결됨mongoDB 기초부터 실무까지(feat. Node.js)
인덱스 생성시점
선생님, 안녕하세요! 좋은 강의 정말로 감사드립니다!이번 강의를 보면서, 궁금한 게 생겼는데요.이번강의에서 인덱스를 생성하면서, 탐색속도가 훨씬 빨라진다는 걸 알게되었습니다. 기존에 생성되어있는 (인덱스가 걸려있지 않은)데이터들에도 인덱스를 걸어주면 더 빨라지는 걸로 보이는데요. 그런데, 이번 강의에서 인덱스를 걸고 데이터를 생성하면, 인덱스를 걸지않았을 때보다 생성시간이 오래걸리는 부분이 있었습니다. 그렇다면 기존에 인덱스가 걸려있지않은 데이터들에 새로 인덱스를 걸 때는 기존 데이터들에 인덱스를 새로 걸어주는 건가요?
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
JdbcTemplate
제가 이클립스를 사용하고 있는데 JdbcTemplate 에서 오류가 나요,, build.gradle파일에서 아래와 같이 의존성 설정도 했습니다.. 구글링을 해봐도 잘모르겠어서 여쭤봅니다ㅜ...implementation 'org.springframework.boot:spring-boot-starter-jdbc'runtimeOnly 'mysql:mysql-connector-java'
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
실전문제 1~3 질문
강사님 안녕하세요! 하단의 정성스러운 답변 감사드립니다!현업에는 있지만 Devops가 아니라 물어볼데가 많지 않아, 궁금한것 및 확인하고 싶은것을 정리해서 여쭙습니다... 한번 혼자 찾아보고 이해한되는것을 정리하였습니다. 감사합니다! (질문 뒤에 있는 표시가 "실전문제 - 문제번호에" 해당합니다.) 1.CloudFront는 보통 S3 버킷 앞에 많이 사용되는걸까요? 찾아보니 그런 것 같아서요! (1-2)2.AWS Elastic Beanstalk이 운영 오버헤드가 많이 발생한다는 것을 어떤식으로 알 수가 있는거죠? 그냥 단순히 외워야 할까요..? 그리고 AWS Elastic Beanstalk에서 Lambda 함수를 직접 실행하는건 불가능한게 맞나요? (1-6)3.변경 사항이 발생하는 즉시 새 콘 텐츠를 반환하는 강력한 일관성이라는 말이 결국에는 S3보다 EFS가 더 빠르다는 말씀이신거죠? (1-13)4.CloudFront에서 고 가용성을 위해 오리진 그룹을 통한 장애 조치 기능을 제공하기에 Route 53을 사용할 필요 없다고 나와 있는데, 그럼, CloudFront가 없으면 해당 기능을 적용하기 위해서는 Route53을 무조건 사용해야 하나요? (1-16)5.콘텐츠를 가능한 한 빨리 전 세계 사용자에게 제공해야 되기 때문에, CloudFront가 더 적합한 솔루션인건가요? Amazon Route 53 지리적 위치 라우팅 정책도 해당 기능이 가능하는지만, CloudFront가 더 적합한거죠? (1-19)6.CloudFront는 항상 Public에 있는 것이 맞죠? (2-5)7.정적 자산을 CloudFront로 이동할 수 없는건 이해가 되는데, D에서 정적 자산을 Amazon S3로 이동 Auto Scaling이 활성화된 Amazon Elastic Container Service(Amazon ECS) 컨테이너로 애플리케이션 이동 데이터베이스를 Amazon RDS로 이동하여 다중 AZ 배포가 맞는게 이해가 안됩니다. 문제가 컨테이너랑 관련이 있는지요? (3-20)8.다른 가용 영역에 다른 EC2 인스턴스를 오리진 그룹의 일부로 구성한다는 말이 이해가 되지 않습니다 이 말은 오리진 그룹에 속한 EC2 인스턴스가 여러 가용 영역에 분산되어 있는걸까요? . (3-27)9.D에서 Amazon Route 53 가중 라우팅 정책 생성 리전에서 사용자 수가 가장 많은 EC2 인스턴스에 가장 높은 가중치를 부여하도록 라우팅 정책을 구성이 아니라 가장 낮은 가중치를 부여하도록 하면 해당 질문에 맞는 답일까요? (3-30)
-
미해결스타트업 성장과 함께하는 AWS 클라우드 아키텍쳐 올인원
WEB, APP, DB 구조
안녕하세요. 수업 잘 듣고 있습니다.WEB/APP/DB로 분할해서 세팅하는거 보고있는데..WEB이 프론트 APP이 백엔드 DB는 DB인가요?APP이라는 항목이 약간 모호하게 설정된것 같아서요.
-
해결됨mongoDB 기초부터 실무까지(feat. Node.js)
$pull 문법에 대한 질문
선생님, 안녕하세요. 좋은 강의 너무 감사드립니다. 답변도 잘해주셔서 너무 감사드려요!이번 강의를 들으면서,Blog.updateMany( { "comments.user": userId }, { $pull: { comments: { user: userId } } } )이 구문이 나왔는데요. 여기서 updateMany의 첫번째 변수인{ "comments.user": userId },는 comments배열의 user가 userId인 객체를 찾는거고,{ $pull: { comments: { user: userId } } }여기서도 comments배열안의 user가 userId인 객체를 찾는 거라서, 사실상 같은거를 두번 써준 게 아닌가요??그래서 const [user] = await Promise.all([ User.findOneAndDelete({ _id: userId }), Blog.deleteMany({ "user._id": userId }), Blog.updateMany( { "comments.user": userId } // { $pull: { comments: { user: userId } } } ), Comment.deleteMany({ user: userId }), ]);이런식으로 updateMany의 두번째 변수만 Blog.updateMany( { "comments.user": userId } // { $pull: { comments: { user: userId } } } ),이런식으로 주석처리를 해줬습니다. 그러자 { "err": "Cast to ObjectId failed for value \"2023-07-03T10:17:04.313Z\" (type Date) at path \"user\" because of \"BSONError\"" }이런 에러가 나왔어요. 그래서 확인해보니, User.findOneAndDelete({ _id: userId }), Blog.deleteMany({ "user._id": userId }), Comment.deleteMany({ user: userId }),updateMany말고 다른 구문들은 다 실행이 됬더라구요. 그래서 user도 삭제되고 블로그도 삭제되고, comment도 삭제되었지만 blog안의 user가 작성한 comment는 pull되지 않아서 그대로 남아있었습니다. 그런데 여기서 궁금한게, promise.all로 묶어서 같이 실행하면, 하나라도 에러가 나면 바로 실행을 중단하고 에러를 배출한다고 배운 것 같은데, Blog.updateMany의 아래 구문인, Comment.deleteMany가 실행됬더라구요. 트랜잭션까지는 아니더라도 updateMany에서 에러가 나면 Comment.deleteMany는 실행이 안될 줄 알았는데, 이거까지 실행된 거를 보면, Promise.all에서는 전부 순서없이 비동기로 동시에?실행되는 걸까요?
-
해결됨하루만에 배우는 aws 서버리스
강의 노트
강의에서 google doc 노트를 기반으로 설명해주시는데 그 노트는 어디서 다운 받을 수 있나요??
-
미해결이미지 관리 풀스택(feat. Node.js, React, MongoDB, AWS)
new aws.S3 version 확인
"multer-s3": "^2.10", "@types/multer-s3": "^2.7.12", 버전은 위처럼 깔아주셔야 강의와 호환될것같습니다.
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
원본도표자료 pdf 깨짐
위 이미지처럼 파일 열어보니 대부분 다 잘려있는데 병합된 버전으로 다시 업데이트해서 올릴 계획이 있으실까요?
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
참조 관련 질문있습니다.
안녕하세요. 질문이 두 가지 있습니다.강의에선 node_modules가 호스트에 없어서 참조에서 제외하고, 나머지 소스코드는 존재하여 전부 참조하는식으로 진행이 되었는데,그럼 docker build시 COPY ./ ./ 이부분은 아예 필요가없는거 아닌가요? 이미지에 이미 소스가 존재할텐데, 강의처럼 볼륨참조 설정을 넣어주면 컨테이너 생성 시, 이미 존재하는 소스는 호스트에서 가져와서 덮어쓰기된다고 이해하면 될까요?
-
미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
Nginx 설정 이후 개발용 도커 컨테이너 실행
안녕하세요! Nginx 적용 강의까지 수강한 이후 개발용 컨테이너를 실행하기 위해 docker-compose -f docker-compose.dev.yml up 명령어를 입력하였는데 다음과 같은 에러가 발생했습니다.개발용과 배포용 도커 분리하기 에서도 개발용 컨테이너를 실행하면 잘 됐었습니다. 이후 Nginx 적용하기까지 하는데도 강의와 책을 따라가며 잘 진행하여 문제없이 끝마쳤습니다. 왜 이러한 에러가 발생했는지 궁금합니다. +) 혹시나 제 코드에 무엇인가 오타가 있을까봐 수용님의 깃허브에 올라온 코드와 일일히 비교하며 찾아봤지만, 코드에 오타는 발견하지 못하였습니다.아래 사진은 Docker-Desktop에서 컨테이너와 이미지, 저장소를 캡쳐한 사진입니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
44강 mysql 접속중 문제가 있습니다.
강사님 안녕하세요.mysql에 mysql -u root -p 명령어를 통해 접속하고 그다음 비밀번호를 치려는데입력 자체가 안되고 엔터밖에 칠 수가 없더라구요.이런 문제가 왜 발생하는 걸까요?복사 붙여넣기 단축키, 키보드 타자 다 안됩니다.엔터만 쳐져서 계속 저런 상태입니다...
-
해결됨비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
certbot 실행 오류
안녕하세요 선생님certbot 설치 후 실행을 하면 오류가 납니다.어디서부터 다시 해봐야하는지 모르겠습니다 오류내용Challenge failed for domain hahahagood.shophttp-01 challenge for hahahagood.shopCleaning up challengesSome challenges have failed.IMPORTANT NOTES: - The following errors were reported by the server: Domain: hahahagood.shop Type: dns Detail: no valid A records found for hahahagood.shop; no valid AAAA records found for hahahagood.shoproot@ip-172-31-46-56:/home/ubuntu#
-
해결됨호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
9:27 에 나오는 부분 찾아봤습니다.
public static MockHttpServletRequestBuilder get(String urlTemplate, Object... urlVariables) { return MockMvcRequestBuilders.get(urlTemplate, urlVariables) .requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); }위의 코드는 RestDocumentationRequestBuilders의 get()입니다.Spring REST Docs2 - 요청, 응답필드의 9:27에서 하신 말씀 듣고 상속 관계이지 않을까하는 생각이 들었고 궁금해서 들어가보니 상속이 아닌RestDocumentationRequestBuilders의 get()에서 내부적으로 MockMvcRequestBuilders의 get()를 호출해주더라구요.MockMvcRequestBuilders가 추상클래스지만 get()이 static으로 선언되어 있어 상속을 해도 오버라이드를 할 수 없기에 저런 식으로 만들었지 않았을까?라고 추측을 해봤습니다.그러면서 추가적으로 위의 클래스들이 추상클래스로 만들어져 있고 메소드가 전부 static으로 선언되어 있는 것에 대해 이유가 궁금했습니다.추상클래스는 추상 메소드를 선언하고 상속을 하면서 오버라이드를 통한 다형성을 위해 사용한다고 알고 있었는데 여기서는 다른 목적과 방식으로 사용하고 있는 것처럼 보였기 때문입니다.그래서 검색을 해봤지만 키워드를 잘못 선택했는지명확하게 답을 찾지는 못했고, 추상 클래스와스태틱 메소드에 대해 각각 찾아보면서"객체 생성 제한과 메모리 이득 때문인가?"라는 생각이 들더라구요.하지만 추상클래스도 익명객체를 사용하면 객체 생성이 가능해지는 걸로 아는데 그래서인지RestDocumentationRequestBuilders는 생성자도 private으로 선언해 익명 객체로도 생성이 안되게 막아 놨지만 MockMvcRequestBuilders같은 경우는 생성자를 따로 막아 놓지 않아서 익명 객체로 생성이 가능하더라구요. 이렇게 차이를 두는 이유는 뭔가요??그리고 위의 클래스들처럼 선언한 이유도 궁금합니다.
-
해결됨호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
AbstractAuthenticationProcessingFilter내에서 HttpServletResponse값이 안들어갑니다
@Bean public SecurityFilterChain httpSecurity(HttpSecurity http) throws Exception { return http.cors().disable() .csrf().disable() .httpBasic().disable() .formLogin().disable() .authorizeRequests().anyRequest().authenticated() .and() .addFilterAt(authFilter(), UsernamePasswordAuthenticationFilter.class) .addFilterAt(jwtFilter(), UsernamePasswordAuthenticationFilter.class) .build(); } @Bean public WebSecurityCustomizer webSecurityCustomizer() { return web -> { web.ignoring().requestMatchers().antMatchers("/h2/**"); }; } @Bean public AuthFilter authFilter() throws Exception { var authFilter = new AuthFilter(); authFilter.setAuthenticationManager(authenticationConfiguration.getAuthenticationManager()); authFilter.setAuthenticationSuccessHandler(new SimpleUrlAuthenticationSuccessHandler("/")); authFilter.setAuthenticationFailureHandler(new SimpleUrlAuthenticationFailureHandler("/error")); return authFilter; }설정은 위와 같이 했습니다.@Override protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException { super.successfulAuthentication(request, response, chain, authResult); String SECRET = "secrsdkfjhjh4243j234jh2SDdsfjhgsdfhjgjFQQQQdasd1et"; Claims claims = Jwts.claims(); claims.put("username", SecurityContextHolder.getContext().getAuthentication().getName()); String compact = Jwts.builder() .setClaims(claims) .setIssuedAt(new Date(System.currentTimeMillis())) .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 10)) // 1시간 .signWith(SignatureAlgorithm.HS256, SECRET) .compact(); response.addHeader("Authorization", compact); response.addCookie(new Cookie("token", compact)); }위와 같이 설정을 했는데 http 요청 테스트를 해보면 설정한 값이 하나도 들어가 있지않습니다.컨트롤러나 OncePerRequestFilter에서 값을 넣어보면 잘 적용됩니다..
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
AWS 과금 조심!
질문글은 아니지만 혹시 저처럼 AWS랑 안 친하신 분들을 위해 과금 조심하시라고 올립니다. 강의 내용에도 설명 해주시지만, 고정IP(아마존에서는 Elastic IP Addresses, 탄력적 IP라고 부르네요)를 생성하고 인스턴스를 연결 안 하거나, 연결된 인스턴스가 running상태가 아니면 하루에 0.12USD정도 나가는 것 같네요.(저는 인스턴스에 연결만 해두면 되는 줄 알고 연결된 인스턴스 꺼놨다가 요금 나갔네요ㅜ.. 수업료가 그나마 싸서 다행입니다. )AWS 강의까지 진행하시는 분들은 참고하셔서 진행하시면 좋을 것 같아요!
-
미해결AWS(Amazon Web Service) 입문자를 위한 강의
RDS Replication에 관련된 문의
RDS Replication는 읽기만 가능하고 복제본이 생성되면 해당 복제본 마다 엔드포인트가 생성되는 걸로 알고 있는데 그럼 Insert할때는 original 엔드포인트에만 접근해서 처리하는 것이 맞죠?그리고 Insert 트래픽과 read 트래픽을 분간하여 insert 트래픽인 경우 original 엔드포인트에만 연결된 EC2 인스턴스에만 트래픽을 보내도록 ELB로 설정가능한가요?
-
해결됨mongoDB 기초부터 실무까지(feat. Node.js)
comment의 id가 생성되는 시점
선생님 안녕하세요. 강의 정말 잘듣고 있습니다. 감사드립니다.강의를 보다가 궁금한 점이 생겼는데요. 블로그에 코멘트를 넣을 때, 이렇게 했는데,const comment = new Comment({ content, user, blog }); await Promise.all([ comment.save(), Blog.updateOne({ _id: blogId }, { $push: { comments: comment } }), ]);저는 처음에 이걸 보고 comment 콜렉션에 들어가는 다큐먼트와 blog에 들어가는 comment의 Id 가 다를 거라고 생각했어요. comment의 id는 디비에 직접 삽입 된 후에 반환될 거라고 생각했습니다. 그래서 promise.all을 이용해 한번에 처리하는 게 아니라, 순차적으로 await을 붙여서 해줘야 한다고 생각했었는데요. 그런데 결과를 보니 comment의 id와 블로그에 들어가 있는 comment의 id가 같더라구요. 정말 신기했습니다. 그래서 궁금한게, comment의 id는const comment = new Comment({ content, user, blog });이 시점에서 생성되는 건가요? 아니면 다른 뭔가가 있을까요?? 궁금합니다~
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
테스트(Matchers.is) 질문드립니다.
.andExpect(MockMvcResultMatchers.jsonPath("$.length()").value(Matchers.is(2)))위 코드와 아래코드 모두 정상적으로 통과하는걸 확인하였는데요.andExpect(MockMvcResultMatchers.jsonPath("$.length()").value(2))수업에서는 Matchers.is()를 사용하셨는데 위 코드 문맥에서 is()를 굳이 왜 사용하셨는지 궁금해서 질문드립니다.
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
elasticbeanstalk에 배포
elasticbeanstalk에 배포시 다음과 같은 에러가 뜹니다. 강사님께서 올려주신 linux2 버전 소스들을 참고했습니다. dockerfile과 docker-compose.yml 은 아래와 같습니다. 저는 elasticbeanstalk가 docker-compose 파일을 토대로 이미지를 생성하고 컨테이너를 생성한다고 이해했습니다. 구글링을 해봐도 잘 모르겠어서 진도를 못나가겠습니다... 부탁드립니다 ㅠㅠㅠ