섹션 3. 17강. 23:00 질문 있습니다. printf("입력된 문자열: %s\n", str); 이 아니라 printf("입력된 문자열: %c\n", str)라면 어떤식으로 출력이 될까요? myString[]에서 this is string은 알파벳 하나하나 주소를 갖는건가요? 아니면 통째로 주소를 갖는 건가요?ㅜ 갑자기 헷갈려서 남깁니다.
선생님 제가 정말 완전 노베이스에서 하는데, 왜 모든 값들을 출력할 때 출력문 구조가 System.out.println("d1 == d2: " + (d1 == d2)); 이렇게 되어있는데 출력은 +를 뺀 내용만 출력을 하는건가요? d1 == d2: false +의 경우는 " "에 있는 내용도 아니고 단지 두개의 식을 이어주는 역할이라고 생각하면 될까요?
super()가 없어지면 기본 생성자를 호출 해야한다는건 이해 했습니다. ElectricCartesla-new ElectricCar("Tesla",2021,75); 라는 변수가 있기때문에 자식 기본생성자인 부분은 건너뛰고 2번쨰인 ElectricCar로 바로 넘어가는건가요? 이후에 부모기본생성자 출력하고 남은 Capacity를 출력하는 순서... 이렇게 이해하면 되는건가요?
08_chatServerSelector 소스코드의 마지막 부분인 브로드캐스팅하는 함수 sendMessageAll에서 오류를 발견했습니다. 제공하여주신 소스 코드를 작성하고, 여러 클라이언트를 실행시켜보았습니다. 연결은 문제가 없었지만, 쓰기 부분에서 문제가 발생했습니다. private static void sendMessageAll(Selector selector, SocketChannel sender, String msg) throws IOException { ByteBuffer msgBuffer = ByteBuffer.wrap((msg + "\n").getBytes()); for (SelectionKey key : selector.keys()) { Channel channel = key.channel(); if (channel instanceof SocketChannel) { SocketChannel target = (SocketChannel) channel; target.write(msgBuffer); // <- 문제 지점 } } } msgBuffer를 반복문을 통하여 타겟 클라이언트 채널에 쓰기를 할 때에, 첫 클라이언트에게만 메시지가 보내지는 것 을 발견하였습니다. 이유는 write호출시 msgBuffer의 position이 마지막으로 이동이 되어서, 다른 클라이언트 소켓 채널에게는 빈 msgBuffer가 쓰기가 되어서 메시지가 보내지지가 않았습니다. 해결방법) msgBuffer의 값을 할당받는 부분을 반복문 안쪽으로 이동시켜 매 이터레이션 마다 값을 받게 코드를 수정하였습니다. // 브로드캐스팅 함수 private static void sendMessageAll(Selector selector, SocketChannel sender, String msg) throws IOException { for (SelectionKey key : selector.keys()) { Channel channel = key.channel(); if (channel instanceof SocketChannel) { SocketChannel target = (SocketChannel) channel; ByteBuffer msgBuffer = ByteBuffer.wrap((msg + "\n").getBytes()); target.write(msgBuffer); } } }
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? 코드의 어떤 로직이 이해가 안 되시나요? 어떤 개념이 헷갈리시나요? 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 에러가 발생했다면 어떤 에러인가요? 현재 작성하신 코드를 공유해주세요 안녕하세요 항상 강의 잘 보고 있습니다 ! 딩코딩코님 혹시, 로컬에서 테스트 한 결과를 이력서에 써도 괜찮을까요? 서비스를 배포를 할 생각이긴한데, 똑같은 환경을 2개 만들어서 배포를 하고 테스트를 하려니 비용이 많이 나올 것 같아서 어떻게 해야될지 고민하고 있습니다 ㅜㅜ 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다!
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 4-8 여기까지 이해하신 내용은 무엇인가요? 외래키 제약조건으로 인해 발생한 데드락 문제를 해결하기 위해 INSERT 하려는 테이블에 외래 키를 제거한다. 2. 어려움을 겪는 부분 외래키를 만약에 제거한다면, 어플리케이션 레벨에서 직접 관리한다고 했는데, 구체적으로 어떻게 관리를 하는 건지 궁금합니다! INSERT 하려는 테이블과 연관된 테이블들을 먼저 조회( findXXX() )를 하고, 만약에 없다면 예외를 발생시켜서 트랜잭션을 롤백시키는 방식으로 처리하나요? 실무에서 주로 어떻게 해결하는지 궁금합니다. 그리고 외래키를 사용하지 않는 첫 번째 방법은 이미 테이블이 생성된 시점( INSERT 하려는 테이블에 외래키가 추가되어 있는 상황)에서도 적용할 수 있는건가요? 예를 들어, 이미 테이블에 데이터가 추가되어 있는 상황에서 첫 번째 방법을 적용하려면, 테이블 구조를 아예 바꿔야 할텐데 이 경우에는 두 번째 방법인 쿼리 순서를 바꾸는 걸 대안으로 사용하는 건가요?
강의에선 되게 단순하게 큰 틀 위주로 알려주시는 것 같아서 개인적으로 더 자세한 의미나 추가적인 개념이 궁금할 때 검색해보는 편인데, DI라는 것이 클래스 간의 결합도를 낮추고 객체의 유연성을 높이기 위해 빈 객체를 만들어 주입하는 것을 의미한다고 정리했습니다. 이게 맞게 정리한건지 궁금합니다. 또 추상 클래스와 인터페이스 간의 차이점은 찾아봐도 이해가 어렵길래 선생님의 친절한 설명이 필요할 것 같아서 추가로 여쭤봅니다!
안녕하세요 강의를 듣다가 전반적인 학습 방향성에 고민이 있어서 질문드립니다. 풀스택 개발자가 목표입니다 취업전 총 3번의 프로젝트를 진행 해보려고 합니다. (실서비스 프로젝트 1개 / 실서비스 프로젝트를 위한 연습 프로젝트 2개 ) 첫번째 프로젝트는 프레임워크를 사용하기 전 전반적인 기초체력을 기르기 위해서 fe - 바닐라 js로 spa방식 (csr) be express로 api구성 + 로우쿼리로 db 연동 두번째 프로젝트는 추후 next, nest 등 프레임워크 학습후 진행 해보려고 합니다. fe - next be - nest + prisma 등 인프라 - aws 운영 - • Sentry - 에러 추적 • CloudWatch - AWS 로그/모니터링 • Datadog - 통합 모니터링 • Winston / Pino - 로그 라이브러리 실서비스 프로젝트는 fe는 next / be는 nest를 사용해 개발할 예정이고 실제 사용자가 있는 b2b 쇼핑몰이라 배포/인프라(aws), 운영(모니터링/로깅) 까지 a~z까지 모두 경험 해볼 프로젝트입니다. 현재 첫번째 프로젝트를 위해 강의자분께서 제공한 express part1 수강은 끝난 상태입니다 프론트 및 db관련 강의들은 타 강의자분의 강의를 통해 준비를 마친 상태입니다. 혹시 part2 까지 수강후 전반적인 기능구현 실습들을 진행 해보는 타강의를 수강하고 프로젝트를 시작해야할까요 아님 프로젝트 경험 먼저 해본뒤 part2 강의수강, 기능구현 실습강의를 수강 하는게 더 효율적일까요.. 프로젝트 완성도를 위해 강의만 쭉 들으니 어디까지 공부를 해야하는것인가에 대한 기준도 안 잡히고 강의만 듣고 직접 강의 코드를 쳐보는것만으로는 구현력이 안 길러지는 것 같습니다.. 또한 강의 수강 기간이 길어지다보니 앞서 들었던 강의 내용들이 잘 기억이 안 나는 부분들에 대한 걱정 또한 있습니다. 반면에 실무적인 코드 경험 (강의를 통한 간접경험) 없이 프로젝트를 진행하면 실무에서 쓰지 않는 코드 / 리펙토링 하기 어려운 코드 / 보안에 대한 인식 부재로 인한 위험성 등 여러가지 잘못된 코드를 작성하고 학습하게될까봐 두려움이 있습니다. 어느 시점에 구현력을 기르기 위해서 프로젝트를 진행 해봐야하는지 도무지 감이 안 잡혀서 질문 드립니다.. 강의 외적인 성격이 짙은 질문인데 염치 불구하고 질문드립니다..
AI 답변으로 해결됐습니다! 강의 제목처럼 말 그대로 재생성 방지였군요..! 마운트 시 생성된 함수를 재사용하기 때문에 리렌더링 되더라도 props로 넘어간 함수는 참조 값이 똑같은 처음 생성된 함수이다. 이해했습니다! 안녕하세요, 강사님! 73강 useCallback과 함수 재생성 방지 강의의 4분 쯤의 내용에 대해 질문이 있습니다. 강의에서, useCallback 적용한 'onCreate, onUpdate, onDelete 함수가 두 번째 인수로 빈 배열을 할당했기 때문에 마운트 이후에는 다시는 생성되지 않는다.'라고 설명해주셨는데요! 그러면, 첫 마운트 이후 todo 아이템을 생성, 수정, 삭제 할 때는 해당 함수들이 어떻게 동작하는 것일까요? 동작은 하되, 생성하지 않는다.. 라고 이해를 해야 하는 걸까요..? 답변해주시면 감사하겠습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Array 연습 문제 5번을 제가 스스로 풀어보았을 때 이런 식으로 코드가 나왔고, 실행시켜봤을 때 답은 똑같이 나오는 것 같습니다. 다만 풀이와는 코드가 조금 다른 부분이 있는데 혹시 제가 풀어 본 코드도 맞는 코드인가요? 아니면 틀린 걸까요?
안녕하세요, 토비님. 강의 초반에 말씀해 주신 것처럼, 리팩토링 과정에서 “제가 했다면 어떻게 했을까”를 계속 생각해 보며 토비님의 의사결정 과정을 따라가고 있습니다. MemberService.register() 메소드에서 emailSender.send(...) 를 sendWelcomeEmail() 로 분리하시는 과정을 보며 두 가지 고민이 생겼습니다. 첫째, 환영 이메일의 내용이나 정책이 변경될 때마다 MemberService 의 코드가 함께 변경되어야 한다면, 이는 SRP 위반에 해당하지 않는지에 대한 고민입니다. 이 경우 환영 이메일 전송에 대한 책임을 EmailSender 인터페이스 쪽으로 옮기는 것이 더 적절한지 궁금해졌습니다. 둘째, 만약 EmailSender 인터페이스에 해당 메소드를 추가한다면, 구현체가 늘어날수록 인터페이스가 비대해지거나 향후 구현 복잡도가 증가할 수 있다고 느꼈습니다. 이런 경우 default method 로 제공하는 방식에 대해서는 어떻게 생각하시는지도 궁금합니다.
안녕하세요 module.exports 나 require 등의 node js 관련 기능을 작성하는데 자꾸 자동완성에 의해서 다른 글자로 바뀌네요 ex) module.exports 작성하는데 module 작성하고 '.' 누르거나 require 작성하고 '(' 누르면 다른 거로 바뀜 강사님 화면에서는 자동완성이 나오더라도 안 바뀌는데 혹시 어떻게 설정하셨는지 궁금합니다..!
Error: Calling setState synchronously within an effect can trigger cascading renders Effects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following: * Update external systems with the latest state from React. * Subscribe for updates from some external system, calling setState in a callback function when external state changes. Calling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. ( https://react.dev/learn/you-might-not-need-an-effect ). 이런 에러가 나오는데요. 작동도 하고, 에러가 아니라 경고에 가까운것 같습니다. 그런데 똑같이 했는데 왜 강사님 화면에는 안뜨고 제 화면에만 뜨는건지 궁금하네요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 질문드립니다. 클래스에서 static 메서드엔 static 변수와 메서드만 사용할 수 있고 인스턴스 변수와 메서드를 사용하지 못하는 이유는 '인스턴스는 생성이 되어야 참조값이 생성되기에 아직 생성되지 않은 클래스 내에서는 인스턴스를 사용할 수 없다.'로 이해하고 있습니다. 그러면 해당 클래스의 인스턴스 메서드 에서는 아직 생성되지 않은 클래스인데 인스턴스 변수와 메서드를 사용할 수 있는 이유가 무엇일까요?
getMonthlyData() 함수의 패턴이 가지는 장점이 있는지 궁금합니다. sql이라면 date 타입에 인덱스를 걸어둘수도 있기 때문에 크기 비교를 하는게 납득이 가는데 그런게 아니라면 아래 코드가 간단하고 가독성이 좋지 않나요? function filterByMonth(data, pivotDate) { return data.filter( (item) => item.date.getFullYear() === pivotDate.getFullYear() && item.date.getMonth() === pivotDate.getMonth(), ); }