자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요! 강의 완강하고 복습을 하고있는 수강생입니다. 복습을 하는 과정에서 궁금한 점이 있어서 질문이 있는데요 선생님께서 도서관리 애플리케이션 화면은 제공해주셨는데 사용자 등록란에 이름과 나이를 입력하고 저장을 누르면 POST 메소드가 연결되고 목록에 들어가면 GET, 수정을 누르면 UPDATE, 삭제를 누르면 DELETE 메소드가 연결되는 것은 프론트엔드 작업 과정에서 어떠한 설정을 해주셔서 자연스럽게 되는건가요? 그 과정도 공부하고싶은데 자바스크립트와 리액트까지 공부하면 될까요? 강의 공부를 끝내고 나면 제 프로젝트를 한번 만들어보고싶은데 어느정도 공부해야 할지 감이 잘오지 않아서요 화면 구성부터 서버 동작하는 처음부터 끝까지 해보고싶어서 질문드립니다!
안녕하세요 강사님 강의를 보고 토이 프로젝트에서 주문 시 재고 감소 및 메뉴 주문량 증가 로직에서 낙관적락 기법을 적용해 보았는데요, 강의에서 해주신 내용 그대로 파사드 패턴 까지 적용을 해보면서 시도했는데 무한 루프가 돌았습니다. hikariCP pool을 40으로 설정해주니 그제서야 해결이 되었는데요, 강의에선 네임드락에서 커넥션풀을 지정해주었는데요 저는 낙관적락인데도 해당 설정을 해서 해결된 이유가 있을까요? @Service @RequiredArgsConstructor public class OrderService { @Transactional public Order orderWithOptimisticLock(Long memberId, LocalDateTime now) { Cart cart = cartRepository.findByMember(memberId); List<CartItem> cartItems = cart.getCartItems(); cartItems.stream() .map(CartItem::getMenu) .forEach(menu -> { decreaseStockWithOptimisticLock(menu.getId(), 1); increaseMenuOrderCountWithOptimisticLock(menu.getId(), 1); }); Money money = calculator.calculateMenus(cart.getMember(), cart.convertToMenus()); Order order = Order.createOrder(cart, money, now); return orderRepository.save(order); } public void decreaseStockWithOptimisticLock(Long menuId, int quantity) { Menu menu = menuRepository.findByIdForOptimisticLock(menuId); menu.decrease(quantity); } public void increaseMenuOrderCountWithOptimisticLock(Long menuId, int quantity) { Menu menu = menuRepository.findByIdForOptimisticLock(menuId); menu.increaseOrderCount(quantity); } } ``` @Component @RequiredArgsConstructor public class OptimisticLockStockFacade { private final OrderService orderService; public Order order(Long memberId, LocalDateTime localDateTime) throws InterruptedException { while (true) { try { return orderService.orderWithOptimisticLock(memberId, localDateTime); } catch (Exception e) { Thread.sleep(50); } } } } ``` public interface JpaMenuRepository extends JpaRepository<Menu, Long> { @NotNull @Lock(LockModeType.OPTIMISTIC) @Query("select m from Menu m where m.id = :id") Optional<Menu> findByIdForOptimisticLock(@NotNull @Param("id") Long id); }
이 챕터에서 시작할때 network/user.go에서 갑자기 코드가 바꼈는데 이 부분은 임의로 작성하신건가요? &types.GetUserResponse{}, &types.CreateUserResponse{}, 나머지 두개 타입 update, delete. 작성하셨다면 types에 user.go에 작성하셨다는건데 일부러 뛰어 넘으신건지 궁금합니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
제가 컴퓨터를 포맷할 일이 생겨서 포맷 후 진도를 이어서 따라 가려고 github에 올려둔 파일을 다운 받아서 이어서 하고 있었습니다. 그러다가 aws에 비밀번호를 바꾸고 두 번째 커밋을 할 때 막혔는데요.. 다시 git 등록하는 강의도 듣고 이것저것 해보았지만 push할 때 막혀서 그냥 github에 새로운 library2-app 레포지터리를 만들고 처음 저장한 것처럼 저장했습니다. 일단 이렇게 해결하긴 했는데 위에 상황처럼 만약 github에서 파일을 다시 받고 이어서 커밋 하려면 어떻게 해야 하나요?? 그리고 방법들을 찾다가 pull이라는 명령어도 찾았었는데 pull 명령어를 입력할 때 origin과 master는 무엇을 의미하나요? origin은 library-app을 입력했었고 master는 제 github 닉네임인지 이게 맞는 건지도 알고 싶습니다!!
이번엔 제가 스스로 해보고 싶었는데 안되서 질문드립니다 죄송합니다 ㅜㅜ redis 서버를 추가하는 도중에 이런창이떠서 이렇게 추가를 했더니....redis 서버가 추가가안되서 다시 요청하려고했더니 Only one open service quota increase request is allowed per quota 라고 뜨네요 ㅜㅜ 혹시 redis 서버를 추가할 수 있는 방법이 있을까요?
안녕하세요. 백그라운드를 먼저 소개해드리자면, 강사님께서 설명해주셨듯 http -> https로 리다이렉션을 시킬 때, 301 status code를 내뱉도록 만들었습니다. 테스트하다가 알게 됐는데, GET 메서드의 경우에는 잘 리다이렉션되지만, POST PUT 메서드의 경우 GET 메서드로 바뀐채 리다이렉션되더라고요. rfc 문서에서는 아래와 같이 설명하고 있습니다. | Note: For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request. If this behavior is undesired, the 308 (Permanent Redirect) status code can be used instead. 이에 따라 http -> https로 리다이렉션을 시킬 때 POST 나 PUT 인 경우 308 status code를 주려고 했으나, aws 공식문서에는 이를 지원하고 있지 않더라고요. 참고 : https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#redirect-actions 보안 그룹에서 http에 대한 요청 자체를 막는것도 하나의 방법이 될거 같긴한데, 강사님께서는 어떻게 해결하실지 궁금해서 질문 남겨봅니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 1. 스프링 데이터 JPA 가 지원하는 save를 호출하면 flush()가 나가는건가요 아니면 save를 하고 bulkAgePlus()를 호출하면서 bulkAgePlus() 에 있는 JQPL이 실행되서 flush() 가 나가는건가요 ? bulkAgePlus()를 실행하면 JPQL 실행이되고, JPQL 이 실행이 되면 flush() 가 호출이 되는데 이때 SQL쿼리문이 DB에 전송이대서 DB에는 업데이트가 되어있지만 영속성 컨텍스트는 업데이트가 안되기 때문에 clear()를 해주는게 맞는건가요 ?
안녕하세요 dev push 후 master 에 merge 중 에러가 나서 질문 드립니다! 섹션 4. Github Actions 를 이용한 배포자동화 main branch 보호해주기 강좌를 보고 있는데요 client_loop: send disconnect: Broken pipe 해당 에러가 나고 있지만 domain 으로 접속해보니깐 수정한 텍스트 적용이 잘되더라구요 검색해보니 https://may0301.tistory.com/10 소켓이 닫혀서 nano ~/.ssh/config 파일에 text editor에 Host * ServerAliveInterval 120 TCPKeepAlive no 를 입력 해줘야한다고하는데 혹시 해당 에러가 나는 원인을 알수 있을까요? 위에 검색한대로 소켓이 닫혀서 그럴까요?
현재 강사님의 강의를 듣고 크롤러와 ETL 배치 파이프라인을 ECS로 배포해서 사용해보려고 합니다 한가지 궁금한 점이 있어 문의드립니다 해당 크롤러와 배치 잡은 모두 api가 아닌 스크립트로 이루어져 있습니다. 이 경우, 클러스터 내 서비스는 생성할 필요 없이, 태스크로만 필요할 때마다 생성하면 되나요? 아님 서비스도 사용하면 좋을까요?