DELETE /workspaces/:workspace/members/:id :workspace에서 :id 멤버 제거(또는 탈퇴) return 'ok' 위 API를 사용하여 워크스페이스 멤버를 삭제하는 것을 구현 중에 막혀서 2가지 정도 질문드립니다. 1. 아래와 같이 workspace에 있는 멤버를 select로 선택하여 value 값을 불러와서 워크스페이스에 있는 유저를 제거하고 싶은데 option의 value 값을 불러오는 방법이 있을까요? <Modal show = {show} onCloseModal = {onCloseModal} > <form onSubmit = {onKickMember} > <Label id ="member-label" > <span> 사용자 이름 </span> { /*<Input id="member" type="text" value={kickMember} onChange={onChangeKickMember} />*/ } <Select id ="memberId" onChange = {onChangeKickMember} > {memberData?. map ((member) => { if (userData?. id !== member. id ) { return <option value = {member. id } > {member. nickname } </option> ; } })} </Select> </Label> <Button type ="submit" > 사용자 삭제 </Button> </form> </Modal> 2. 아래와 같이 delete를 테스트로 호출해보았습니다. 프록시를 사용하여 백엔드 서버에는 3095포트로 전송됩니다. axios . delete ( `/api/workspaces/ ${workspace} /members/2` ) 위에 사진과 같이 오류가 발생했는데, delete는 백엔드 서버에 구현되지 않은걸까요?
@Autowired public DiscountService(Map<String, DiscountPolicy> policyMap, List<DiscountPolicy> policies) { this.policyMap = policyMap; this.policies = policies; System.out.println("policyMap = "+policyMap); System.out.println("policies = "+policies); } 이 부분에서 나중에 policies를 discount()에서 사용하지 않는데 Map과 List를 다 생성자 파라미터로 써주신거는 Map이나 List 둘 중 하나를 사용해도 된다는 것을 보여주시려는 건가요? 만약에 List를 쓴다면 다음과 같이 discount를 바꿔줘야 하는게 맞나요? public int discount (Member member , int price , int discountnum) { DiscountPolicy discountPolicy= policies .get(discountnum) ; return discountPolicy.discount(member , price) ; } 테스트는 맞게 나오는데 그럼 policies에 fix, rate가 들어갈때 순서는 어떻게 정해지나요?
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: jpabook.jpashop.domain.item.Item.categories[jpabook.jpashop.domain.Category] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1788) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:609) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1159) ~[spring-context-5.3.2.jar:5.3.2] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) ~[spring-context-5.3.2.jar:5.3.2] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588) ~[spring-context-5.3.2.jar:5.3.2] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.1.jar:2.4.1] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) ~[spring-boot-2.4.1.jar:2.4.1] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) ~[spring-boot-2.4.1.jar:2.4.1] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) ~[spring-boot-2.4.1.jar:2.4.1] at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) ~[spring-boot-2.4.1.jar:2.4.1] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1309) ~[spring-boot-2.4.1.jar:2.4.1] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1298) ~[spring-boot-2.4.1.jar:2.4.1] at jpabook.jpashop.JpashopApplication.main(JpashopApplication.java:10) ~[classes/:na] Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: jpabook.jpashop.domain.item.Item.categories[jpabook.jpashop.domain.Category] at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1332) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:870) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:795) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:53) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1693) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1661) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:295) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.3.2.jar:5.3.2] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.3.2.jar:5.3.2] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-5.3.2.jar:5.3.2] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-5.3.2.jar:5.3.2] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1847) ~[spring-beans-5.3.2.jar:5.3.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784) ~[spring-beans-5.3.2.jar:5.3.2] ... 17 common frames omitted 카테고리쪽에서 문제가 있는 거같은데 어떤문제일까요?
.format() 함수의 경우 {} 안에 있는 자료형 타입으로 ()안에 있는 값이 출력된다고 이해를 했습니다. 예를 들어, print('{:4d}' .format(42)) 의 경우 42가 int형이고 {} 안에서도 d(정수형)을 받는다고 생각을 했는데 print(type('{:4d}' .format(42))) 라고 입력을 해보니 class 'str'이라고 출력이 됐습니다 float 형의 경우도 똑같이 출력이 돼서 format으로 받는 값은 무조건 str로만 type이 지정되는지 궁금합니다.
선생님 안녕하세요 영상 잘 보고 있습니다. const currentIndex = Images . indexOf (image) let newImages = [ ... Images] newImages . splice (currentIndex , 1 ) setImages (newImages) props . refreshFunction (newImages) 여기서 newImages말고 그냥 Images를 사용하면 const currentIndex = Images . indexOf (image) /* let newImages = [...images] */ Images . splice (currentIndex , 1 ) setImages (Images) props . refreshFunction (Images) 이미지 클릭해서 지울 때 첫번째만 지워지고 두 번째 부터 안 지워지는걸 알았습니다. Images도 이미지 올려서 저장된 이미지들 배열로 알고있는데 Images와 newImages 차이를 잘 모르겠습니다..
안녕하세요 강의 잘 수강하고 있습니다. 다름이아니라 제 테스트에서 java.lang.AssertionError: Model attribute 'singUpForm' does not exist 에러가 나오며 테스트 통과가 안되어 이상해서 문의드립니다. AccountController에서 model.addAttribute( "signUpForm" , new SignUpForm() ) ; attribute추가도 잘 했는데 .andExpect( model ().attributeExists( "singUpForm" )) ; 테스트에서 이부분만 통과를 못합니다.. 화면에서는 잘 동작해서 테스트코드는 작성 안하고있다가 추가해봤더니 오류가나서.. 혹시 특별한 이유가 있을까요? ㅜㅜ
markdown을 사용해서 이미지를 추가(빨간색 괄호로 친 부분)하거나 ##를 사용하여 폰트 크기를 바꿀때 blog 홈에서 포스트를 미리보기 할때는 저렇게 나오는 데 저 부분(이미지에 빨간색 괄호부분)을 안보이게 하거나 다르게 처리할 수 있는 방법(예를 들어 이미지를 여러개 올리는 경우)이 있을까요? p.s : 혹시 서버 호스팅을 github 무료 호스팅을 사용해도 무방한가요?
중복순열 구하기 문제에서 1) res[0]=1 DFS(1) -> res[1]=1 DFS(2) -> print res[0],res[1] 2) res[0]=2 DFS(1) -> res[1]=1 DFS(2) -> print res[0],res[1] .... res[0] 과 res[1]이 계속 overwirte되서 (예전 값은 없어지고 새로운 값으로 덮어 씌여지는게 아니라, res라는 크기 2의 배열을 (2 x 2 x 2) 8개 만드는건가요? res배열을 새로 만드는게 아닌데 어떻게 8개의 서로 다른 배열 res를 갖고 있을 수 있는건지 궁금합니다. res 가 [1,1] , [1,2] , [1,3] , [2,1] ... 이렇게 8개 값을 stack 1줄 당 가지고 있다가 return하는 건가요?0? 분명 res는 전역변수라서 1개만 있는 것 같은데요.;; (헤갈립니다..;; ㅠㅜ)
[기초-응용] 다양한 환경을 앤서블(Ansible)로 관리하기 with 베이그런트(Vagrant)
안녕하세요, 최근에 강의를 다시 복습하고 있습니다. 윈도우 관리하기 부분에서 강의처럼 vagrant cloud에 있는 opentable/win-2012r2-standard-amd64-nocm 를 사용하면 "The requested URL returned error: 403 Forbidden"에러가 나오면서 노드 생성에 실패합니다. 처음 강의를 들었을때는 정상적으로 되던 부분이라 의아했었는데, vagrant cloud에서 직접 다운로드 를 받으려고 해도 AccessDenied error창이 뜨더군요... 실습용으로 다른 윈도우 이미지를 사용하려고 하는데 어떤 이미지를 사용하는게 좋을까요?
안녕하세요. 라이프사이클에 대한 내용인데요. 책을 보고 이해가 잘 안가서 중급강좌에 질문남깁니다. 각 라이프사이클에 대한 옵션마다 뷰 인스턴스가 생성되고, 사라지는것까지의 과정중 만일 생성과정중일때 함수객체를 사용하겠다 하면 그 옵션을 써서 안에다 삽입하면 되는 건가요? 아직 개념을 잘 못잡겠어요.. 그리고 updated랑 watch의 차이점은 무엇일까요? updated는 값이 변했을때 실행되는걸로 알고 있고, watch역시 지정된 값이 변했을때 실행되는 걸로 알고 있습니다.
안녕하세요 영한님 항상잘듣고있습니다.! 공통처리가 어려운이유중 "아무데나 다 호출이되기때문에"라고 말씀하시는 (2:11) 부분이 클라이언트의 요청을 new-form컨트롤러, save 컨트롤러, list컨트롤러세개중 아무데서나 받을수 있기 떄문에라고 이해했는데 맞을까요?!
안녕하세요, 영한님. 오랜만에 질문 남깁니다. 항상 좋은 강의 너무 감사드립니다. ============================== 질문은, 등록된 회원들의 목록을 조회하는 요청 시 FrontController에서 Model 객체를 궂이 만들 필요가 없을 거 같은데, 현재 코드는 모든 요청에서 getParameter를 하는 거 같습니다. 이런 비효율은 추후에 개선이 되는지 여쭤보고자 질문 드립니다!! 물론 바로 다음 강의를 보면 되겠지만 정리하고, 복습 하는 과정에서 궁금해져서요! 만약 비효율이 맞다면 제 나름대로 먼저 개선 후 강의를 진행하고자 합니다. ============================== 감사합니다^^