이전 챕터에서 클라이언트 컴포넌트에 대해 다뤘을때 서버에서 사용할 수 없는 훅을 사용할 경우 클라이언트 컴포넌트를 사용해야한다고 이해하였습니다. 그 중 하나가 useEffect이고 그 이유는 useEffect는 컴포넌트가 마운트 되었을 때 즉, 브라우저에 렌더링 되었을 때 실행되기 때문이라고 이해하였습니다. 제가 생각했을 때에는 useActionState 훅은 서버에서 실행되어도 상관 없는 훅이라고 생각하는데 맞는지 궁금합니다. 만약 맞다면 useEffect 훅을 사용하지 않고 useActionState만 사용한다면 서버 컴포넌트로 사용할 수 있는 것인지도 궁금합니다.
SELECT c.name as Customers FROM customers as c LEFT JOIN orders o ON c.id = o.customerid where o.id is null 안녕하세요. 리트코드 Average Population of Each Continent 문제 풀다가 질문 생겨서 남깁니다. 제가 생각했을때, 아래 코드 (where o.customerid is null) 만 정답이 되어야한다고 생각하는데. SELECT c.name as Customers FROM customers as c LEFT JOIN orders o ON c.id = o.customerid where o.customerid is null 선미님도 위에 코드와 똑같이 하셨더라구요 ? 왜 위에도 정답이 되는지 잘 모르겠어요. orders 테이블의 customerid 칼럼이 NULL 값인 것을 찾는 것과 orders 테이블의 id 칼럼이 NULL 인것을 찾는 것. 조금 다르지 않나요?? 아... 질문 작성하면서 좀 이해한 거 같은데. ㅋㅋ orders 테이블의 id 칼럼이 NULL 인 것 (즉, id칼럼이 3, 4) 과 orders 테이블의 customerid 칼럼이 NULL인 것 (즉, customerid 칼럼이 2,4) 같나요??? . . . 아... 헷갈리네요 ㅠㅠ 질문입니다.
안녕하세요, 선생님. 수업 잘 듣고 있습니다! 동물 앨범 만들기-3 수업을 듣다가 pushState메서드 사용할 때 가장 첫번째 값에 null을 넣는 이유가 궁금합니다! 감사합니다! const tabBar = new TabBar({ $app, initialState: "", onClick: async (name) => { history.pushState(null, `${name}`, name); this.setState({ ...this.state, currentTab: name, photos: await request(name === "all" ? "" : name), }); }, }); ⚠ 답변은 평일 오전 10시에 순차적으로 작성해드립니다. ⚠ '질문 해결'은 답변 작성일 기준 1일 이후에 적용됩니다.
start medium phone api 36 디바이스를 추가하고 실행시키면 첨부한 이미지처럼 검은 화면이 나오거나 안드로이드 폰 배경화면만 나오는데 이건 왜 그런걸까요? 우측하단 디바이스 선택하는 곳에서 웹으로는 잘 실행이 됩니다. flutter doctor로 검사해도 별다른 문제가 없는데 커서로 물어보면 주구장창 flutter doctor -v 테스트만 하네요~ ㅜㅜ
안녕하세요. SELECT distinct city.name FROM city LEFT JOIN country ON city.countrycode = country.code WHERE country.continent = 'Africa' 저는 이렇게 풀었는데. 윤선미 선생님께서는 INNER JOIN 으로 푸셨네요. 그 이유가 궁금합니다.
강의 36분 10초 경부터 관련해서 질문드립니다. 해당 시점에서 refMember는 getReference()하였으므로 프록시입니다. 그리고 바로 다음에 em.detach(refMember) 하여 영속성 컨텍스트에서 끄집어 낸다고 하시는데요. 그렇다면 getReference()하여 생성되는 프록시도 영속성 컨텍스트에 속하게 된다는 말씀인건가요?
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
@Transactional public void returnBook(BookReturnRequest request) { User user = userRepository.findByName(request.getUserName()) .orElseThrow(IllegalArgumentException::new); user.returnBook(request.getBookName()); } 위 코드의 BookService 에서 책을 반납할때 userLoanHistory 중 user명과 책 이름이 같은것을 가져와서 userLoanHistory 에서 리턴하는데 문제는 한 사람이 이미 같은 책을 빌렸고 반납한 기록이 있다면 중복으로 잡힙니다. public void returnBook(String bookName) { UserLoanHistory targetHistory = this.userLoanHistories.stream () .filter(history -> history.getBookName().equals(bookName)) .findFirst() .orElseThrow(IllegalArgumentException::new); targetHistory.doReturn(); } 위의 User 엔티티에서 혹시 userLoanHistory 값이 여러개 나올때 혹시 .findFirst() 를 통해 그 중 가장 위 즉, 여기선 가장 최근에 대출한 책의 기록인 userLoanHistory 를 가져와서 doReturn()을 진행하는 형태가 맞습니까?
안녕하세요. Redis에 관련하여 좋은 강의 감사합니다. Redis Pub/Sub과 Stream 기능의 큰 역할은 메시지를 발행하면 구독하고 있던 서버에 실시간으로 전달해주는 것으로 이해했습니다. 위 역할만 하는 것이면 아래 이유로 Redis에 비해 Kafka를 선택하는 것이 일반적이지 않을까 생각이 듭니다. 속도적인 부분은 Redis가 메모리 위에서 동작하여 Kafka 보다 빠르지만 유저 입장에서는 거의 차이가 없을 것 같다. Kafka가 더 많은 자원을 요구하지만 확장성과 영속성, 안전성을 고려했을 때 이점이 있다. 위 생각에 대하여 피드백 부탁드립니다.
인덱스가 아래와 같을때 idx_orders_user_status(user_id, status, created_at) 아래 쿼리문이 왜 문제인지 궁금합니다. select * from orders where 1=1 and status = 'pending' and user_id = 123 강의 내용(11분 30초)에서는 인덱스의 컬럼 순서와 조건문(where)의 컬럼 순서가 틀려 효율적이지 못하다고 설명해 주시는 거 같습니다. 하지만 이는 옵티마이저에 의해 where절의 컬럼 순서를 재계획 하는 걸로 알 고 있습니다. 강의의 의도는 left prefix index rule 때문에 인덱스 순서를 조심해야 한다는 내용인 거 같은데... 혹시 꼭 순서를 지켜야 하는 이유가 있을까요?? (첫 번째 인덱스 미사용, 중간 컬럼 미사용, 커버링 인덱스 등의 특정 상황 제외)
좋은 강의 감사합니다. 다름이 아니라, Redis Pub/Sub에서 채팅 서비스에 활용된다고 하여 제가 이해한 바와 질문을 드립니다. 제가 이해한 바는 다음과 같습니다. 단일 서버가 아닌 다중 서버에서 채팅을 진행하기 위해서는 Source User와 Taget User 간의 정보(IP, MAC 등)이 필요하다. 여기에 다중 서버에 공유하기 위해서는 Redis Pub/Sub 기능을 이용하여 User 정보를 동기화한다. 이해한 바를 바탕으로 아래 질문을 드립니다. Redis Pub/Sub 기능을 활용해 실시간 채팅을 하는 상황입니다. 서버에서는 실시간으로 채팅 내역을 동기화하지만, 유저 단(ex. 브라우저 or 프로그램)에서는 실시간으로 반영을 할려면 Redis Pub/Sub 기능만으로 가능한지 궁금합니다. 유저 단에서 실시간으로 채팅을 할려면 WebSocket이나 SSE 등의 로직이 추가적으로 필요한걸까요? 감사합니다.
안녕하세요! 강의 잘 보고 있습니다. 강의 내용중 - "File + a"가 있고 - "a"에 해당되는 내용이 네트워크(port번호, IP주소)가 되면 - "file + a" == 소켓이다. 이렇게 말씀하셨는데 그러면 앞에서 쭉 강의 하셨던 내용을 토대로 생각해보면 제가 작성한 A,B가 맞는 내용인가요? 아니면 C가 맞는 내용인가요? 아래 그림도 첨부했습니다! A. "a"에 해당하는 네트워크 정보가 있기 때문에 서버와 클라이언트는 각 소켓을 통해 데이터를 주고 받고가 가능. B. 이때 클라이언트에서 hello!라는 mgs를 소켓을 통해 전송하면 : 로컬(서버)에 "file"이라는 1차원 선형 공간에는 data(그림의 경우 클라이언트가 전송한 String타입의 data)이 저장되고 해당 file을 콘솔에 출력하거나, txt로 저장하거나 할 수 있다. C. A,B 둘 다 아니고 소켓은 (장치파일 + a(네트워크 정보))이고 소켓에 send,recv 행위를 하는 것은 장치파일에 write,read 하는 것과 같은 행위이다. 그림에서 클라이언트의 msg를 서버에서 recv 하면 장치파일에 [hello]가 저장되고 그것을 콘솔에 출력하거나 별도의 파일로 저장할 수 있는 것 이라는 의미인가요...??
안녕하세요 강사님 좋은 강의 잘 듣고 있습니다. [2-7 최대 힙 메모리를 늘리면 좋은 점 ] 최대 힙 메모리로 늘리면 좋은 점 - GC가 적게 일어나면 좋다? 에 대해서 궁금증이 있어 질문을 드립니다. GC가 일어나게 되면 STOP-THE-WORLD로 객체 제거 할떄 어플리케이션이 멈춘다고 알고 있습니다. 그래서 GC가 자주 일어나지 않으면 stop-the-world 가 덜 일어나니 좋겠네? 라는 생각을 처음에 했습니다. 하지만 생각을 해보니 힙사이즈를 늘리면 gc가 일어나는 빈도가 적어지지만 한 번 gc가 일어날떄 객체 제거에 처리해야할 양이 늘어나 stop-the-world시 멈추는 시간이 늘어난다고 알고 있습니다... 그래서 과연 무조건적으로 힙사이즈를 늘리는게 옳은게 맞을까 라는 궁금증이 생겨 질문 드립니다. 감사합니다.
800명이 넘는 AWS 강의실 오픈채팅방 에 오시면 더 좋은 답변을 실시간으로 받아보실 수 있습니다. 질문내용은 상세하고 자세하게 부탁드립니다. 예시 : "Amazon EC2의 t2.micro 타입으로 Amazon Linux 2023타입으로 퍼브릭 서브넷에 프로비전 했습니다. 키페어와 같이 프로비전해서 SSH로 접속하고 싶은데 접속 요청시 Timeout이 발생합니다. 어디를 확인하면 될까요?" S3 기타 기능 실습에서 demo-lambda-image-resizer.zip 파일을 업로드하면 The editor could not be opened because the file was not found. 메세지가 출력되면서 업로드가 안되는데 왜그럴까요 ?