[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
리버팟 codegen을 쓰면서 강의를 듣다가 리버팟 codegen으로는 changeNotifier를 작성하지 못한다는 기사를 읽었습니다. 다음 코드에서 막혔습니다. @riverpod GoRouter goRouter(GoRouterRef ref) { final provider = ref.read(authProvider.notifier); final user = ref.watch(userMeProvider); return GoRouter( routes: provider.routes, initialLocation: '/splash', // refreshListenable: ???, redirect: (_, state) { return provider.redirectLogic(state); }, ); } 여기서 refreshListenable에 값을 넣어줘야 하는데 강의에서는 ChangeNotiferProvider로 했기 때문에 refreshListenable에 값을 넣어주는게 가능했는데 저는 codegen으로 하다보니 타입 에러가 뜨고 값을 넣어 줄 수가 없습니다. final user = ref.watch(userMeProvider); 이 코드를 넣어서 user의 상태가 바뀌면 고라우터를 재빌드 시켜서 리다이렉트 함수를 다시 실행시키려고 했는데, user의 상태가 UserModelLoading에서 UserModel로 분명히 바뀜에도 불구하고 고라우터가 재빌드가 안됩니다. print() 넣어서 확인했습니다. 그냥 리버팟 codegen 쓰지말고 v1처럼 하는게 나을까요? 아니면 refreshListenable에 넣어 줄 수 있는 다른 값이나 고라우터의 리다이렉트 함수를 또 실행시켜줄 장치가 있을까요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예 V /아니오 ) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예 V /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예 V /아니오) [질문 내용] 안녕하세요. 이제 Java를 배운지 1개월 차 정도 된 학생입니다. 다른게 아니라 생성자 pdf를 보다 궁금한 것이 생겨 질문을 드립니다. 생성자 pdf에 생성자 - 도입 파트의 생성자 호출을 설명하는 글에서 'new MemberConstruct("user1", 15, 90) 이렇게 하면 인스턴스를 생성하고 즉시 해당 생성자를 호출한다. 여기서는 Member 인스턴스를 생성하고' 부분에서 Member 인스턴스를 생성하고 부분이 궁금한데 여기서 말한 Member 인스턴스란 무엇입니까?? new MemberConstruct("user1", 15, 90) 이 코드를 가리키는 말 인지가 궁금합니다!!!
제가 모든 error를 정해진 form에따라 응답하고 싶은데, 어떻게 할까 하다가 방법을 BasicErrorController를 커스텀해서 사용해야겠다 생각했습니다. CustomErrorController의 코드는 다음과 같습니다. 그런데 응답값에 오류 message가 들어가지 않아서 디버깅해봤는데, request안에 attribute안에 jakarta.servlet.error.message에 빈문자열이 들어가있는걸 확인했습니다. 이게 response.sendError(400, "400에러 발생!"); 과 같이 할경우에는 message에 값이 들어가고, throw new RuntimeException("에러 발생") 과 같이 예외를 던질때만 message에 값이 담기지 않습니다. 도움주시면 감사하겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 윈도우라 "h2.bat" 혹은 "H2.bat"으로 확인해봤는데 아무 반응이 없습니다. 여러 글을 찾아보니 자바 환경변수와도 상관이 있는 것 같더라구요. 근데 제가 jdk11, jdk17을 깔아놔서 설정을 아래 블로그를 참고해서 설정을 해놨거든요. 참고) https://computer-science-student.tistory.com/4 67 아래는 제가 설정해놓은 캡쳐화면입니다. 그래서 혹시 자바 환경변수 문제일까 싶어 H2DB JDK 설정 해주는 아래 블로그도 참고하여 기존 h2.bat을 메모장에 연결하여 내용을 변경해 보았습니다. 참고) https://ikcoo.tistory.com/80 기존 h2.bat 내용은 @java -cp "h2-1.4.200.jar;%H2DRIVERS%;%CLASSPATH%" org.h2.tools.Console %* @if errorlevel 1 pause 입니다. 이거를 블로그처럼 기존 jdk17파일이 설치돼있는 경로로 설정 ex) @C:\Program Files\Java\jdk-17\bin\java -cp "h2-1.2.127.jar;%H2DRIVERS%;%CLASSPATH%" org.h2.tools.Console %* @if errorlevel 1 pause 위에 말한 환경변수 2개를 scripts 파일에 넣어놓은 경로로 설정 ex) @C:\Program Files\Java\scripts\java17 -cp "h2-1.2.127.jar;%H2DRIVERS%;%CLASSPATH %" org.h2.to ols.Console %* @if errorlevel 1 pause 이렇게 다 해봤는데 안됩니다.. ㅠㅠ
pc에서 띄우는 이미지와 모바일에서 띄우는 이미지를 다르게 바꾸려면 어떻게 하면 좋을까요? <section class="welcome" id="feature1"> <img src="images/bg-welcome.jpg"> </section> 여기서 쓰는 이미지를 바꾸고 싶어요
import requests from bs4 import BeautifulSoup url = "https://search.naver.com/search.naver?where=view&sm=tab_jum&query=" keyword = input("검색어를 입력하세요: ") url = url + keyword print(url) #개발자 도구 > 네트워크 > www.naver.com > 요청 헤더 > user-gent headers = { "User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } req = requests.get(url, headers=headers) html = req.text soup = BeautifulSoup(html, "html.parser") # 게시물별 view 구역 total_area = soup.select(".view_wrap") rank_num= 1 for area in total_area: ad = area.select_one(".link_ad") if ad: continue print(f"<<<{rank_num}>>>") title = area.select_one(".title_area") name = area.select_one(".name") href = area.select_one(".title_link") print(title.text) print(name.text) # print(title["href"] print(href["href"]) print() rank_num += 1 <에러 문구> line 41, in <module> print(title["href"]) File "/User/opt/anaconda3/envs/edu/lib/python3.9/site-packages/bs4/element.py", line 1573, in getitem return self.attrs[key] KeyError: 'href' 안녕하세요, 수업 잘 듣고 있습니다. 저도 블로그 링크를 바로 가져오고 싶어서 print(title["href"]로 가져오려 했으나 keyError가 발생합니다. 우선 대안으로, href 변수를 반들고 따로 링크만 가져올 수 있는 코드를 추가하긴 하였으나 왜 키 에러가 발생하여 print(title["href"]로 링크를 바로 못 가져 오는 것인지가 궁금합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. Enum의 기능과 역할 그리고 멤버 클래스 생성시 id를 Long으로 한 이유를 알고 싶어요
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요, 단/양방향 연관관계에 대해서 질문드립니다. 강사님께서 초반 설계시에는 단방향으로 연관관계 매핑을 최대한 끝내야 한다고 하셨습니다. 그리고, 비즈니스 로직상 양방향 매핑이 필요할 때에는 양방향을 추가하면 된다고 하셨는데요, 설계할 때 그러한 기준에 대해 강의 내용만으로는 아직 감이 잘 안잡히는 것 같습니다. 저같은 경우 연관된 객체 조회가 간편하다는 이유로 생각없이 양방향부터 걸어두었는데, 성능 이슈나 객체 탐색의 편의성간 트레이드 오프에 대해서 생각을 하지 못했던 것이 큰 것 같습니다. 혹시 단방향 -> 양방향으로 갈 때 고려해야 할 나름의 기준에 대해서 인사이트를 주실 수 있는지요 ??
안녕하세요. 강의를 따라 애져에 계정을 만들고 GPU 가상 머신을 만들려고 했습니다. 그런데 Quota가 모자르다고 나오면서 진행이 안되고 있습니다. 강의를 보면 Quota를 늘리는 것에 대한 내용이 간단하게 나오는데요, 이부분에 대해 좀 더 설명해 주실 수 있으신가요? 참고로 저는 East US 2 Region을 사용하고 있고 현재 3개의 vCPU를 사용할 수 있다고 나옵니다.
@Test void AopCheck() { log.info("memberService.class={}", memberService.getClass()); log.info("memberRepository.class={}", memberRepository.getClass()); } 테스트를 실행하면 memberService.getClass()에 해당하는 부분만 CGLIB~~이 적용된, 즉 AOP가 적용된 인스턴스라는 것을 확인할 수 있었습니다. memberRepository.getClass()는 평범한 인스턴스이고 memberService.getClass()만 AOP가 적용된 인스턴스인 이유는 추측건대 @Transactional // proxy가 비즈니스 로직 대신 호출. 성공하면 commit, 런타임 예외가 터지면 rollback public void accountTransfer(String fromId, String toId, int money) throws SQLException { bizLogic(fromId, toId, money); } MemberService내의 메서드에 @Transactional이 붙어서인 것 같습니다. 클래스 레벨에 @Transactional을 붙이지도 않았는데도 클래스 정보를 가져오는 메서드인 getClass()를 통해 AOP가 적용된 인스턴스로 확인되는 이유가 궁금합니다.