안녕하세요 그랩님! <span> 태그와 관련해서 질문이 있습니다. 강의에서 제품명과 가격 코드를 입력할 때 <span>태그로 코드를 작성한 뒤, 줄바꿈이 되지 않는 부분은 부모 콘텐츠에 flex를 활용해서 줄바꿈을 해주셨는데요. 혹시 해당 부분에 <p>태그나 <div>태그를 사용해서 부모 콘텐츠에 flex코드를 입력하지 않고 줄바꿈이 되게 하지 않고, <span>태그를 활용해야 하는 특별한 이유가 있나요?? 해당 예시에서는 <p>태그나 <div>태그로 코드를 작성해도 크게 다른 바 없이 구현이 되어서 혹시 코드가 복잡해 질 때? span태그를 사용해야만 하는 특별한 이유가 있는 것인지.. 궁금합니다!
안녕하세요. 항상 좋은 강의 감사합니다. JPA에 대한 기본 개념을 잡을 수 있어서 너무 재밌게 듣고 있습니다!! 한가지 문의드릴 게 있어서 글 남기게 되었습니다. 프록시 객체를 EntityManager가 관리하지 않은 상태에서 getUsername()할 때 발생하는 오류 메시지 중 세션이란 단어가 나와서요. 웹 환경에서 말하는 HttpSession객체와는 다른 의미일 것 같은데, 여기서 말하는 Session에 의미는 무엇인지 알 수 있을까요?? 감사합니다.
안녕하세요, 즐겁고 유익하게 강의 잘듣고있습니다. 이번 실습의 예제코드에서 'contacts' 와 'this.contacts'에 오류가 발생됩니다. 이런 오류는 어떻게 해결하나요? return new Promise (( resolve ) => { setTimeout (() => resolve ( contacts ), 2000 ); }); 'Contact[]' 형식의 인수는 'Contact | PromiseLike<Contact>' 형식의 매개 변수에 할당될 수 없습니다. 'then' 속성이 'Contact[]' 형식에 없지만 'PromiseLike<Contact>' 형식에서 필수입니다. fetchData (): void { fetchContacts (). then (( response ) => { this . contacts = response ; }); } //Type 'Contact' is missing the following properties from type 'Contact[]': length, pop, push, concat, and 16 more
안녕하세요. 제로초님의 수업을 듣고 sns 프로젝트를 하고 있습니다. 그런데 프로필 이미지 변경에 문제가 있어 질문하고 싶습니다! 여기서 프로필 이미지를 클릭하면 onClickImageUpload가 실행하게 하고 이미지를 클릭한다음 확인 버튼을 누르면 onChangeImage가 실행되게 했는데 콘솔에 계속 undefined가 뜨면서 사진을 못 찾습니다... 이 코드에서 어디가 잘못되었고 어떻게 고쳐야 프로필 이미지를 바꿀 수 있는지 여쭙고 싶습니다...
위의 코드에서 .innerWrap에서 z-index를 써준 이유가있을까요? z-index를 지우고 테스트해봐도 뭐가 바뀐것인지 잘 모르겠습니다 ㅠ 또 만약 반응형으로 짜고싶을경우 .imageWrap에서 width값을 모바일, 테블릿, pc등등에 따라서 값을 다르게 줘야하는건가용? 선생님이라면 어떤식으로 적용하실건지 선생님 생각이 궁금합니다!
안녕하세요 선생님! 강의가 너무 재밌어서 못참고 또 다른 질문을 하게 되었습니다..! 매 질문마다 좋은 답변주셔서 정말 감사합니다!! kafka 와 kafka connect 를 사용할 때에 대해 서 질문이 있습니다. kafka producer consumer 를 사용했을 때는 Producer 를 통해 데이터를 보내게 되면 그 데이터가 Topic 에 저장되고 Consumer의 리스너에 의해 구독 해둔 Topic의 데이터가 변경되면 변경된 데이터를 Json으로 받아서 역직렬화 후 직접 DB에 데이터를 변경해 주는걸로 이해했습니다. kafka connect 는 source connect, sink connect 설정정보를 rest api(post)를 통해 설정하고 Source connect 를 통해 데이터를 보내면 그 데이터가 Topic 에 저장되고 구독해둔 Topic에 데이터가 변경되면 Sink connect 를 통해서 Sink connect 설정에서 연결해둔 DB에 자동으로 insert ,update등이 되는걸로 이해했습니다. 여기서 궁금한 부분은 선생님 께서 order-service 의 인스턴스를 2개 생성하면 계속 주문을 했을 경우 인스턴스 마다 DB 가 달라서 주문 정보가 인스턴스 1, 2 에 따른 DB에 나눠서 저장된다고 하셨습니다. DB에 데이터가 나눠서 저장되기 때문에 Kafka connect 를 사용해 단일 데이터베이스를 사용 해야한다고 이해했습니다. 밑 설정으로 인해 새로운 인스턴스마다 새로운 h2 DB가 자동 생성됐는데 url: jdbc:h2:mem:testdb 선생님께서 나중에 하신것 처럼 order-service application.yml 의 datasource.url 을 하나의 DB 주소 지정하면 url: jdbc:mariadb://localhost:3306/mydb 인스턴스가 2개여도 주문이 인스턴스들에 잘 나뉘어서 처리되고 모든 주문이 같은 DB에 저장이 되었습니다. 그러면 kafka connect 를 사용하는 이유는 마이크로서비스들에서 사용되는 DB가 다양할 경우에 kafka connect 를 통해서 하나 의 DB나 다양한 종류의 데이터 저장소로 데이터를 쉽게 자동으로 보내기 위함인 건가요?? DB를 한개만 사용한다면 kafka connect 를 사용하지 않고 kafka만 사용해도 되는건가요?? 정확히 어떨 때 어떤걸 사용해야하는지 궁금합니다!! 추가적으로 이거는 다른 질문이지만 feign client 는 rest api 를 통한 동기 통신이고 kafka 는 구독방식을 통한 비동기 통신으로 이해하고 있습니다. feign client 와 kafka 둘중에 어떨 때 어떤 방식을 사용하는지 잘 와닿지가 않아서 저는 보통 마이크로서비스들 끼리의 통신은 feign client으로 처리하고 주문하면 재고가 빠져야하는 데이터 동기화 처리같은건 kafka 로 한다고 이해하고 있습니다. 혹시 모든 처리를 feign client 나 kafka 둘중 하나만 사용하는 방법도 존재하는건가요?? 또한 제가 잘 이해하고 있는지 궁금합니다..! 긴 질문 봐주셔서 감사합니다ㅜㅠ 혹시 제가 이해한게 틀린부분이 있으면 알려주시면 감사하겠습니다!!
현재 똑같이 코드르 친 상태에서 sever.js를 구동시키면 화면에 Cannopt Get / 이라고 화면에 뜹니다. vs에선 에러가 존재 하지 않습니다. 근데 localhost:8080/products 로 접속하면 정상적으로 "업로드 된 상품들입니다" 라고 잘 뜹니다. Cammot Get의 의미가 무엇인지 알려주시면 감사하겠습니다.
Member 엔티티에서 @GeneratedValue defalut 값으로 사용하고 있었는데 회원 등록을 할려고 하니깐 이런식으로 뜨면서 db에 저장이 안됩니다. 그래서 IDENTITY로 바꾸고 하니깐 db에 잘들어 가는데 강의에서는 IDENTITY를 안붙이고도 db에 잘들어 갔던 것 같은데.. 원인을 알고싶습니다 ㅠㅠ
질문이 있는데요. 클라 - 서버 - 데이터베이스 구조에서 클라가 서버에게 데이터 요청을 하면 서버가 다시 데이터베이스에 데이터를 요청한 다음 데이터를 받아 클라한테 전달하잖아요? 그런데 경우에 따라 클라가 요청한 정보를 서버가 갖고있는 경우 데이터베이스를 거치지 않고 서버가 바로 데이터를 클라에게 전달하는 경우도 있다고 했는데요. 그렇다면 모든 정보를 서버에 그냥 저장해두면 데이터베이스를 따로 두지않아도 되서 더 효율적으로 관리가 가능하지않나 생각되는데… 데이터베이스를 따로 두고 데이터를 보관하는 이유가 따로있나봐요??
아래와 같은 경고가 나타나서 질문드립니다. 선생님의 수업을 그대로 따라가고, 코드에도 오타가 없어 보이는데, React Hook를 활용하게 되면서 anonymous function을 쓰지 못해서, return또한 불가능해지고, 이것이 Auth & user_reducer.js에서 모두 나타나는 거 같은데, 무엇이 문제인지 도통모르겠습니다. 대부분의 것을 본인이 찾아서 해결해야하는 것이 개발자 강호의 도리인줄 알지만, 찾아도 답이 나오지 않아 질문 드립니다. 항상 감사드립니다. Compiled with warnings. [1] [1] src/_reducers/user_reducer.js [1] Line 7:1: Unexpected default export of anonymous function import/no-anonymous-default-export [1] Line 12:13: Unreachable code no-unreachable [1] Line 15:13: Unreachable code no-unreachable [1] Line 18:13: Unreachable code no-unreachable [1] [1] src/hoc/auth.js [1] Line 6:1: Unexpected default export of anonymous function import/no-anonymous-default-export [1] Line 33:12: React Hook useEffect has missing dependencies: 'dispatch' and 'props.history'. Either include them or remove the dependency array react-hooks/exhaustive-deps 혹시 몰라 깃허브 링크도 첨부드립니다. (https://github.com/jihyeonmun/Nodejs/tree/master/BoilerPlate/Code) P.s. 이 질문을 보시는 학생분들에게, 혹시나 도움이 되실까 싶어 마크다운 필기본도 공유드립니다. 설정 및 설치(https://github.com/jihyeonmun/Nodejs/tree/master/BoilerPlate/DownloadSetting) 세부 기능(https://github.com/jihyeonmun/Nodejs/tree/master/BoilerPlate/Functions) 리액트 부분(https://github.com/jihyeonmun/Nodejs/tree/master/BoilerPlate/React)
안녕하세요 11:25 부근, 차량 보유 유무 문제 손실함수를 계산하는 부분에서 내적하는 y의 값 중 첫 번째에는 (1-0), 나머지는 1이라고만 되어 있는데, (1-0)은 y예측값-y실제값 인건가요? 나머지 내적되는 1은 차이값을 활용하지 않은 것 같아 질문드립니다 :)
안녕하세요 영한님!! 오늘 공부를 하다 느낀점인데 엔티티에 @Getter 롬복을 실무에서도 사용하는지 궁금합니다. 왜냐하면, Order와 OrderItem의 관계에서 Order가 List<OrderItem> items를 OneToMany로 가지고 있는데 Order order = orderRepository .findById( 1L ).get() ; List<OrderItem> items = order.getItems() ; OrderItem orderItem = new OrderItem( "test" , 1 , 1 ) ; items.add(orderItem) ; 위와 같은 코드에서 jpa의 변경감지와 Cascade 옵션으로 인해서 OrderItem Insert쿼리가 나가는걸 이해했고 테스트코드를 통해 확인했습니다. 이렇게 되면 의도한바(order.addOrderItem()) 등의 메소드를 사용하지 않고도 추가되는 문제점이 발생할 것 같은데, @Getter를 지양해야 할까요? 그러기엔 @Getter의 편의성이 너무 좋은 것 같아 실무에서는 어떻게 사용되는지 궁금합니다. 추가적으로, getter가 없으면 lazy loading이 불가능하다고 생각해서 대안으로 OrderEntity에 getter를 재정의 해주었습니다. public List<OrderItem> getItems () { return new ArrayList<>( this . items ) ; } 이렇게 되면 getItems를 통해 가져온 뒤 add를 통해서는 insert쿼리가 나가지 않게는 되었습니다. 그런데 만약 이 상황에서 OrderItem을 접근해서 변경하게 되면 OrderItem은 영속되어 있기 때문에 변경이 됩니다. 이렇게 해도 괜찮은걸까요??! 항상 질좋은 강의 감사합니다!!
안녕하세요 선생님, 채점하면 런타임 에러 나오는데.. 코드 한 번 봐주실 수 있을까요? import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner in=new Scanner(System.in); int n = in.nextInt(); String str = in.nextLine(); in.close(); String result = password(str,n); System.out.println(result); } public static String password(String s, int n){ String result = ""; for(int i=0;i<n;i++){ String sub = s.substring(0,7).replace('#','1').replace('*','0'); int num = Integer.parseInt(sub,2); result += (char)num; s = s.substring(7); } return result; } }