안녕하세요 나도코딩 선생님...ㅎ 몇 주전에 나도코딩 자바편 강의를 완강하고 다시 2회차로 강의를 듣는 중입니다...ㅎ 추상 클래스 (abstract class)와 인터페이스(interface) 관련 강의를 들으면서 각각의 특징들 및 차이점들에 대해서 다시 조금씩 알아가고 있는데... (예를 들면, 추상클래스는 abstract 키워드를 가지고, abstract메소드를 가지고 있어서 객체를 생성할 수 없는 반면, 인터페이스(interface)는 보통 -able 키워드, 변수 X, 생성자 X, 오로지 메소드만 있다 등) 이 둘, 그러니까 추상 클래스 (abstract class)와 인터페이스(interface)는 '어느 때 (또는 어느 시점)'에 활용하는게 가장 적절한지 디테일하게 알 수 없을까요? 항상 좋은 강의와 답변 감사합니다...ㅎ
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안녕하세요! 중급 강의 따라가던 중에 궁금한 게 있어 질문드려요. Product_Card.dart 파일을 수정하실때, ProductCard 클래스에 RestaurantProductModel의 멤버들을 다 변수로 지정하셨잖아요? 그런데 그냥 RestaurantProductModel을 변수로 넣고 그냥 모델을 받아버리면 안되나요? class ProductCard extends StatelessWidget { final ProductModel model; const ProductCard({ required this.model, super.key, }); 이렇게 하고 디테일 스크린에서 ProductCard를 그냥 넘겨주는 식으로 해봤는데, 일단 동작하는 건 같더라구요. 그런데 이렇게 하지 않으신 데에는 무슨 다른 이유가 있으신건지 궁금합니다! 혹시 제 마음대로 했다가 나중에 문제가 생기진 않을까 걱정이 되어서... 답변기다리겠습니다. 감사합니다! ^^
기본적인 개념같아서 구글링도 해봤는데 object 와 object[] 배열간의 형변환에 대한 내용이 안보여서 질문드립니다. 다름이 아니라 Object o = resultList.get(); Object[] result = (Object[])0; 에서 왜 Object 타입에서 Object[] 타입으로 형변환을 해야하는지, 그냥 o[0], o[1] ... 로 쓰면 왜 컴파일 오류가 나는지 궁금합니다. Object 타입에서 어떻게 Object[] 타입으로 형변환이 가능한지 궁금합니다. Obect[] 배열은 Object가 여러개 포함된 배열 아닌가요?.. 아니면 Object 타입이 Object[] 타입까지도 포함한 포괄적인 개념이라 위처럼 형변환이 가능한 건가요? 기본적인 내용같은데 개념이 잘 이해가 안가서 질문드립니다 ㅠㅠ
영속성 컨텍스트에 프록시 객체도 저장이 되나요? 강의 내용중 프록시 객체의 초기화를 보면 getName()을 요청했을때 최초의 요청이면 영속성 컨텍스트에서 조회를 하고 DB에서 조회를 한다고 나와있는데 .getReference를 했을때 생성되는 프록시객체도 영속성컨텍스트에서 관리를 하나요? 그리고 .getName을 요청해서 실제 엔티티를 받아오게되면 이 객체도 영속성 컨텍스트에서 관리를하나요? 그리고 2번째 .getName 메서드를 요청해도 꼭 프록시 객체를 거쳐서 값을 받게되나요?
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
일단 정확하게 오류보다는 앱이 강제 종료 되어 버리는 현상이 발생 합니다. 시뮬레이터는 ios 14Pro max로 실행하고 있습니다. 유일하게 아래와 같은 메시지가 떨어지는 것 말고는 오류 log가 나오는 부분은 없어 질문 드립니다. Failed to send request: {"jsonrpc":"2.0","id":"43","method":"getMemoryUsage","params":{"isolateId":"isolates/2034536295462095"}} 무슨 문제일까요... 이 외에는 아무런 단서가 없어 자체 해결을 못하고 있네요.
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
토큰 만료 이후 GoRouter & Authentication 따라할 경우 401 에러를 저도 만났어요. 유사 질문들과 답변이 있어, 저도 경험기 공유합니다. 증상 GoRouter 적용 후 재실행시 Splash 화면에서 무한 로딩 http://127.0.0.1:3000/user/me/ 호출에서 401 로그 확인 원인 refreshToken 이 있거나 accessToken이 있는 경우에 토큰이 만료된 상태이면 증상 발생 의심 해결 user_me_provider.dart 파일 > getMe() 에서 try catch & state 초기화 추가 재실행 Future<void> getMe() async { // ... 중략 try { final resp = await repository.getMe(); state = resp; } catch(e, stack) { print(e); print(stack); state = null; } } 저와 동일한 오류를 만나는 분에게 소소한 도움이 되길 바래요 :)
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
색상 상태관리 페이지에서 color를 선택하기 전 database에서 color를 가져오는 부분까지는 잘 작동이 되었는데 기본 값을 list의 인덱스0설정 과 selected 값 설정을 한 이후 부터 계속 'hasSize': is not true. 와 Null check operator used on a null value 에러가 계속 뜨며 스케쥴 세부 항복 보기가 작동을 안합니다. 수업 따라가며 그대로 클론 코딩 중이였는데 (달력 색깔 제외) 무엇이 문제인지 잘 모르겠습니다.
공부하다가 의문이 생겼는데요, 낙관적 락 - 충돌 잦으면 락 획득 재시도 로직 때문에 성능 안좋음 비관적 락 - 충돌 잦으면 낙관적 락보다 성능좋음. 분산 락 - 스케일 아웃된 DB 환경에서도 사용 가능 - Redis 라이브러리마다 다른데 Lettuce는 스핀락으로 구현되서 재시도 많으면 불리 Redisson은 pub-sub 기반이라 재시도 많으면 유리 정확하진 않지만 이렇게 알고있습니다. 질문은 1. 잘못 알고 있나요? 2. 제가 공부한게 맞다면, 무조건 비관적 락, 낙관적 락 말고 분산락 + Redis(Lettuce/Redisson) 쓰는게 좋은건가요?
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
색상정보 DB에 넣기 과정 중 InvalidDataException 에러가 발생합니다. 내용은 id 가 누락되었다고 하는데요 (아래 코드 블럭에 오류 추가했습니다) category_color.dart 에도 id 는 integer().autoIncrement()(); 로 해두었습니다. 앱 삭제 후 다시 설치해도 동일하게 문제가 발생하는데... id 값을 강제로 입력을 해야할까요? 입력을 해야한다면 어떤 식으로 입력을 하면 되는걸까요?? [VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: InvalidDataException: Sorry, CategoryColorsCompanion(id: Value.absent(), hexCode: Value(F44336)) cannot be used for that because: • id: This value was required, but isn't present #0 VerificationContext.throwIfInvalid (package:drift/src/runtime/data_verification.dart:74:5) #1 InsertStatement._validateIntegrity (package:drift/src/runtime/query_builder/statements/insert.dart:257:51) #2 InsertStatement.createContext (package:drift/src/runtime/query_builder/statements/insert.dart:125:5) #3 InsertStatement.insert (package:drift/src/runtime/query_builder/statements/insert.dart:70:17) #4 LocalDatabase.createCategoryColor (package:calendar_scheduler/database/drift_database.dart:36:28) #5 main (package:calendar_scheduler/main.dart:38:22) <asynchronous suspension>
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
플러터 강의 중 구글맵 사용하는 강의 중에서요 GoogleMap( myLocationEnabled: true, 사용시 현재 위치 마커가 나오지않는데 .. 이유를 알수있을까요..? google_maps_flutter: ^2.1.11 사용중입니다. 강의 그대로 따라하는데 다되는데 이 마커만 안나오네요
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 위와 같이 테스트를 구현하고 테스트 실행 시 Insert 쿼리가 나갑니다. 그런데 예외가 발생했기 때문에 롤백이 되어서 또는 테스트의 트랜잭션 디폴트 값이 Rollback이라서 Insert 쿼리가 나가지 않아야 하는 것 아닌가요?