학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 양방향 매핑을 할 때와 단방향 매핑을 할 때의 성능 차이가 있나요? 그러니까, 단방향 매핑을 한 후, 각 엔티티의 레포지토리를 통해 명시적으로 조회하는 것과, 양방향 매핑을 한 후, get을 사용하여 조회하는 상황의 성능 차이에 대해 궁금합니다. 지연로딩을 사용하는 경우, 결국 나가는 쿼리 수는 같지 않나요?
firebase 관련 패키지 충돌에 관한 주요 공지에서 코드대로 맞춘 다음 flutter pub get을 했는데 firebase_core 의 버전을 업그레이드나 firebase_auth 의 버전을 다운그레이드하라는 메세지가 떴습니다... 알려준대로 다운그레이드하거나 업그레이드 진행해도 될까요?
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
PopScope로 쓰이는거 같네여 - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 코드팩토리 디스코드 https://bit.ly/3HzRzUM Flutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다!
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 코드팩토리 디스코드 https://bit.ly/3HzRzUM Flutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다!
개남님 안녕하세요. 두 가지 여쭐 것이 있습니다! 도메인 영역에 entitiy가 아니라 model 폴더를 위치하셨던데, freezed로 생성한 이상 각종 메소드가 들어가기에 "정석적인 속성만 존재하는 entitiy라고 보기엔 조금 그래서 model로 구분하셨구나~"하고 넘어갔습니다. 맞을까요?? 글구 company_listing_entitiy는 data 레이어에 속하는데 왜 entity인지 궁금합니다. 제가 아직 강의 초반이라 이해가 부족한 것인지.. 보통 data 레이어에서 api통신/로컬db와 관련된 비즈니스 로직에 사용할 model을 정의하고, 맵퍼가 도메인의 entity로 반환해 주는 구조로 이해했는데 이러면 CompanyListingEntity가 아니라, CompanyListingModel이 맞지 않나요? 제가 너무 시야를 좁게 보는 것 같기도하고.. 헷갈려 여쭙니다!
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오) [질문 내용] System.out.print(i+1+"번째 주문 정보 입력"); System.out.print("상품명 : "); String productName = scanner.nextLine(); System.out.print("가격 : "); int price = scanner.nextInt(); System.out.print("수량 : "); int quantity = scanner.nextInt(); scanner.nextLine(); //입력 버퍼를 비우기 위한 코드 price 입력 받을 때와 quantity 입력 받을 때 둘다 int형으로 입력을 받는데 quantity 수량 받을 때는 nextLine을 해주는데, 왜 price를 받을 때는 nextLine을 안해줘도 되는것일까요?
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 코드팩토리 디스코드 https://bit.ly/3HzRzUM Flutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! 플러터 시뮬레이터로 로그인을 시도하는데 아래와 같은 오류가 나요..[VERBOSE-2:dart_vm_ initializer.cc (41)] Unhandled Exception: DioException [connection error]: The connection errored: Connection refused This indicates an error which most likely cannot be solved by the library. Error: SocketException: Connection refused (OS Error: Connection refused, errno = 61), address = 127.0.0.1, port = 534693000번 포트가 아니라 53469로 사용하고 있어서 나는 오류인 것은 알겠는데,어떻게 시뮬레이터를 3000번 포트에서 실행할 수 있을지 모르겠어요.
예를 들어 ElectricCar extends Car, Car extends Vehicle의 상속 관계를 가질 때 new ElectricCar()를 호출하면 부모 인스턴스인 Car도 같이 생성하는데 이 경우 Car는 Vehicle 의 상속을 받으니까 Vehicle 인스턴스도 함께 생성되나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. OicdUserService의 아래 메서드에서 true를 반환해버리는데요. 우선 해당 함수의 if(authroization_code 이냐?) 분기를 타고, accessibleScopes가 empty 가 아닙니다. 아마 키클록에서 default 스코프가 있기 때문인거 같은데요. shouldRetrieveUserInfo 해당 영상에서는 키클록의 default 스코프가 빠진걸까요? 아니면 grant type 문제일까요? 참고로 grant type 은 별다른 옵션 없이도, registration repository에서 꺼내오는 순간 registration에는 authroization_code 입니다.
댓글 불러오는 과정을 보고 있는데, 지금까지 각 모델(feed, comment) 전부 Firebase에서 전체 document 받아와서 list로 변환 후, update 하고나면 Firebase에 업로드하는데 그와 동시에 screen에 반영하기 위해 새로 get하여 list를 만들어서 표시해주는 것 같습니다. Firebase StreamBuilder를 사용하면 실시간으로 모든 변화들이 바로 업데이트 되어서 기존에 많이 썼는데, 혹시 이렇게 하지 않는 이유가 있을까요? (데이터 통신이 불필요하게 많이 일어나서 트래픽/요금 등의 문제가 있다든지 하는 현실적인 이유가 있는지 궁금했습니다)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 예제를 하면서 보던 도중 static final 위치를 바꾸면 어떻게 될까 해서... 쳐보니 이렇게 둘다 되었습니다. 혹시( static final)로 하는 이유가 있나요? 저가 생각해본게 첫째 : 관례 둘째 : 지정 범위? (연산자의 우선순위처럼 이런게 정해져 있는가 생각함.) 라고 생각해보았는데 답변 부탁드립니다.
안녕하세요 강사님 프로젝트 중 궁금한 점이 있어 질문드립니다..! 6개의 엔티티를 조인해야 하는 상황인데 현업에서도 이렇게 조인을 하기도 하나요? 물론 성능에 따라 다르겠지만 몇개 정도의 테이블을 조인하는 것이 적당할까요? 컬렉션 패치 조인은 1개까지만 하라고 하셨는데 현재 상황은 3개나 컬렉션이 존재합니다. 이런경우는 어떤식으로 해결하는게 좋을까요?? 강사님께서는 어떤식으로 해결하시는지 궁금합니다 ㅎㅎ 감사합니다!
[질문 내용] 안녕하세요 김영한님 강의를 듣다 의문점이 생겨서 질문을 드립니다. 무료 강의 수강 후 해당 강의를 JPA 기본서와 함께 공부 중인 학생입니다. repository관련해서 어떤 방식이 맞는지 헷갈려서 질문드렸습니다. 무료 강의 기준에선 repositry안에 있는 interface를 상속받아서 엔티티이름Repository형식으로 구현하셨는데 해당 JPA활용1 강의에선 상속 없이 class파일로 만들어서 어떤 방식이 맞는지 모르겠습니다.
안녕하세요. Provider 로 된 코드를 Riverpod 로 변경 해보려고 하면 벽에 부딪쳐네요. class CartService with ChangeNotifier { List<CartItem> _cartItemList = const []; List<CartItem> get cartItemList => _cartItemList; // 상품 목록 // 선택된 상품 목록 List<CartItem> get selectedCartItemList { return _cartItemList.where((cartItem) => cartItem.isSelected).toImmutable(); // cartItemList에서 isSelected 값이 true 항목만 불변 배열로 반환하는 Getter를 구현 } // 상품 추가 void add(CartItem newCartItem){ _cartItemList = [..._cartItemList, newCartItem].toImmutable(); notifyListeners(); } // 상품 수정 void update(int selectedIndex, CartItem newCartItem) { _cartItemList = _cartItemList.asMap().entries.map((entry) { return entry.key == selectedIndex ? newCartItem : entry.value; }).toImmutable(); notifyListeners(); /*** * 업데이트하고 싶은 항목의 인덱스인 selectedIndex에 해당하는 항목을 * 새로운 newCartItem으로 변경하여 새로운 불변 배열을 생성하도록 구현 */ } // 상품 삭제 void delete(List<CartItem> deleteList){ _cartItemList = _cartItemList.where((cartItem) { return !deleteList.contains(cartItem); }).toImmutable(); notifyListeners(); /*** * 삭제하고 싶은 목록을 deleteList로 전달받고, * 해당 배열에 들어있지 않은 CartItem만 남긴 불변 배열을 생성하도록 구현 */ } } 위 코드를 아래와 같이 변경하고자 일부 구현을 해보고 있습니다. 틀린 부분 수정 및 상품 수정 코드를 어떻게 추가해야 될까요? final cartProvider = NotifierProvider<CartNotifier, List<CartItem>>(CartNotifier.new); class CartNotifier extends Notifier<List<CartItem>> { @override List<CartItem> build() => const []; // 상품 목록 // 상품 추가 void add(CartItem newCartItem){ state = [...state, newCartItem]; // state 는 immutable 데이터이기 때문에 직접적으로 state 를 변경할 수 없다. } // 상품 삭제 void delete(List<CartItem> deleteList){ state = state.where((cartItem) => cartItem != deleteList).toList(); } // 상품 수정 void update(int selectedIndex, CartItem newCartItem) { // CartItem 에 유니크한 id 값이 없는 거 같고, 선택한 index 값으로 찾아서 update 해야 하는데 모르겠음. } /* state = [ for (final item in state) if (item.id == id) newCartItem else item, ]; */ // 선택된 상품 목록 List<CartItem> get selectedCartItemList { return state.where((cartItem) => cartItem.isSelected).toList(); } }