spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.datasource.driver-class-name=org.h2.Driver package hello.hellospring; import hello.hellospring.repository.JdbcMemberRepository; import hello.hellospring.repository.MemberRepository; import hello.hellospring.service.MemberService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; @Configuration public class SpringConfig { private final DataSource dataSource; public SpringConfig(DataSource dataSource) { this.dataSource = dataSource; } @Bean public MemberService memberService() { return new MemberService(memberRepository()); } @Bean public MemberRepository memberRepository() { // return new MemoryMemberRepository(); return new JdbcMemberRepository(dataSource); } } h2 db에 잘 들어가지고, 코드도 강의 보면서 따라 작성하였는데 회원 목록을 들어가거나 회원 등록을 하려고 하면 웹 페이지가 에러 뜹니다 왜 이러는건가요?
안녕하세요 회원 서비스 테스트 강의 듣다가 이해 안가는 부분이 있어서 질문드립니다 12:11 에서 MemoryMemberRepository memberRepository = new MemoryMemberReposiory(); 이 코드를 왜 작성해야하는지 이해가 안갑니다. clearStore()를 할거면 그냥 위에 적힌 memberService.memberRepository.clearStore(); 로 해도 같은 기능을 하는 코드가 아닌가요? 그리고 memberService.memberRepository를 사용하면 하나의 회원repository instance만 사용하므로 회원 서비스 코드를 public class MemberService{ private final MemberRepository memberRepository; public MemberService(MemberRepository memberRepository){ this.memberRepository = memberRepository; } } 위와 같이 작성하지 않아도 되는거 아닌지 궁금합니다
영상에서 알려주신대로 파일을 설정하고 실행하면 다음과 같은 에러가 발생합니다. 잘 안보일 수 있어서 아래에 적습니다. Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/run/desktop/mnt/host/e/Study-App/codecamp-backend/class/section04/04-07-docker-compose-with-mongoose-board2/backend/index.js" to rootfs at "/myfolder/index.js": mount /run/desktop/mnt/host/e/Study-App/codecamp-backend/class/section04/04-07-docker-compose-with-mongoose-board2/backend/index.js:/myfolder/index.js (via /proc/self/fd/9), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type 결국 경로를 못찾는다는 얘기로 이해했는데요. 그래서 yaml파일을 다음과 같이 고쳐봤습니다. 그러면 실행이 되는 것처럼 나오지만 이러한 에러가 발생합니다. 근데 이상한건 다른 터미널에서 docker ps를 실행하면 다음과 같이 하나만 실행된 것처러럼 나오는데... 막상 현재 실행되고 있는 터미널에서 ctrl + c를 하면 다음과 같이 2개가 중지되는걸로 나옵니다. 어디서부터 잘못된 걸까요 ㅠ_ㅠ
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
코드를 작성하던 중 안드로이드 스튜디오에서 Navigator.of(context).pop() 을 Navigator.pop() 으로 자동완성 시켜주어 모르고 쓰던 도중 보니 Navigator.pop(true)라고 쓰면 add cast를 하라며 Navigator.pop(true as BuildContext)라고 고쳐주더군요. 찾아보니 Navigator.pop(true as BuildContext)와 Navigator.of(context).pop(true)는 완전히 같은 기능을 하는 것 같은데 공부가 필요한 내용일까요??
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안녕하세요 선생님 해당 강의내용에서 당겨서 새로고침하는 리프레쉬 인디케이터를 사용하면 상단에 로딩바가 하나 도는데 다시 화면이 리프레쉬되면서 화면 중앙에 로딩바가 도는 것이 2중 로딩으로 보여지는 것 같아서 pagination_list_view.dart 파일내 RefreshIndicator( onRefresh: () async { ref.read(widget.provider.notifier).paginate(forceRefetch: true); }, 위 코드의 forceRefetch: true 를 삭제하는게 더 낫겠다는 판단에 RefreshIndicator( onRefresh: () async { ref.read(widget.provider.notifier).paginate(); }, 해당코드를 사용 하려 하는데요 근데 이렇게 포스리펫치를 삭제 하게 되면 [홈] 메뉴와 [음식] 메뉴에서는 정상적으로 REQ RES 포스트 겟 요청이 가는데 [주문] 메뉴에서는 아무런 응답이 없어서 새로고침이 되지 않습니다. 현재 강의에서 장바구니에서 주문완료를 눌러도 장바구니 내용이 비워지지 않는 문제와 로딩이 이중으로 되는 문제를 확인했는데 장바구니 부분은 주문완료버튼을 눌렀을때 주문내용을 비워버리면 해결 될 것 같다는 개념이라도 잡히는데 포스리펫치 부분은 어디서 손을 대야 될지 아직 개념이 잡히지 않는데요 홈메뉴와 음식메뉴에서는 forceRefetch:true가 아니더라도 서버에서 자료를 받는 로직이 있는데 주문메뉴에서는 앱에서 발생된 주문건에 대해서만 받아오는 로직이라 그게 아닌가? 싶은 생각만 듭니다. 1.앱을 처음 로딩해서 주문메뉴에 들어갔을때 -> 로딩이 강제로 되니 새로운 주문건이 화면에 표시됨 2.포스리팻치 true일경우 -> 강제 새로고침기능이 작동하니 새로운 주문건이 화면에 표시됨 3.포스리팻치를 삭제하고 리프레쉬인디게이터만 사용할경우 -> 새로운 주문건이 표시가 안됨. 어떤 부분을 확인하거나 살펴보는게 좋을지 힌트를 주셨으면 좋겠습니다. 만일 forceRefetch:true를 꼭 사용해야 되는 설계라면 로딩바 대신에 스켈레톤을 사용한다면 2중 로딩느낌이 안날 것 같다는 생각이 듭니다.
The Random Wheel can be easily accessed through various digital platforms. It is available as a standalone website, a feature in mobile apps, or even as a widget in browser extensions. This accessibility allows users to utilize the Random Wheel conveniently and effortlessly, regardless of their location or device.
도커파일로 이미지 빌드 시 멀티 스테이지로 테스트를 실행하려고 합니디. 테스트 실행 시 testcontainers mysql를 도커로 실행되어야 하는데 가능한건지 궁금합니다. 여러 시도를 했지만 실패했네요.. 이미지 빌드 시가 아닌 컨테이너 실행 후 내부에서는 도커가 실행되는 것을 확인했습니다. 도커 파일의 RUN에서는 컨테이너가 실행되지 않았습니다.
🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨 질문 하시기 전에 꼭 확인해주세요 - 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다) - 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다) - 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢) 질문 하실때 꼭 확인하세요 - 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X) - 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지) - 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우) - 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요 - 강의의 몇 분 몇 초 관련 질문인지 알려주세요! - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 초심자의 입장에서 사실 저러한 기능을 보면 그냥 처음에 만들때는 useCallback, React.memo 를 다 써보고 나중에 문제 생기면 그때 바꿔쓰면 되지 않나? 라는 생각이 듭니다. 마치 평소에는 const 로 다 만들고, 해보다가 let 으로 변경이 필요하다 싶으면 let 으로 바꾸는 것처럼요. 이걸 어떤 기준을 잡고 사용해야 할까요? 정확한 기준이 있는지도 궁금합니다. 렌더링 되는데 걸리는 시간이 몇 초 이상일시 변경한다거나 하는 기준이 있을까요?
안녕하세요! 강의 잘 듣고 있습니다. 강의를 듣는 중 질문이 있어서 글 남기게 되었습니다. 현재 섹션 2 - 실습3) Tomcat 서버에 배포하기 까지 시청하였습니다. Tomcat은 Jenkins 컨테이너와 별개로 따로 구성되어 있는 것으로 이해하였습니다. 로컬 PC에 (또는 Container에) Tomcat 서버를 구성하는 과정에 대해서는 지금까지 강의 내용에서 못 본 것 같은데, 참고할 수 있는 자료가 있을까요?
for i range() 를 사용하여 여러 페이지를 출력할 때 9페이지까지는 문제 없이 출력 되는데 10페이지 이후로는 print(f"{pageNum}페이지입니다.===")는 정상 출력 되지만 페이지 내용은 못 가져옵니다 for range 를 거치지 않고 따로 101이나 111처럼 특정 페이지의 start 값을 넣었을 땐 출력이 돼서 무엇이 문제인지 모르겠습니다
사용자가 많지 않고 일반 커뮤니티 같은 경우에는 좋아요 개수가 많이 몰릴 일이 없다고 생각해서 PessimisticLock을 적용하려고 합니다. 제가 생각했을 땐 인스타나 그런 대규모 사이트의 좋아요는 PessimisticLock을 적용하면 성능 저하가 뚜렷하게 나타난다고 생각합니다. -> 레디스 사용이 베스트 토이프로젝트 규모의 SNS는 PessimisticLock으로 구현하는게 비용도 들지 않고 데이터 정합성이 보장된다고 판단했습니다. 혹시 제가 틀린 거나 더 나은 방법이 있을까요? 항상 감사합니다! 아 추가로 newFixedThreadPool은 왜 32로 설정하는지도 궁금합니다!!