npm install -D json-server 입력 후 npx json-server --watch db.json 을 입력하면, $ npx json-server --watch db.json node:internal/util/parse_args/parse_args:98 throw new ERR_PARSE_ARGS_UNKNOWN_OPTION( ^ TypeError [ERR_PARSE_ARGS_UNKNOWN_OPTION]: Unknown option '--watch'. To specify a positional argument starting with a '-', place it at the end of the command after '--', as in '-- "--watch" at checkOptionUsage (node:internal/util/parse_args/parse_args:98:11) at node:internal/util/parse_args/parse_args:360:9 at Array.forEach (<anonymous>) at parseArgs (node:internal/util/parse_args/parse_args:357:3) at file:///C:/Users/SSAFY/Desktop/STUDY/3.%20Vue/BOARD/node_modules/json-server/lib/bin.js:13:33 at ModuleJob.run (node:internal/modules/esm/module_job:218:25) at async ModuleLoader.import (node:internal/modules/esm/loader:329:24) at async loadESM (node:internal/process/esm_loader:34:7) at async handleMainPromise (node:internal/modules/run_main:113:12) { code: 'ERR_PARSE_ARGS_UNKNOWN_OPTION' 라는 에러메세지가 출력됩니다. json-server의 버전은 강의와 달라서, https://github.com/typicode/json-server 이 문서를 보고 해결하려고 했는데, 어떻게 해야할지 모르겠습니다 ㅠㅠ
it('보여줄 상품 리스트가 더 있는 경우 show more 버튼이 노출되며, 버튼을 누르면 상품 리스트를 더 가져온다.', async () => { const { user } = await render(<ProductList limit={PRODUCT_PAGE_LIMIT} />); await screen.findAllByTestId('product-card'); const showMoreButton = screen.getByRole('button', { name: 'Show more', }); expect(showMoreButton).toBeInTheDocument(); await user.click(showMoreButton); expect(await screen.findAllByTestId('product-card')).toHaveLength( PRODUCT_PAGE_LIMIT * 2, ); }); 여기서 render 이후에 await screen.findAllByTestId('product-card'); 를 하는 이유가 있나요? 저걸 해주지 않으면 버튼이나 상품 아이템을 그리지 못하는 건 아는데... 그려지는 이유를 모르겠어서요 await로 찾을때까지 대기하는 걸로 이해하면 될까요? 1. 그렇다면 render 호출 이후 요소를 찾지 않아도 되는 경우에도 await screen.findAllByTestId('product-card');를 해주어야 하는걸까요? 2. 아래와 같이 하는거랑 차이가 있나요? it('보여줄 상품 리스트가 더 있는 경우 show more 버튼이 노출되며, 버튼을 누르면 상품 리스트를 더 가져온다.', async () => { const { user } = await render(<ProductList limit={PRODUCT_PAGE_LIMIT} />); const showMoreButton = await screen.findByRole('button', { name: 'Show more', }); expect(showMoreButton).toBeInTheDocument(); await user.click(showMoreButton); expect(await screen.findAllByTestId('product-card')).toHaveLength( PRODUCT_PAGE_LIMIT * 2, ); });
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 저는 롤백 false를 안해서 자동으로 rollback이 되는데 왜 insert 쿼리가 찍히는걸까요??
강의 제목 : 알고리즘 수업 - 깊이 우선 탐색 2( 백준 24480) 번 질문 안녕하세요! 위 강의 10:14번에 나와있는 정리 노트 관련해서 하나 여쭤보고 싶은 것이 있어요! 5번 '방문 순서를 담기 위해서는 어떤 자료구조를 사용해야 될까?' 이거 답이 리스트(LIST) 인가요?? 혹시 이 정리 노트에 있는 질문 5개에 대한 답변이 적혀있는 PDF 같은 게 있을까요?? 나중에 자격증 공부할 때 도움될 것 같아서 여쭤봅니다 감사합니다! 강의 영상마다 질문이 있으면 언제든 그리고 바로 질문 남겨주세요 ! 질문할 때 가장 정확하게 이해할 수 있습니다. 해당 영상과 관련된 질문들을 해주실 때 제가 가장 정확히 답변 드릴 수 있습니다! 취업 전반의 상담이나, "제 코드가 왜 틀렸는지 알려주세요"와 같이 광범위한 질문은, 질문자의 상황에 따라 답변이 달라질 수 있기 때문에, 정확한 답변을 드리기가 어렵습니다 :( 이런 분들을 위해서는 멘토링 항목으로 별도 제공하고 있으니, 다음 링크를 참고해주세요! 이 링크를 통해서는 본인의 코드가 왜 틀렸는지 모를 때 질문을 주셔도 좋고, 취업 전반(면접 준비, 자소서, CS 면접 등) 에 관련한 질문을 주시면 답변 드리겠습니다 :) "이 질문은 해도 되나?"라는 생각이 드신다면 우선 남겨주세요! 제가 답변 드리기 어려운 건 멘토링에 올려 달라고 재요청 드리겠습니다 :)
안녕하세요 강의 잘 듣고 있습니다. 페이지 교체 알고리즘 중 가장 오래 사용되지 않은 페이지의 스왑 아웃과 먼저 들어온 페이지들 중 참조되지 않은 페이지를 선별하여 스왑아웃 하는 것이 결과적으로 비슷한 결과가 나올 거 같은 생각이 들었습니다. 제가 잘 이해한 게 맞다면 예시로 들어주신 참조열 2313523423의 경우에도 두 방식이 동일하게 2, 1, 5를 스왑 아웃 하는 결과가 나오는 듯 합니다. 이 둘의 사용성에 대한 더 구체적인 차이를 알 수 있을까요?
안녕하십니까? 강사님 교재 chapter 11장 5번 연습문제를 풀기 위해 coding을 했습니다. 프로그램은 작동 하는데 첨부 화면캡처 사진 14번행에 밑줄이 생겼는데 읽어봐도 무슨 말인지 알수가 없습니다. 설명을 부탁드려도 될까요? 혹시 저 밑줄을 없앨 수 있는 방법이 있을까요? 수고하십시오
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 섹션 3 중 회원 서비스 테스트 질문입니다. 10분 정도에서 진행한 중복_회원_예외() 메서드에서 다음과 같은 코드를 입력했는데 package com.example.hellospring.service; import com.example.hellospring.domain.Member; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; class MemberServiceTest { MemberService memberService = new MemberService(); @Test void 회원가입() { //given Member member = new Member(); member.setName("hello"); //when Long saveId = memberService.join(member); //then Member findMember = memberService.findOne(saveId).get(); Assertions.assertThat(member.getName()).isEqualTo(findMember.getName()); } @Test public void 중복_회원_예외() { //given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring2"); memberService.join(member1); IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2)); assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다"); /*try { memberService.join(member2); fail(); } catch (IllegalStateException e) { assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); }*/ } @Test void findMembers() { } @Test void findOne() { } } 전 강사님과 다르게 초록 불이 안 뜨고 에러가 떴습니다. 라이브러리 설정을 안해줘서 다음과 같은 에러가 뜬 건가요? org.opentest4j.AssertionFailedError: Expected java.lang.IllegalStateException to be thrown, but nothing was thrown.
안녕하세요, 항상 강의 잘 보고 있습니다. 강의 듣기 전에는 모든 Layer에 단위테스트를 작성하느라 테스트가 싫었는데 덕분에 테스트가 재미있어졌습니다. 감사합니다 😀 아래 질문에 대한 답변을 읽다가 알쏭달쏭한 부분이 생겼습니다. 해당 질문(긴 작업일 경우 트랜잭션을 걸지 말아도 된다는 점이 이해가 잘 안갑니다) 에서 강사님께서는 "메일 전송 이후에 해야하는 작업들이 1가지가 아니라 트랜잭션이 보장되고 처리되어야만 하는 N개의 작업이었다면, 별도의 서비스로 추출해 트랜잭션을 적용하는 방법을 생각해볼 수 있습니다." 라는 말씀을 하셨습니다. 그렇다면 아래 MailService 클래스를 예시로 생각했을 때, 아래와 같이 별도의 클래스로 분리하라는 말씀이 맞으실까요? // 변경 전 @RequiredArgsConstructor @Service public class MailService { private final MailSendClient mailSendClient; private final MailSendHistoryRepository mailSendHistoryRepository; public boolean sendMail(String fromEmail, String toEmail, String subject, String content) { boolean result = mailSendClient.sendEmail(fromEmail, toEmail, subject, content); if (result) { mailSendHistoryRepository.save(MailSendHistory.builder() .fromEmail(fromEmail) .toEmail(toEmail) .subject(subject) .content(content) .build() ); return true; } return false; } } 아래 코드에서 변경된 부분은 다음과 같습니다. MailSendHistoryService 클래스에 대한 의존관계가 생겼습니다. MailService의 sendEmail 메서드에는 readOnly 트랜잭션이 걸렸습니다. MailSendHistoryService의 추가적인_일을_하다 메서드에는 트랜잭션이 걸렸습니다. // 변경 후(내 생각) @RequiredArgsConstructor @Service public class MailService { private final MailSendClient mailSendClient; private final MailSendHistoryService mailSendHistoryService; @Transactional(readOnly = true) public boolean sendMail(String fromEmail, String toEmail, String subject, String content) { boolean result = mailSendClient.sendEmail(fromEmail, toEmail, subject, content); if (result) { mailSendHistoryService.추가적인_일을_하다(); return true; } return false; } } @RequiredArgsConstructor @Service public class MailSendHistoryService { private final MailSendHistoryRepository mailSendHistoryRepository; @Transactional public void 추가적인_일을_하다() { ... DB CUD 작업 ... } }
안녕하세요 해당 강의 15분 입니다. Pipeline 2212-jenkins_pipeline-step2 만들고 지금 빌드 누르면 잘 되다가 소스빌드 부분부터 에러가 발생합니다. 해당 오류처럼 나오는데 제가 빼먹은 게 있을까요? 다시 카페에서 페이지 보고 수정해도 안되네요 참고로 실습환경은 mac m2입니다.
1012번 문제 이전에 dfs. bfs 강의 부분에서 제가 기억하기로는 ret++; dfs(i, j); 이렇게 써서 제출 후 정답은 맞았습니다만... 이 두 코드의 위치가 바뀌어도 상관없는 걸로 아는데 제가 알고 있는 것이 맞나요? 아니면 혹시 코테 볼 때는 dfs(i, j); ret++; 이렇게 해야만 하나요???
[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]
안녕하세요 좋은 강의 잘 듣고있습니다. 몇가지 질문이 있어 문의드립니다. 데코레이터로 감싸진 함수 호출 강의를 다볼때쯤 되어 코드를 보니 blog_abtest.py와 blog.py 에서 데코레이터로 감싸진 함수들의 호출은 @login_manager.user_loader -> 해당 데코레이터 부분에서 된다고 보면 될까요?? 수업시간에 말씀해주셨을텐데 제가 잘 이해를 못한것 같네요... 예를들어, 아래 이미지의 함수들의 경우 선언과 동시에 호출을 하는 것일까요? 2. C++, C#으로 구현된 서비스 SDK와의 연계 제가 타전공으로서 웹은 처음으로 강사님을 통해 배우고 있는데 실무에서 C++ 혹은 C#으로 구현된 SDK에서 제공하는 '지도(map)'을 가시화하는 웹서버를 개발해야 됩니다. 본 강의에서 학습한 FLASK에 해당 SDK를 연동해서 홈페이지에서 지도를 불러올 방법이 있을까요?? 마지막으로, 정부쪽 웹개발은 FLASK를 사용하지 못하나요?? 국가 과제를 수행하고 있는데 정부에서 쓰는 웹 프레임워크가 따로 있다고 들었습니다.(자바와 유사한 전자정부~) 국가기관에 웹서비스를 배포하고자 할때는 파이썬 기반의 FLASK를 사용하지는 못할까요??
코딩테스트 실전에서 sort()를 이용하여 풀고 제출해버리면 영상에서 설명해주신 방법으로 해결한 답에 비해 떨어질 확률이 높아질까요? 두 가지 방법으로 문제 풀어 보았고 둘 다 한번에 성공하긴 했습니다 다만, 실전문제에서 sort()함수를 사용하지 말라는 조건이 없다면 굳이 영상에서의 방법을 써야하는지도 궁금합니다. 실전코테 시 문제가 여러개 나올 수도 있고 심적 압박(?)으로 반복문을 써야한다고 알고 있어도 긴장해서 sort()쓸 것 같아서요 ㅜㅜ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요. OrderServiceTest 클래스 질문이 있습니다. MemberServiceImpl 객체와 OrderServiceImpl 객체는 서로 의존성이 없어보이는데, 각각의 객체 내부에 존재하는 MemberRepository를 어떻게 공유하는지 궁금합니다. 정확히는 createOrder() 테스트 함수 내부에서 memberService.join(member)을 했을 때, 이후 orderService.createOrder() 메서드 내부에서 memberRepository.findByID()를 통해 멤버를 어떻게 찾아내는 것인가요?
안녕하세요. 유니티를 다루다가 언리얼을 공부하고자 해당 강의 구매 후 시청 전에 질문 드릴 것이 있어 남깁니다. 유니티로 게임 로직을 구현할 때 경험상 씬(언리얼에서는 레벨이라고 하는 것 같습니다)을 통해 간단하게 로그인씬->로비씬->인게임씬의 로직으로 게임이 구현되는데요. 강의 내용의 서버는 인게임씬에 해당하는 것인지 로그인씬, 로비씬 같은 것도 구현이 가능한 것인지 궁금합니다. 인게임씬에 해당하여 다른 씬은 따로 구현해야한다면 1강이나 2강을 보면 도움이 될 지도 궁금합니다. 감사합니다.
롬복 기능 추가할 때 build.gradle의 dependencies에 implementation 'org.projectlombok:lombok' 이 한 줄만 넣어줘도 롬복이 기능하는데 문제가 없는데 강의에서는 아래와 같이 여러 줄의 코드를 추가해줬습니다. 단순히 implementation만 추가해주는것과 강의에서 제시한 아래의 코드가 서로 어떻게 다른 건지 알 수 있을까요? //lombok 라이브러리 추가 시작 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //lombok 라이브러리 추가 끝 참고로 스프링부트 버전은 3.2.1 입니다.