[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
PS D:\flutter\ubi> flutter build appbundle Font asset "MaterialIcons-Regular.otf" was tree-shaken, reducing it from 1645184 to 1100 bytes (99.9% reduction). Tree-shaking can be disabled by providing the --no-tree-shake-icons flag when building your app. Running Gradle task 'bundleRelease'... 97.9s Gradle build failed to produce an .aab file. It's likely that this file was generated under D:\flutter\ubi\build, but the tool couldn't find it. D:\flutter\ubi\build\app\outputs\bundle\release 에는 파일이 생성되어 있음
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안녕하세요 페이지뷰 관련해서 학습하고 있는데 궁금한게 생겨서 문의드립니다. 강의에서 보면 페이지뷰에 이미지를 5개 넣고 nextPage에서 4보다 작을 때 0으로 초기화 해주고 있는데, 이때 이미지 총 개수를 상수가 아닌 컨트롤러나 다른 곳에서 가져올 수 있는지 알 수 있을까요? timer = Timer.periodic(Duration(seconds: 2), (timer) { int curPage = controller.page!.toInt(); int nextPage = curPage + 1; if(nextPage > 4){ // 상수말고 총 이미지 개수 또는 페이지 수를 가져올 수 있는지 nextPage = 0; } controller.animateToPage(nextPage, duration: Duration(milliseconds: 400), curve: Curves.linear,);
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 수정, 삭제 벌크 연산의 6:20 부분에서 update쿼리로 인한 영속성컨텍스트 문제를 설명해주셨는데요. 전 강의에서 em.flush()실행되는 조건들을 설명해주실 때, 직접 호출 시 트랜잭션 커밋 시 JPQL쿼리 실행 시 em.flush()가 실행된다고 설명해주신 것으로 기억하고 있습니다. querydsl도 결국 JPQL기반으로 작동된다고 알고 있는데, querydsl을 통한 select쿼리 실행을 하면 자동으로 em.flush()가 실행되지 않고, 직접 해주어야 하는 메커니즘이 궁금합니다!
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
상품 리스트나 레스토랑 리스트, 레스토랑 상세 정보 등은 캐싱을 이용해서 데이터를 어느정도 저장시키고 로딩을 빠르게 끝낼 수 있도록 하는 것이라고 이해를 했습니다. 그럼 DB에서 값이 바뀐 경우에는 어떻게 해야 되나요? 캐싱된 데이터를 가져오게 되면 옛날 값이 아닌가용?
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
강의를 들으면서 궁금했던 사항 문의 드립니다. 질의 1. 함수로 정의할때 리턴값타입을 공통적으로 Widget으로 표시하는것과 리턴하는 특정 위젯 타입을 적어주는 것에 차이점이 무엇인가요? 질의 2. 아래와 같이 컬럼에 들어가는 Row 위젯을 함수로 정의하여 사용하는 경우와, Stateless 위젯으로 만들어서 사용하는 경우의 차이점이 무엇일까요?
안녕하세요, build.gradle의 빌드 실패가 나서 문의드립니다. JDK 버전은 다음과 같이 17.0.6입니다. 그리고 인텔리제이 설정은 다음과 같습니다. java 컴파일러 설정 2. 빌드 도구 설정 3. 프로젝트 설정 마지막으로 처음 프로젝트를 다운로드 받았던 설정은 다음과 같습니다.(spring boot 3.0.7 버전 사용) 처음 build.gradle을 실행할 때부터 에러 로그 하나도 없이 그냥 빌드 실패했다는 에러가 뜹니다. 컴퓨터를 여러번 껐다가 켜봐도 여전히 같은 에러가 뜹니다. 인텔리제이와 스프링이 완전 처음이라서 이 에러를 어떻게 해결해야 하는지 모르겠습니다. 커뮤니티의 다른 글들을 참고해봐도 딱히 도움이 되지는 않는 것 같습니다. 도와주시면 너무 감사하겠습니다.
안녕하세요! 질문 좀 드리려고 합니다 엔티티 매니저 프록시는 프록시를 싱글톤으로 주입해서 동시성 문제를 해결하고 실제 엔티티 매니저 인스턴스를 ThreadLocal로 관리하는 역할 정도로 생각해도 괜찮을까요? 추가적으로 실제 엔티티 매니저는 @Transactional을 사용하면 JpaTransactionManager에서 생성이 되는데 @Transactional을 사용하지 않으면 처음 엔티티 매니저를 사용할 때 생성이 되나요?
안녕하세요. 큰돌님 강의 잘 보고있습니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { static int[][] board; static boolean[][] visited; static int[] dy = {-1, 0, 1, 0}; static int[] dx = {0, 1, 0, -1}; static int yLen; static int xLen; static int cnt; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); while (n-- > 0) { int[] given = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); if (given[2] == 1) { sb.append(1).append(System.lineSeparator()); continue; } board = new int[given[0]][given[1]]; visited = new boolean[given[0]][given[1]]; yLen = given[0]; xLen = given[1]; for (int i = 0; i < given[2]; i++) { String[] numStr = br.readLine().split(" "); int y = Integer.parseInt(numStr[0]); int x = Integer.parseInt(numStr[1]); board[y][x] = 1; } for (int i = 0; i < yLen; i++) { for (int j = 0; j < xLen; j++) { if (!visited[i][j] && board[i][j] == 1) { dfs(i, j); cnt++; } } } sb.append(cnt).append(System.lineSeparator()); } System.out.print(sb.substring(0, sb.length() - 1)); } public static void dfs(int y, int x) { visited[y][x] = true; for (int i = 0; i < 4; i++) { int ny = y + dy[i]; int nx = x + dx[i]; if (ny < 0 || ny >= yLen || nx < 0 || nx >= xLen) continue; if (visited[ny][nx] || board[ny][nx] == 0) continue; dfs(ny, nx); } } } 위 코드를 실행하면 12%, ArrayIndexOutOfBounds가 발생하는데 어떤 부분인지 알 수 있을까요?
안녕하십니까 강사님. 좋은 강의 정말 감사합니다. 이번에 강사님께 강의를 듣고 현업에 적용하는 도중 궁금한 사항이 있어 문의하게 되었습니다. 저희는 현재 DDD 를 적용하려고 합니다. DDD 에서는 애그리거트끼리의 관계를 맵핑하는 것을 지양하는 것으로 알고 있습니다. 따라서 저희는 ERD 기준으로 도메인을 설계해보니 실제 나온 도메인을 보면 테이블이 전부 도메인 클래스가 되었고 서로간의 관계를 코딩으로 맺는 부분 (@ManyToOne 등)이 존재 하지 않습니다. 현업에서도 ERD 를 기준으로 도메인 클래스를 나누면 테이블 당 하나의 애그리거트가 나오는 것이 보편적인 사항일까요? DDD 로 개발하다보면 도메인 클래스에 관계를 맺는 부분이 없는게 보편적일까요?
안녕하세요,선생님 습하고 더운 여름 몸 건강히 계시길 바랍니다. 강의를 듣는 도중 궁금한 부분이 생겼습니다. DIP와 IoC가 다르다고 말씀하신 부분이, DIP가 의존성 주입을 역전함으로써 제어의 흐름을 바꾸지만 IoC가 의존성을 주입해주는 것은 아니어서 그렇다고 이해되는데 제대로 이해한 게 맞을까요? ㅜㅜ 또, Open-Closed 법칙을 설명해주시는 1:32초 부분에 수정에는 열려있어야 한다는 말씀을 하셨는데 수정 시 많은 메소드 혹은 클래스를 수정해야 하는 경우가 수정에 열려있는 것이 아닌지요 ㅜㅜ... 제가 잘 모르다보니 헷갈려서 질문드립니다!
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안녕하세요, 장바구니에서 결제하기 버튼을 누르면 결제완료 페이지로 절대 안넘어갑니다. 하단에 스낵바로 결제를 실패했습니다. 라는 문구만 뜹니다. 실행창에서는 문제없이 데이터를 잘 받아오는 것 같았습니다. 뭐를 잘 못 따라했는지 여러번 되짚어 봤으나 다른 걸 못찾겠네요ㅠ 왜 저는 결제완료 창으로 넘어가지 않을까요? 혹시 버전이 달라지며 생긴 문제일까요?
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Model>schedule.dart 에 IntColumn get couponQty => integer()(); 를 추가 했구요. 저장할 때 마다 수량이 변경 되도록 해놨습니다. Future<int> getCouponQtySum() async{ return await customSelect('SELECT SUM(couponQty) AS total FROM schedules').map((row) => row.read<int>('total')).getSingle(); } 합을 구하는 query는 위와 같이 구성해보았습니다. 그런데 앱바에 GetIt을 써서 아래와 같이 불러와보니 에러만 반환 하더라구요 ㅠ 종일 혼자 고민해보다 올려 봅니다. appBar: AppBar( title: FutureBuilder<int>( future: GetIt.I<LocalDatabase>().getCouponQtySum(), builder: (context, snapshot) { if(snapshot.hasError){ print('에러'); return Text( '쿠폰 수량: 0' ); }
안녕하세요. U&I 디자인 마무리 진행하고 있는데요 강의에서는 Column 영역 선택할 때 마우스로 드래그 하면 선택이 되지만 저는 박스 형태로 소스 영역이 선택이 되고 있습니다. 불편해서 이곳 저곳 알아보는데 방법을 모르겠어서요 마우스 드래그로 여러 라인을 선택해서 복사하려면 어떻게 해야 하나요? 어디 설정에서 바꾸면 될 것 같은데 구글링을 해 보아도 방법을 못 찾겠습니다.
실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
안녕하세요. 강의 들으며 재밌고 공부하고 있습니다. 감사합니다. 예외 처리를 util패지키에 모아서 처리하는 것은 이해했습니다. 약간 궁금증 생겨서 문의 남겨봅니다! BookService의 코드 일부분 입니다. 여기서 보면 UserRepository 와 BookRepository 의 findByName 에서 모두 fail()로 예외 처리를 하는데요, 이걸 그냥 리포지토리 계층의 메서드 자체에서 예외를 처리해주면 더 깔끔하지 않을까 하는 궁금증이 생겼습니다. 제가 지금까지 공부하면서는 리포지토리 계층에서 디폴트 메서드를 통해서 처리하는 코드도 봤고, 서비스 계층에서 처리하는 코드도 봐서 어떤 방식을 선호하시는지, 권장 하시는지 궁금합니다! 좋은 강의 감사합니다!