마이크로서비스 애플리케이션의 확장성을 위해서 각 애플리케이션에 랜덤포트를 부여. 그러면 api gateway에서는 어떤 마이크로서비스가 어떤 포트번호를 사용하는지 모르기 때문에 eureka를 활용해서 service discovery로 각 마이크로서비스의 위치를 파악. api gateway에서는 각 마이크로서비스의 이름을 'lb://' 처럼 접근해서 로드 밸런싱 적용. 이 때 spring cloud gateway가 netflix의 zuul(요청 전달), ribbon(로드 밸런싱)의 기능을 둘 다 수행할 수 있는 프로젝트기 때문에 가능. 처음 공부하는 분야라 조금씩 헷갈리네요 ㅎㅎㅎ 위처럼 이해한 내용이 맞을까요?
안녕하세요. 김영한 선생님의 로드맵대로 현재 HTTP 부분을 수강중인 수강생입니다. 한가지 궁금한 점이 있어서 질문을 남기게 되었습니다. /resources/static/img는 웹사이트에서 메인 이미지 등 고정되는 정적 이미지를 저장하는 곳으로 사용하고 있습니다. 그래서 /resources/static/images 이런식으로 웹사이트 내에서 업로드 되는 이미지를 저장시키면 서버를 다시 키거나, 해당 폴더를 리프레쉬해야 이미지를 불러올 수 있는 것을 확인하였습니다. 웹사이트에서 등록되는 수많은 동적 이미지들은 어디에 두는게 맞는건가요??? 답변부탁드립니다. 감사합니다.
새해 복 많이 받으세요 . 파워쿼리와 관련된 질문이 아니어서 문의드리기가 좀 그렇지만… 일단 올려보겠습니다 . ( 적합치 않으면 문의글은 삭제하겠습니다 ) 스마트스토어에서 판매하는 상품들의 사용후기를 - 엑셀로 모으고 , 이를 근거로 상품별 / 월별로 구매자들이 준 평점과 사용후기 내용을 분석해보려고 합니다 . * 일단 사용후기들은 아래와 같은 테이블 형태로 수집할 수 있는 상태입니다 . 아래 테이블의 값들은 함수 / 파워쿼리 /VBA 등은 적용되지 않은 raw data 입니다 . ( 숨긴 부분은 상품명입니다 ) * 이 테이블 기반으로 피벗테이블을 만들어서 상품별 - 월별 사용후기 평점의 평균을 구해보려고 , 평점 필드의 표시형식을 ' 평균 ' 으로 설정하여 했더니… " 텍스트 데이터 형식을 지원하는 계산이 아니기 때문에 평균이 있는 이 필드를 요약할 수 없습니다 ." 라는 메시지가 떴습니다 . ( 이 메시지는 ' 합계 ' 를 선택했을 때도 마찬가지로 나타났습니다 ) 그래서 raw data 테이블의 평점 column 을 ' 숫자 ' 형식으로 나타나도록 변경 후 , 다시 피벗테이블을 만들어봤지만 같은 메시지가 뜨고 있습니다 . * 그래서 또 다시 피벗테이블을 만들 때 ' 데이터 모델 ' 에 체크한 후 --> 측정값을 아래와 같이 만들어보고자 했습니다만… 역시 에러메시지가 나타났습니다 . 아무래도 raw data 테이블의 평점 column 의 데이터 형식에 문제가 있는 것 같습니다만 , 구글링을 아무리 해봐도 문제 해결의 실마리를 잡지 못해 문의를 드리게 됩니다 . 강사님께서 단번에 답을 주실 수 있는 문제이길 바라며 , 다시 한 번 도움을 요청드립니다 .
자바 문법 관련 질문입니다. 1. 서버 클래스에는 inner Class로 스레드를 상속한 ServerReceiver 클래스가 만들어 집니다. 이 클래스를 ServerReceiver thread = new ServerReceiver(socket);을 하고 thread.start(); 해서 실행시킵니다. 채팅 클래스에서는 inner Class에 static이 붙습니다. 이 차이가 무엇인지? 2. 채팅클래스 관련. 주고 받고 하는 두 개의 스레드를 start()(==run()) 메서드를 실행시킬 때 Thread sender = new Thread(new ClientSender(socket,name)); Thread receiver = new Thread(new ClientReceiver(socket)); sender.start(); receiver.start(); 이전에 서버 클래스 에서는 ServerReceiver thread = new ServerReceiver(socket); 이런식으로 호출을 해서 사용했습니다. Thread를 상속했기에 Thread로 받을 수 있다는 점은 이해했으나 ClientSender sender=new ClientSender(socket,name); ClientSender receiver =new ClientSender(socket); 이렇게 해도 되는 부분이 아닌지? 궁금합니다~ 3. 클라이언트에서는 메인 클래스에서 실행되는 반면에 서버 클래스는 메인에서 자기 자신의 클래스를 호출 하여 메서드를 실행시킵니다. public static void main(String[] args) { new Project06F_MultiChatServer().start(); } 이 start()메서드 안에서 이전에 질문했었던 (static이 붙지 않은)Inner class를 호출합니다. 이 부분도 메인 메서드에서 굳이 자기 자신을 new로 호출해서 메서드를 실행시키는 이유 가 궁금합니다. 4. 그리고 Project06F_MultiChatServer 변수 = new Project06F_MultiChatServer(); 변수.start(); 이렇게 하지 않아도 되는 이유도 궁금합니다. 사실 1번과 2번 질문이 이어지는 질문인거 같기는 하지만 일단 모르는 부분이기에 질문드립니다.
1. 현재 domian을 구입하지 않으면 route 에서 연결된 프론트 or 백엔드 도메인은 못들어가나요? 탄력적 IP를 하고 IP 바뀌어서 front ,back -> 도메인이 아닌 바뀐 ip로 변경 git push git pull sudo npx pm2 reload all 똑같이 다시 시작 했는데 .next 오류인거 같은데 회원가입 및 로그인 버튼을 눌렀을 때 아무것도 실행이 되지 않습니다. 탄련적 IP 하기 전에는 회원가입이랑 로그인까지 됐는데 갑자기 왜 안되는걸까요? 현재 프론트에서 새로고침을 누르면 서버사이드렌더링이 실행되고 있습니다. 하지만 프론트에서 저 오류로 인해서 원활하게 진행되지 않고 있습니다.
내용중 패키지를 만들고 없애고 해봐도 에러가 계속 납니다. 계속 에러가 나오는데 이유를 모르겠습니다 ㅠ 2022-02-08 10:59:00.744 ERROR 77312 --- [nio-8080-exec-2] o.h.hql.internal.ast.ErrorTracker : Unable to locate appropriate constructor on class [jpabook.jpashop.repository.order.dto.OrderSimpleQueryDto]. Expected arguments are: long, java.lang.String, java.time.LocalDateTime, jpabook.jpashop.domain.OrderStatus, jpabook.jpashop.domain.Address [cause=org.hibernate.PropertyNotFoundException: no appropriate constructor in class: jpabook.jpashop.repository.order.dto.OrderSimpleQueryDto] 2022-02-08 10:59:00.746 ERROR 77312 --- [nio-8080-exec-2] o.h.hql.internal.ast.ErrorTracker : Unable to locate appropriate constructor on class [jpabook.jpashop.repository.order.dto.OrderSimpleQueryDto]. Expected arguments are: long, java.lang.String, java.time.LocalDateTime, jpabook.jpashop.domain.OrderStatus, jpabook.jpashop.domain.Address [cause=org.hibernate.PropertyNotFoundException: no appropriate constructor in class: jpabook.jpashop.repository.order.dto.OrderSimpleQueryDto] org.hibernate.hql.internal.ast.DetailedSemanticException: Unable to locate appropriate constructor on class [jpabook.jpashop.repository.order.dto.OrderSimpleQueryDto]. Expected arguments are: long, java.lang.String, java.time.LocalDateTime, jpabook.jpashop.domain.OrderStatus, jpabook.jpashop.domain.Address at org.hibernate.hql.internal.ast.tree.ConstructorNode.resolveConstructor(ConstructorNode.java:182) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.hql.internal.ast.tree.ConstructorNode.prepare(ConstructorNode.java:144) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.hql.internal.ast.HqlSqlWalker.processConstructor(HqlSqlWalker.java:1258) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:2390) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:2256) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1518) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:597) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:325) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:273) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:276) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:192) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:162) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:604) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:716) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:816) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:113) ~[hibernate-core-5.4.25.Final.jar:5.4.25.Final] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:362) ~[spring-orm-5.3.2.jar:5.3.2] at com.sun.proxy.$Proxy104.createQuery(Unknown Source) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:311) ~[spring-orm-5.3.2.jar:5.3.2] at com.sun.proxy.$Proxy104.createQuery(Unknown Source) ~[na:na] at jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryRepository.findOrderDtos(OrderSimpleQueryRepository.java:16) ~[classes/:na] at jpabook.jpashop.repository.order.simplequery.OrderSimpleQueryRepository$$FastClassBySpringCGLIB$$1df97ea7.invoke(<generated>) ~[classes/:na] 소스 트리, 내용 첨부하겠습니다 ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 이렇게 작성해도 테스트 정상적으로 실행되는데 어떤 이유가 있어서 BeforeEach에서 매번 new로 객체를 만들어주신건지 궁금합니다!
하나의 앱에 필요한 프론트 엔드 백엔드 db에 대하여 가상머신의 경우 하나의 가상 머신 내부에 프론트엔드와 백엔드 db 까지 운영을 했었는데 도커의 경우는 하나의 앱에 사용되더라도 프론트와 백, db를 세 개의 컨테이너로 분리하는데 하나의 컨테이너에 프론트와백,db를 운영하면 안되는 것인가요? 컨테이너를 만드는 최소 기준이 궁금합니다
강의 중 두 테이블을 join하여 평균 salary를 구하는 문제 중 select avg(sal) from emp a1, dep a2 where a1.deptno = a2.deptno and a2.loc = 'DALLAS'; 이 문제에서 왜 avg(a1.sal)이 아닌 avg(sal)이 사용하는지, 앞의 방식도 가능한지 궁금합니다.