학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 회원-주문 관계에서 하나의 회원은 여러 주문을 할수있어서 1:N이라 하셨는데 서버 관점에서 보면 여러 회원이 존재하기 때문에 N:M으로 설계해야 하지 않을까요?? 고객 한명당 트랜잭션 관점으로 설계를 해야하는건지 기준이 따로 있는지 궁금합니다..
Supabase, Next 풀 스택 시작하기 (feat. 슈파베이스 OAuth, nextjs 14)
안녕하세요! 좋은 강의 잘 들었습니다! 강의 중 내용에 관한 질문이 있어 여쭙니다. 현업에서 작은 사이드 프로젝트를 운영중인데 기존에는 Firebase를 사용하다가 SQL DB가 필요해 Supabase로 이전을 고려하다 강의를 듣게 되었습니다. 다름이 아니라 Supabase에서도 REST API 형태를 지원하는 것으로 알고 있는데 강의 내용을 보면, REST API 형태를 사용하는 것이 아닌, 직접 Supabase의 Database에 CRUD 하는 것으로 여겨집니다. 보안이나 코드의 유지 / 보수, 또는 프론트 개발자와 백엔드 개발자의 역할 분리 등 여러 측면을 고려하였을 때 REST API 형태가 아닌 프론트 코드 내에 직접 CRUD 코드가 구현된 이유가 무엇인지 궁금합니다.
npm run start:dev 명령어를 실행을 할 시 아래처럼 타입 에러가 나오고 있는데, 어떻게 해결을 해야 할까요? ㅠㅠ error TS2339: Property 'where' does not exist on type 'string | number | bigint | boolean | [] | { [K in keyof A]: Exact<A[K], any>; }'. Property 'where' does not exist on type 'string'. 13 where: args.where, ~~~~~ src/prisma.extension.ts:25:23 - error TS2339: Property 'where' does not exist on type 'string | number | bigint | boolean | [] | { [K in keyof A]: Exact<A[K], any>; }'. Property 'where' does not exist on type 'string'. 25 where: args.where, ~~~~~
안녕하세요 CSS강의 너무 잘 듣고 있습니다. 강의를 듣다가 폰트 크기 단위에 대해 궁금한점이 있습니다. rem은 html 태그의 폰트크기에 영향을 받아서 html이 16px 이고 p태그가 2rem이면 16px * 2rem = 32px이 된다라고 이해를 하는데 그렇다면 그냥 처음부터 32px이라고 작성하지 않고 2rem 이런식으로 사용하는 이유가 뭔지 궁금합니다.
강의 들으면서 제로초님 RTK GitHub 코드도 보고 있는데요. RTK는 immer가 내부적으로 사용되어 state를 써도 불변성을 자동으로 처리하는 걸로 알고 있습니다. 그런데 https://github.com/ZeroCho/react-nodebird/blob/master/toolkit/front/reducers/user.js 에선 리듀서 마다 state를 쓰는 곳이 있고 draft를 쓰는 곳이 있어서 질문합니다! 역할은 같지만 단지 코드를 명시적이고 의도를 나타내기 위해 구분해서 쓰는 것이라고 생각되는데 구분해서 쓰는 다른 이유가 있는지 궁금합니다.
여기 이 강의를 다듣고 회사 및 기업 홈페이지리를만들고, 1. FIREBASE 강의도 들어서 로그인 기능 더 추가하면 되는거죠? 2. 결제기능도 넣고 싶은데 강의 만들 계획이 있으신가요? 있다면 언제쯤일까요? 3. 카카오지도 API 끌고와서 호갱노노나 부동산지인 같은 홈페이지도 만들어 보고싶습니다. 한국부동산원 API 이런 API를 들고와서 설정하는 방법도 알고싶어요! 아마 1,2,3이 합친다면 웬만한건 다 만들 수 있지않을까요?? 감사합니다
<script> var list =[ { question : "이 중에서 제일 좋아하는 과일을 선택해주세요." options : ["사과", "바나나", "포도", "복숭아", "딸기"] }, { question : "이 중에서 제일 좋아하는 음식식을 선택해주세요." options : ["떡볶이", "짜장면", "파스타", "찌개", "치킨"] }, { question : "이 중에서 제일 좋아하는 반려동물을 선택해주세요." options : ["강아지","고양이","새","토끼","여우"] } ]; console.log(list); </script> 작성한 코드에 options에 오류가 나서 코드가 작동이 안되는데 어떤 오류인지 모르겠습니다.
"4.2) 데이터 캐시" 강의 진행시 npm run dev 로 진행시 { cache: "force-cache" } 설정하여도 캐싱이 안되는거 같은데요 npm run build npm run start 로 진행시에는 캐싱이 동작하고있는걸로 보이나 로깅이 안되는것 같습니다. 강의 영상처럼 캐싱 동작 상태를 로깅을 하려면 어떤 옵션값을 설정 해야하나요 ? 제가 놓친거 같아서 돌려보거나 검색을 해봤는데 못찾아서 질문드립니다. 감사합니다.
안녕하세요. member.getTeam()과 team.getMember()의 동작원리에 대해 이해가 되지않는 부분이 있어서, 구글링을 통해 아래와 같이 정리해보았는데 이렇게 이해하는게 맞을까요? member.getTeam() member.getTeam()을 호출하면, JPA는 내부적으로 MEMBER테이블에서 현재 member의 JoinColumn으로 명시했던 TEAM_ID값(=외래키값)을 가져와서 TEAM테이블의 기본키를 참조하여 해당 Team 데이터를 조회하고, Team 객체를 생성해서 반환한다. 1. member.getTeam()이 호출되면 내부적으로 MEMBER테이블에서 현재 member의 JoinColumn으로 명시했던 TEAM_ID값(=외래키값)을 가져온다. 2. Team테이블의 기본키가 이 외래키와 일치하는 Team 데이터를 찾는 SQL쿼리를 실행한다. 3. 조회된 데이터로 Team객체를 생성해서 반환한다. team.getMember() team.getMember()를 호출하면, JPA는 내부적으로 TEAM테이블에서 현재 team의 기본키값을 가져와서 MEMBER테이블의 외래키를 참조하여 해당 Member 데이터를 조회하고, Member객체를 생성해서 기존 비어있는 리스트에 추가한다. 1. team.getMember()가 호출되면 내부적으로 TEAM테이블에서 현재 team의 기본키값을 가져온다. 2. Member테이블의 외래키인 TEAM_ID가 이 기본키와 일치하는 Member 데이터를 찾는 SQL쿼리를 실행한다. ex) SELECT * FROM MEMBER WHERE TEAM_ID = 1; 3. 조회된 데이터로 Member객체를 생성해서 기존 비어있는 리스트에 추가한다.
안녕하세요, 강의 잘 듣고 있습니다. 하나의 페이지에서 두 개 이상의 데이터를 불러와야 할 때, 리액트에서 그래왔듯이 자연스럽게 데이터를 페칭하는 api 로직을 services/api 폴더로 분리 할 것이라고 생각했는데요, 강의에서는 데이터에 따라 데이터를 페칭하여 렌더링하는 전체 로직을 각각의 컴포넌트로 분리 하는 것을 보고 질문 드리게 되었습니다. 데이터를 기준으로 관심사를 분리할지, 기능을 중심으로 분리할지는 선호의 영역인가요? 아니면 어떤 사전 렌더링의 특수성으로 데이터 페칭 로직은 따로 분할하지 않는 것인가요? 그러면서 동시에 각각의 컴포넌트(AllBooks, RecoBooks)를 별도의 components 폴더로 분리하지 않는 이유도 궁금합니다! 곧 넥스트를 사용한 프로젝트에 참여하게 되는데 폴더 구조를 어떻게 가져가야 할지 고민이 많습니다 ㅠㅠ 팀원들이 모두 넥스트는 처음이라 아직 이렇다 할 기준이 없어서요. 정답이 있는 문제는 아니겠지만 조언 부탁드립니다!!
우선 인터셉팅 라우팅을 버튼, 링크 등을 통해 이동 시 인터셉트된 page를 렌더링하고 새로고침이나 주소창을 통해 이동했을 때 정상(?)적인 page를 렌더링하는 것으로 이해했습니다. 인터셉팅 라우팅 폴더를 만들어야 할 위치가 궁금해서 /test1/test2 에서 Link태그를 통해 /test1 으로 이동할 때 새로고침 시 표시 되는 test1과 intercepted test1을 구분하는 코드를 작성했습니다 "(.)test1" 폴더 위치를 바꿔보면서 어떻게 동작하는 지 확인해보는 과정에서 이해가 되지 않는 부분이 있어서 질문드립니다. 이 폴더구조로 해야 작동하고, 이 폴더 구조는 작동이 안되는게 이해가 안됩니다. 뭔가 (.), (..), (..)(..) 이런식으로 경로 지정이 가능하면 인터셉팅 라우팅 폴더는 어디 있든 상관없어도 될 것 같았는데... 아래 폴더구조가 작동을 안되니 디게 혼란스럽네요 ㅠㅠ
https://www.inflearn.com/courses/lecture?courseId=326750&unitId=72712&tab=QnA&category=questionDetail&q=672478 다른 분이 글을 올리시긴 했는데 입력이 "문제에 첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다." 라고 적혀 있지만 예시 입력에도 공백이 있고, next()를 사용하면 틀리는 걸 보니 공백이 있는 문자열로 수정되어야 할 것 같습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. fail(); 부분에서 오류가 뜨고 이텔릭체로 바뀌지 않습니다. 왜 그런가요? package hello.hello_spring.service; import hello.hello_spring.domain.Member; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; class MemberServiceTest { MemberService memberService = new MemberService(); // 테스트케이스에서는 메서드명 한글로 적어도 된다 @Test void 회원가입() { // given Member member = new Member(); member.setName("hello"); // when long saveId = memberService.join(member); // then(검증) Member findMember = memberService.findOne(saveId).get(); assertThat(member.getName()).isEqualTo(findMember.getName()); } @Test // 예외처리(테스트케이스에서는 정상적으로 작동하는거도 좋지만 예외 처리가 더 중요하다) public void 중복_회원_예외() { // given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); // when memberService.join(member1); try { memberService.join(member2); fail(); } catch (IllegalStateException e) { } // then } @Test void findMembers() { } @Test void findOne() { } }
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 리팩토링 10. 함수를 명령으로 바꾸기 강의에서 6:00 부분에서 설명하시는게 전략패턴 말씀하시는 것 같은데 GoF의디자인 패턴 강의에서 설명해주신 것일까요?? 아직 디자인 패턴 강의는 들어보지 않아서 강사님께서 기억나시냐고 물어보시는게 어떤 부분인지 궁금해서 질문드립니다.
4.0 기준으로 학습하고 있습니다. input.css 파일을 아래와 같이 작성하면 자동으로 Montserrat 폰트 즉 첫번째 줄 폰트가 적용되는건가요? 메인 폰트 적용 방법을 모르겠습니다. @theme { --font-mont: "Montserrat", "sans-serif"; --font-noto: "Noto Sans KR", "Arial", "sans-serif"; /* Color */ --color-deepgreen:#6ab04c; --color-deeporange:#f0932b; }
npx prisma db push 명령어 실행시, 아래와 같은 오류가 발생합니다. Error: P1001: Can't reach database server at aws-0-ap-northeast-2.pooler.supabase.com :`5432` .env 파일 루트 경로에 생성 DATABASE_URL, DIRECT_URL 오타 없이 알맞게 입력 위의 두 조건 모두 만족하고 있는데, 왜 이런 오류가 발생하는 걸까요? 추가로,가이드에 따라 supabase에서 생성한 db가 현재 활성화 상태이거나 running상태인지 어떻게 알 수 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] view 계층과 주고 받을 때는 dto로 주고 받아야 하니 들어올 때 form을 사용했는데, 지금처럼 em.createQuery("select i from Item i", Item.class).getResultList(); 이런 repo 코드를 정제없이 그대로 return 해주는 경우 Entity를 직접 전달하고 있는 것 아닌가요 ?? 잘못 이해하고 있는 부분에 대해 짚어주시면 감사하겠습니다. 만약 잘 이해하고 있고, 예제라서 이렇게 처리한 것이라면, 정제하는 과정이 서비스 단에서 일어나는게 좋을까요 ? 컨트롤러 단에서 일어나는게 좋을까요 ?