묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
widget.color 가 헷갈립니다.
안녕하세요! widget.color가 동작 방식이 이해가 가질 않습니다. ㅜ stateful 클래스와 state 클래스를 바인딩 시켜주면 widget.color의 state클래스에서 widget은 stateful클래스를 참조한다고 생각하면 될까요?
-
미해결김영한의 실전 자바 - 중급 2편
런타임 의존관계
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]배치프로세서가 컴파일 시점에서는 mylist 인터페이스 의존을 하고 런타임에 생성자 주입을 한다고 하는 데 main 함수도 결국 컴파일 되는 것 아닌가요? 배치프로세서가 유연해 지는 건 이해할 수 있는 데 런타임시점에서 의존성이 주입된다는 부분이 좀 잘 이해가 안갑니다.
-
해결됨김영한의 실전 자바 - 중급 1편
문제 풀이1번 enum AythGrade 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 물어볼게 있어서 질문을 남깁니다.이넘 AuthGrade 클래스를 보면 이넘 상수 생성자에(이렇게 말해도 되나요?).ex) GUEST(1,"손님"), LOGIN(2, "로그인회원") ..... 값을 넣어서 level를 넣는것을 볼수 잇었습니다.근데 생각해 보니까이넘 상수 생성자? 를 정의할때 실수로 오타를 내서, level의 값을 잘못 넣는 경우의 수가 발생할수도 있을것 같은데..이럴 경우 어떻게 해야 오타를 안낼 까요?자바 문법상. 생성자 의 level값이 같아도 문제가 되지 않아,예방할수 있는 방법이 있을까요?그리고 '이넘 상수 생성자' 이렇게 말해도 되나요? 아니면어떻게 말해야 하나요? 이것도 대답 주시면 감사하겠습니다.답변 부탁 드립니다.
-
해결됨[UI3 업데이트] 피그마 배리어블을 활용한 디자인 시스템 구축하기
배리어블 컬러 추가한 것만 볼 수 없나요?
안녕하세요. 스타일로만 작업하다가 이번 작업부터 배리어블 활용해서 디자인시스템을 구축해보고자 합니다.다른 파일에서 배리어블 컬러가 적용된 에셋을 복사해오거나 하면그에 연결된 배리어블이 자동으로 추가되는데, 자동으로 추가되지 않고 제가 사용하고자 하는 파일에서 추가한 배리어블만 볼 수는 없나요? 그리고, 해당 파일의 배리어블 콜렉션 외의 컬러가 적용된 오브젝트를 찾는 방법이 있을까요?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
예외처리 질문
안녕하십니까, 현재 섹션3까지 수강하였는데 예외처리에 대해 궁금한 점이 생겨 질문드립니다.아직 예외상황 발생시 백엔드와 프론트엔드에서 무엇을 해야할 지 잘 모르겠는데 예외가 발생했을때 백엔드에서는 어떤 정보를 넘겨줘야하나요? 강의에서처럼 상태코드와 메시지만 넘겨주면 백엔드에서 할 일은 끝인가요?마찬가지로 프론트에서도 어떻게 대처하는지 궁금합니다.
-
미해결Arm 아키텍처: 가상화(Virtualization) [저자직강 3부-2]
EL1 IRQ??
안녕하세요! 강의 정말 잘 듣고 있습니다.궁금한 사항이 있어 문의 남깁니다. 강의 중간에 "EL1의 guest OS가 처리해야하는 irq를 Hypervisor에서 hooking을 해서 처리하게 할 수 있다" 라고 하셨는데요, EL1의 irq라는게 무슨 뜻인가요??? 제가 이해하기로는 EL1에서 코드가 수행하고 있을때 irq가 발생하는걸 뜻하느거 같습니다. 제가 이해한게 맞나요??아니면 irq마다 EL1 irq EL2 irq와 같이 처리해야하는 EL이 정해져있나요???
-
미해결백엔드 개발자 성능 개선 초석 다지기
EhCacheManagerFactoryBean
그레이들 추가후 EhCacheConfig 만들때 EhCacheManagerFactoryBean를 죽어도 못찼네요(Cannot resolve symbol 'EhCacheManagerFactoryBean')invalicache , rebuild , clean build 등등 해봤지만 소용이 없는데 혹시 다른데 더 체크해야할 부분이 있을까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
섹션1 빌드하고 실행하기
강의자료 보면서 윈도우로 cmd에서 빌드하는 법 보면서 하려고 하는데 이렇게 됩니다. 도움 부탁드립니다.그리고 강사님이 ll이라는 명령어를 쓰시는데 저는 그것도 입력하면 위랑 똑같이 나와서 그 명령어에 대해서도 설명 부탁드립니다. 윈도우는 다른 명령어를 쓰는 걸까요..? 그리고 1분 45초 부분에서 "꺼볼게요" 하고 끄시는데 끄는 방법 자세히 알려주시면 감사하겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티 필드 순서에 대해 질문드립니다.
@Entity @Table(name = "orders") @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) // @ManyToOne @JoinColumn(name = "member_id") private Member member; @JsonIgnore @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); @JsonIgnore @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) // @OneToOne @JoinColumn(name = "delivery_id") private Delivery delivery; private LocalDateTime orderDate; //주문시간 @Enumerated(EnumType.STRING) private OrderStatus status; //주문상태 [ORDER, CANCEL] 이렇게 작성하면 보면 h2에서 필드에 작성한대로 id ||member || delivery 이렇게 나와야 하는데저는 member || delivery ||id 이렇게 나 순서가 보장되지 않게 나옵니다.인터넷에 찾아보니 엔티티 필드 순서가 데이터베이스의 컬럼 순서를 결정하지 않기 때문에 schema-generation.scripts.create-target을 주어야 한다고 나와있는데 해당 강의 코드를 보아도 저런 걸 설정하지 않았는데 강의에서는 어떻게 필드가 순서가 보장이 되었나요?1번답변을 https://www.inflearn.com/questions/17359/hbm2ddl-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%83%9D%EC%84%B1%EC%8B%9C-%EC%BB%AC%EB%9F%BC-%EC%88%9C%EC%84%9C-%EC%88%98%EC%A0%95-%EB%B0%A9%EB%B2%95여기서 찾았는데요. 실무에서는 ddl을 직접입력하라는건데요. 그런데 궁금한점이 실무에서는 fechjoin이나 joincolum을 안쓰나요? ddl을 입력하는거면 joincolum(외래키)까지 같이입력하는거 아닌가요? 2. @ManyToOne 컬럼에서 조인할 때 데이터 테이블명을 기준으로 조인하고 OneToMany는 mappedBy 할 때 클래스명을 기준으로 하는것처럼 보입니다. 혹시 이유 좀 알 수 있나요? OneToMany에서 자기 자신을 바라봐서 mapped by여도 참조는 둘다 똑같이 클래스로 들어가거나 테이블명으로 들어가야 하는거 아닌가요?3.엔티티 설계시 주의점 24분에서 질문이있습니다. 아래처럼 연관관계 메소드는 중심이 되는지점에 입력하라고 하셨는데요. member 메소드에는 왜 getOrders() 에서 add()이고 orderItem은 왜 그냥 add(orderItem);만 붙나요? 저는 orders가 리스트라서 getOrders로 붙이는 줄 알았는데 orderItems도 리스트라서요. 그리고 orderItem에서 가르키는 this는 무엇인가요? 매소드 내에서 this가 없어요. this 우선순위가 메소드 내부에 this가 있을 때 this를 지칭하고 나머지는 클래스를 지칭하는건가요?// setMember 메서드는 Order 객체에 Member 객체를 연결하고, 역방향으로도 Member의 주문 목록에 이 Order를 추가합니다. public void setMember(Member member) { // 현재 Order 객체의 member 필드에 매개변수로 받은 Member 객체를 할당합니다. this.member = member; // Member 객체의 getOrders 메서드를 호출해 주문 목록을 가져온 뒤, 현재 Order 객체(this)를 그 목록에 추가합니다. // 이는 Member 객체 내부의 주문 목록에도 현재 Order 객체가 포함되도록 하는 역방향 연결을 설정합니다. member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem); orderItem.setOrder(this); }
-
해결됨파이썬 API 마스터! FastAPI
async, await 질문
안녕하세요.비동기처리 관련하여 질문드립니다.async 키워드가 비동기로 처리하기 위한 함수의 선언이고 실제 비동기 처리가 이루어져야 하는 부분은 await 키워드를 붙여주는데 여기서 await 설명해주실 때 헷갈리는 부분이 있어서요. 비동기는 코드를 순차적으로 기다리지 않고 작업이 완료되지 않아도 그 다음 코드를 실행하는 방식이고, 여기서 await 키워드는 해당 작업이 끝나는 걸 기다리게 하는 키워드로 알고 있는데 설명해 주실 때 해당 함수가 끝날 때까지 현재 함수를 일시 정지한다.고 하셨는데 여기서 해당 함수는 뭐고 현재 함수는 뭘 말하는 건가요 ? 해당 함수는 await 키워드가 붙은 작업을 의미하고 현재 함수는 이 await 작업을 포함하고 있는 함수를 의미 하나요 ? 그리고 만약 이게 맞다면 await 키워드가 붙은 작업이 실행되는 동안 그 작업이 포함된 함수가 아닌 다른 작업들은 수행이 되는 거죠 ? (쓰레드가 따로 생성되서 처리되는 걸로 아는데 이게 맞는건지 ...)자바스크립트 쪽에서 async / await 관련된 설명들을 좀 보면 await 키워드를 쓰면 비동기가 강제적으로 동기 처리가 되어 코드가 순차적으로 수행된다고 표현하는 글들이 종종 있던데 fast api 에서도 같은 개념인가요 ? 비동기 처리를 위해 작성한 코드인데 강제 동기 처리가 된다는 게 이해가 안갑니다.감사합니다.
-
해결됨개발자를 위한 쉬운 도커
멀티 스테이지 빌드 질문이있습니다!
멀티스테이지에서 java 코드 빌드하는 컨테이너, jar파일 실행하는 컨테이너를 나눈다고 말씀해주셨어요! 이 과정에서 dockerfile을 통해 build하면,각 컨테이너에 대한 이미지가 2벌 생성될것이라고 예상했는데 실행하는 부분만 이미지가 생성되는 이유를 알고싶습니다..!!
-
미해결파이썬 무료 강의 (활용편4) - 업무자동화 (RPA)
메모장 file 변수 오류
이미지 처리-대기 수강중 오류가 있어서 질문드립니다. 메모장에서 파일메뉴 이미지 찾아서 하는 건데 if에서도 while에서도 해당이미지를 찾지 못할때 발견 실패가 아닌 아래처럼 에러가 납니다. 인터넷에서 from pyscreeze import ImageNotFoundException을 추가해서 실행해보라고 해서 했는데도 실행이 안됩니다.ㅠㅠ무엇이 문제일까요..?file_menu_notepad = pyautogui.locateOnScreen("file_menu_notepad.png") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Python312\Lib\site-packages\pyautogui\__init__.py", line 174, in wrapper raise ImageNotFoundException # Raise PyAutoGUI's ImageNotFoundException. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^pyautogui.ImageNotFoundException
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티 설계시 주의점에대해서 질문있습니다.
class Order {@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)public class Member { @JsonIgnore @OneToMany(mappedBy = "member") private List<Order> orders = new ArrayList<>();엔티티 설계시 주의점 20분에서 21분사이에서 아래처럼 진행되기 때문에 cascade = CascadeType.ALL가 필요하다고 하셨는데요.persistence(orderitema)persistence(orderitemb)persistence(orderitemc)persistence(order)Member 도 @OneToMany인데 cascade를 왜 안하시나요?
-
미해결모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 2 - 랭체인(LangChain)으로 나만의 ChatGPT 만들기
selfqueryRetriever에서 contain,like 필터링 오류문제
안녕하세요 답해주셔서 감사합니다. Your goal is to structure the user's query to match the request schema provided below. << Structured Request Schema >> When responding use a markdown code snippet with a JSON object formatted in the following schema: ```json { "query": string \ text string to compare to document contents "filter": string \ logical condition statement for filtering documents } ``` The query string should contain only text that is expected to match the contents of documents. Any conditions in the filter should not be mentioned in the query as well. A logical condition statement is composed of one or more comparison and logical operation statements. A comparison statement takes the form: comp(attr, val): - comp (eq | ne | gt | gte | lt | lte | contain | like | in | nin): comparator - attr (string): name of attribute to apply the comparison to - val (string): is the comparison value A logical operation statement takes the form op(statement1, statement2, ...): - op (and | or | not): logical operator - statement1, statement2, ... (comparison statements or logical operation statements): one or more statements to apply the operation to Make sure that you only use the comparators and logical operators listed above and no others. Make sure that filters only refer to attributes that exist in the data source. Make sure that filters only use the attributed names with its function names if there are functions applied on them. Make sure that filters only use format YYYY-MM-DD when handling date data typed values. Make sure that filters take into account the descriptions of attributes and only make comparisons that are feasible given the type of data being stored. Make sure that filters are only used as needed. If there are no filters that should be applied return "NO_FILTER" for the filter value. 이런 스키마를 가지고있잖아요. 근데 contain이랑 like가 인식이 안되는 오류가 있습니다. 그래서 에러가 떠버럽니다. 그거에 대해 해결방법이 있을까요 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-54-5a63d86f57f7> in <cell line: 1>() ----> 1 results = retriever.get_relevant_documents( 2 "롤과 배그가 돌아가는 컴퓨터 견적을 추천해줘" 3 ) 4 5 for res in results: 12 frames /usr/local/lib/python3.10/dist-packages/langchain_core/structured_query.py in _validate_func(self, func) 24 if isinstance(func, Comparator) and self.allowed_comparators is not None: 25 if func not in self.allowed_comparators: ---> 26 raise ValueError( 27 f"Received disallowed comparator {func}. Allowed " 28 f"comparators are {self.allowed_comparators}" ValueError: Received disallowed comparator like. Allowed comparators are [<Comparator.EQ: 'eq'>, <Comparator.NE: 'ne'>, <Comparator.GT: 'gt'>, <Comparator.GTE: 'gte'>, <Comparator.LT: 'lt'>, <Comparator.LTE: 'lte'>]이런오류가뜹니다.
-
미해결ESXi 가상 인프라 구축과 보안 솔루션을 활용한 이상징후 탐지 모니터링
sguil 시간대 변경하는 방법이 혹시 있을까요?
오른쪽 위에 sguil 시간대는 변경이 혹시 불가능한가요? 구글링 해봐도 설정법이 안나오는 것 같아서요..
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-T 17298번-오큰수 질문
안녕하세요 큰돌 선생님. 수업을 열심히 듣고 있는 학생입니다.정답이 틀려서 질문했다기보단 강의를 보기 전에 스스로 풀었는데 저는 우선순위 큐를 사용해서 풀었습니다. 맞추고 나서 기분이 좋은 상태로 선생님 강의를 봤는데 스택으로 푸셨더라고요.이런 방법도 있구나~ 하면서 어떻게 푸셨는지 로직을 보는데 이게 왜 되는지 오랜 시간 생각을 해봐도 논리? (스택 방식으로 푸는게 왜 유효하고 문제가 없는건지)를 모르겠습니다. ㅜㅜ우선순위큐로 푸는 상황에서는 현재 가르키고 있는 인덱스의 값보다 작은 값의 모든 우선순위큐 안에 있는 인덱스들을 pop을 한다고 확신을 하겠는데 스택은 확신이 안 듭니다예를 들면 스택안에 현재 인덱스가 가르키는 값보다 작은 값의 인덱스들은 저장을 하며 pop을 하다가 더 큰 값 인덱스를 만나서 while문을 멈췄는데 그 밑에 그러니까 더 일찍 들어온 애들 중에 pop을 해야 하는 애가 있는 상황이 있을까봐 저는 스택이 아닌 우선순위 큐부터 써본 것 같습니다. 이렇게 딱 스택을 써도 문제가 없겠다. 즉 위 같은 상황이 안 생기겠다! 라는 생각이 드는 논리를 알고 싶습니다. 그리고 이렇게 논리를 생각해야하는 문제들을 어떻게 대비해야하는지 여쭤보고싶습니다. 제가 머리가 나쁜지 한 10분 생각을 해봐도 스택이 왜 문제가 없는지 아직도 깨닫지 못했습니다 ㅠㅠ이런 논리를 생각해내지 못해서 손도 못댄 문제들이 있습니다. 풀어보셨는지는 모르겠지만 프로그래머스에 요격 시스템이라는 문제는 비슷한 이유로 제대로 풀지 못해서 결국 남의 코드를 봤습니다. 밑에는 우선순위 큐로 푼 코드입니다http://boj.kr/88988bf1465247cea240603121ec5ae7
-
해결됨김영한의 실전 자바 - 중급 2편
7. 컬렉션 프레임워크 - HashSet 오타
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]7. 컬렉션 프레임워크 - HashSet 마지막 페이지의 MyHashSetV3Main 클래스에서 MySetV3<String>이 아닌 MySet<String> 인 것 같습니다. 수정 해주시면 감사하겠습니다.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
외래키 참조 관계에서 bulk_create는 어떻게 사용하나요?
from django.db import models class Post(models.Model): title = models.CharField(max_length=200) content = models.TextField() class Comment(models.Model): post = models.ForeignKey(Post, on_delete=models.CASCADE) content = models.TextField() import itertools from typing import Iterator, Tuple from django.core.management import BaseCommand from django.db import transaction from blog.models import Post, Comment class Command(BaseCommand): help = "test" def handle(self, *args, **options): generate_post_instances = ( Post(title=title, content=content) for title, content in self.generate_post_row() ) with transaction.atomic(): for chunks in self.get_chunks(generate_post_instances, chunk_size=1000): Post.objects.bulk_create(chunks, ignore_conflicts=True) for post_instance in Post.objects.all(): generate_comment_instance = ( Comment(post=post_instance, content=content) for content in self.generate_comment_row() ) for chunks in self.get_chunks( generate_comment_instance, chunk_size=1000 ): Comment.objects.bulk_create(chunks, ignore_conflicts=True) @classmethod def generate_post_row(cls, size: int = 1000) -> Iterator[Tuple[str, str]]: for i in range(1, size + 1): yield f"Test post {i}", f"Test content {i}" @classmethod def generate_comment_row(cls, size: int = 100) -> Iterator[str]: for i in range(1, size + 1): yield f"Test comment {i}" @classmethod def get_chunks(cls, iterable: Iterator, chunk_size: int = 100) -> Iterator: iterator = iterable if hasattr(iterable, "__next__") else iter(iterable) for first in iterator: yield itertools.chain([first], itertools.islice(iterator, chunk_size - 1)) 안녕하세요.기존 강의에서 다루시던 대용량 데이터 처리 관련 코드를 참조하여 좀 더 이해하고자 커스텀해서 예시코드를 작성하게 되었습니다.제너레이터, bulk_create 메서드에 대해서 질문이 있습니다.1. 제너레이터는 yield 한 다음 반복문을 이용해 호출합니다. 제너레이트를 호출 한다면 호출할 때 반복문이 여러개 겹치게 되는데 이때 시간복잡도는 어떻게 되는건가요?[generate_post_row 호출 > generate_post_instances 호출 > get_chunks > 호출] 이때 반복문을 많이 사용하게 되는데 어떤식으로 처리가 되는지 궁금합니다. 2. transaction.atomic() 에서 먼저 Post을 bulk_create로 생성한 뒤 해당 Post의 데이터들을 Comment 인스턴스에 넘겨주어 bulk_create를 사용하였는데. 혹시 더 나은 방법이 있을까요?
-
해결됨
left join 할 때
a 와 b 테이블이 있다고 가정하고 (b 테이블에 매칭되는 값이 없어도) 빠지면 안되는 정보가 있어서강의에서 말씀하신대로 left outer join의 기준이되는 집합 테이블을 a 로 from 절에 배치했는데요 select * from a left join a on a.id = b.id 이렇게 걸면 원하는 조건 (매칭되는 값이 없어도)이 정상적으로 나오는데요 저렇게 b테이블을 그대로 안걸고뭔가 조건을 추가해서 left join 을 걸면 매칭되는 값은 전혀 안나오고 공통된 값만 나옵니다. 예시로 with b ( select * from bleft join a on a.id = b.id where a.deleted = 0and a.customerid = 1)select * from a left join a on a.id = b.idwhere a.customerid = 1 이런식으로 b테이블을 그대로 조인하는게 아니라 뭔가 조건을 준 다음에 조인하면 매칭되는 값만 나오고 값이 없는 데이터도 나와야되는데 안나와서요 from 절에 a 테이블을 기준으로해서 잡았는데도 왜 공통된 값만 나오는걸까요? 두 구문에서 어떤 차이때문에 다른 결과를 도출하는지 궁금합니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
CSR 동작과정
제가 이해한 개념은CSR 방식이면 클라이언트 브라우저가 서버에 요청을 처음 보낼 때 웹 서버(Apache, nginx 등)에서 정적 리소스(HTML, CSS, JS)를 응답해주고 거기서부터 동적으로 필요한 데이터가 있으면 WAS에 API 요청을 통해 데이터를 가져와서 필요한 부분만 렌더링 한다고 알고 있는데 맞을까요??