묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
엔티티 분리의 기준
안녕하세요 영한님!이전 게시글에서 질문의 연장선 느낌이지만, 별도의 주제인 것 같아서 글을 따로 남깁니다. 강의에서 주문은 '결제'까지 포함하는 비즈니스 트랜잭션의 단위이고, 배송은 '물류'라는 별개의 프로세스다 라는 이유로, 주문 엔티티와 배송 엔티티를 분류하였는데요. 엔티티를 분리할 수 있는 기준을 어디까지 고려해야 하는지 궁금합니다. Application예를 들면, 회원(이메일, 비밀번호, 실명, 닉네임, 성별) 엔티티가 있다면,Application Server에서의 인증/인가 프로세스를 고려하여, (이메일, 비밀번호), (실명, 닉네임, 성별) 이라는 별개의 엔티티로 분리할 수 있을 것 같거든요. 이런식으로 Application 을 고려해서 설계를 해도 괜찮을까요? 화면또 다른 예를 들면, 배달의 민족에서 가게 를 생각해보면 가게 목록 페이지에서는 가게의 전화번호, 주소 같은 정보는 보여주지 않고, "가게 정보" 라는 페이지에서만 구체적인 가게 정보들을 보여주는데요.만약 가게와 가게 세부 정보 라고 따로 분리한다면 가게 목록 페이지를 구성할 때 가게 세부 정보는 읽지 않고 가게 컬럼만 접근할 수도 있을 것 같습니다. 이런식으로 엔티티를 분리하였을 때 얻는 이점도 존재할 것 같고, 복잡도가 증가한다는 단점도 존재하는 것 같습니다. 처음에는 비즈니스 요구사항에 초점을 두고 모델링하고, 개발을 진행하면서 엔티티 설계를 조금씩 바꾸는게 좋을까요? 처음부터 너무나 많은 걸 고려하면 오버엔지니어링이 되거나 유연성이 떨어질 것 같고, 반대의 경우에도 나중에 Application 코드를 바꾸는 데 많은 자원이 필요할 것 같습니다. 영한님의 생각은 어떠신지 궁금합니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
synchronized 메서드와 join 관련 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.만약 무한정 대기할 수도 있는 상황에서 t1.join(50);t2.join(50); main의 코드를 이렇게 바꿔봤는데 결과가 똑같더라구요 이게 왜 그런지 알고 싶습니다.
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
Store 엔티티를 추가했을 때의 관계
안녕하세요 영한님!강의를 들으면서 쇼핑몰 요구사항을 조금 더 확대해서 직접 모델링해보고 있습니다. (Store, Delivery, ...)엔티티를 분류하고 개념적 모델링, 논리적 모델링을 진행하면서 몇 가지 궁금한 점이 있어서 질문드립니다. 현재 강의에서는 Order - OrderItem - Product 관계가 존재했고,만약 Store와 Product 사이에 "무엇"을 등록한다 라는 관계가 존재한다면,Order - OrderItem - Product - Store 이렇게 관계가 형성될 것 같습니다. 질문 1. Order와 Store 관계Order와 Store 사이에, "어디에서" 주문한다 라는 관계가 있다고 볼 수 있는지 궁금합니다.(비즈니스 적으로 의미가 있는지에 따라 관계 여부를 결정하는게 맞을까요?) 질문 2. 만약에 관계가 존재한다고 생각하면 Order와 Store를 직접적으로 관계를 맺어주는게 좋을지, 아니면 그래프 탐색을 통해 관계를 참조하는게 좋을 지 궁금합니다.사실 Order - OrderItem - Product - Store 순으로 모두 Join 하면, 직접적인 연관관계를 맺지 않아도 원하는 데이터를 조회할 수 있을 것이라고 생각하는데요. 만약에 Order와 Store만으로 구성된 화면이 존재하거나, Store 정보를 바탕으로 Order를 필터링 해야한다면, Order에 Store의 식별자를 가지고 있으면 편하게 조회할 수 있을 것 같더라고요.다만, 이렇게 되면 화면이나 Api에 의존적이게 모델링되는 것 같은데, 이러한 설계 방식이 괜찮은 방식인지 궁금합니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
프론트엔드도 도커 + nginx 기반 배포 추가 강의 가능하실까요
안녕하세요 강의 커리큘럼은 백엔드 + mysql까지만 ec2에 도거 기반 배포하셨는데 풀스택(Next.js 또는 React.js + springboot + mysql)으로도 배포하는 보충강의도 제작 가능하실까요 ~ ?
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
N8N에 data table이 추가 되었네요.
airtable 무료로 쓰고 있는데, 무료도 한계가 있어서이것 저것 찾아보고 있는데, 반가운 소식이네요. 아직 beta여서 별 기능이 없지만, 더 기능이 추가 될꺼라 생각이 되네요. airtable 대신 사용을 해봤는데, 사용하는데 무리가 없네요. data table 노드가 생겨서 함 글을 남겨봅니다.
-
미해결
서브넷 관련 질문
서브넷 관련 강의도 찍어서 올려주시면 감사하겠습니다.
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-1)
18강 자식 작업의 메타데이터 상속 관련 강의 자료 문의
안녕하세요~18강 8:35 쯤 강의자료에 자식 작업은 부모작업의우선순위 실행중인액터로컬변수를 상속한다고 되어있는데 이때 실행중인 액터에 취소선이 그어져있는 이유가 있을까요?혹시 의미가 있는건지...궁금합니다감사합니다
-
미해결입문자를 위한 LangChain 기초
system 메세지는 정의가 되어 있는 건가요?
안녕하세요. 소스 내용중에 아래와 같은 것이 있습니다. ("system":"이 시스템은 여행 전문가 입니다."),("user":"{user_input}"), 사용자의 질문이 뭐가 들어올지 모르는 상황에서 여행 전문가라고 지정하는 것이 의미가 있는 것인지요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
receive하는 부분과 send하는 부분의 차이
강의를 쭉 듣다 궁금한게 생겨서 질문올립니다강의에선 receive하는 부분에서는 lock을 걸지 않고, send하는 부분에서는 lock을 걸어서 경합을 방지해주는데요 send도 receive도 둘다 async계열의 함수를 사용해서 비동기로 작동하기때문에 멀티쓰레드가 들어갈거같은데요. 왜 send에만 lock을 걸어서 경합을 방지하고, receive에는 lock을 걸지 않는지가 궁금해요
-
미해결아바타 커뮤니티앱 만들기 (React Native Expo)
키보드 이슈 관련 해결 질문
윈도우+안드로이드 환경에서 KeyboardAwareScrollView가 동작하지 않아 React Native 문서를 보고 KeyboardAvoidingView component를 사용하려고 시도 했습니다.import Button from "@/components/CustomButton"; import DescriptionInput from "@/components/DescriptionInput"; import TitleInput from "@/components/TitleInput"; import { useCreatePost } from "@/hooks/queries/useCreatePost"; import useKeyboardOffset from "@/hooks/useKeyboardOffset"; import { ImageUri } from "@/types"; import { zodResolver } from "@hookform/resolvers/zod"; import { useNavigation } from "expo-router"; import { useEffect } from "react"; import { FormProvider, useForm } from "react-hook-form"; import { KeyboardAvoidingView, ScrollView, StyleSheet } from "react-native"; import z from "zod"; export default function PostWriteScreen() { // ... const { isKeyboardShown, keyboardVerticalOffsetValue } = useKeyboardOffset(); // ... useEffect(() => { navigation.setOptions({ headerRight: () => ( <Button label="Save" size="medium" variant="standard" onPress={postForm.handleSubmit(onSubmit)} /> ), }); }); // ... return ( <FormProvider {...postForm}> <KeyboardAvoidingView behavior="padding" keyboardVerticalOffset={keyboardVerticalOffsetValue} enabled={isKeyboardShown} style={{ flex: 1 }} > <ScrollView style={styles.container} contentContainerStyle={styles.contentContainer} > <TitleInput /> <DescriptionInput /> <DescriptionInput /> <DescriptionInput /> <DescriptionInput /> </ScrollView> </KeyboardAvoidingView> </FormProvider> ); } const styles = StyleSheet.create({ container: { flex: 1, }, contentContainer: { flexGrow: 1, padding: 16, gap: 16, }, }); import { useEffect, useState } from "react"; import { Keyboard } from "react-native"; import { useSafeAreaInsets } from "react-native-safe-area-context"; export default function useKeyboardOffset() { const [isKeyboardShown, setIsKeyboardShown] = useState<boolean>(false); const insets = useSafeAreaInsets(); const verticalInsets = insets.top + insets.bottom; const keyboardVerticalOffsetValue = (Keyboard.metrics()?.height || 0) + verticalInsets + 50; useEffect(() => { const showSubscription = Keyboard.addListener("keyboardDidShow", () => { setIsKeyboardShown(true); }); const hideSubscription = Keyboard.addListener("keyboardDidHide", () => { setIsKeyboardShown(false); }); return () => { showSubscription.remove(); hideSubscription.remove(); }; }, []); return { isKeyboardShown, keyboardVerticalOffsetValue }; }단순히 Keyboard 문서를 확인하니 event listener 부분이 있어 그걸 참고하여 metric().height 만큼 offset을 주고 비슷하게 동작은 하도록 작성했습니다. 추가적으로, 아랫 부분이 조금 짤려서 임의로 50을 추가했습니다.이미 비슷한 질문이 올라 왔길래 '안드로이드 KeyboardAwareScrollView 이슈 수정 & 키보드 상태 커스텀 훅 만들기' 강의 확인하고 훅으로만 분리했는데 강의 중 상세 코드는 다르기도 하고 iOS 환경에서는 테스트를 할 수가 없어서 이런 식으로 짜도 되는지, 그리고 위에서 언급한 50에 해당하는 공간이 왜 필요한지 질문 드립니다.
-
미해결프로들만의 차별화된 엑셀 데이터 분석과 차트 시각화
38강 2분53초
VLOOKUP 두번째 절때참조할때 절떄참조범위를 L5:N10L6:N10 둘다가능한거죠?
-
미해결R로 배우는 통계
강의자료 다운로드 방법
기존 Q&A 링크 및 학습 창에서는 실습용 데이터(성적 자료)가 확인이 안되는데, 어디서 다운로드가 가능할까요?
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
perplexity는 좋은 ai인가요?
결제를 여러군데 하고 있는데 perplexity ai 까지 API를 결재해야는지 여쭤봅니다.perplexity ai 로 검색했을때 좋은 결과를 얻지 못한거 같아서요n8n자동화 워드프레스 운영시 perplexity ai api를 반드시 결재해야 하는지 여쭤봅니다. 그게 아니면 14강은 건너뛰어도 되는지 여쭤봅니다.
-
미해결타입스크립트로 배우는 리액트(React.js) : 기초부터 최신 기술까지 완벽하게
퀴즈 활성화 안됨
강의를 다 들었는데 섹션4의 퀴즈가 활성화 되지 않아 수료증을 못받고 있습니다 ㅠㅠ 혹시 뭐 빠트렸나 해서 섹션 4번 강의 다시 다 들었는데도 안되네요.. 확인부탁드립니다
-
미해결기초부터 따라하는 디지털포렌식
strings_1640.log
strings .\dumps\1640.dmp > strings_1640.log 명령어를 입력했을 때 오래 걸린다고 하셨는데 저는 아무 반 ༔없이 프롬프트가 바로 뜹니다. Notepad++에도 파일을 올려보면 강의와 같은 내용이 안 뜨고 무슨 라이선스.. 이런게 뜨는데 뭐가 문제일까요?
-
미해결Git & GitHub, 원리부터 차근차근 - 근본깃 [완성편]
rebase 와 3-way merge 의 근본적인 차이
안녕하세요.rebase 단원(이전 강의)의 설명을 들으면서, rebase 란 fast-forward merge 를 수행할 수 있게끔 commit history 를 flatten 해 주는 작업으로 이해했는데요.rebase 과정에서도 conflict 가 발생하고, 이것을 처리해줄 필요가 있다면, 그냥 3-way merge 에서 conflict 를 처리하는 것과 근본적인 차이가 있을까요?제 생각으로는 rebase 과정에서는 branch 에서 떨어져 나간 commit 들이 생기고, 3-way merge 에서는 기존 commit 들이 병합된 branch 안에 들어있다, 는 차이 정도밖에 없는 것 같은데요.굳이 3-way merge 말고 rebase 를 사용해야 할 필요가 있을까요?
-
해결됨앨런 Swift Concurrency for Swift 6 (Part-1)
withCheckedContinuation 에서 resume 호출의 안정성 보장 질문
안녕하세요~ 강의 잘 보고 있습니다. withCheckedContinuation 에서 resume 호출에 대해 질문이 있습니다.11강의 12:56 쯤에서 'withCheckedContinuation 에서는 resume 을 두번 호출해도, runtime 에서 알아서 두번째 resume 되는걸 체크해서 크래시가 발생하지 않게 해준다고 공식문서에서 나와있다. 즉, 안전하다' 라고 설명을 해주시는데요 (12강에서도 Checked 는 안전하다고 나와있구요),제가 확인을 해보았을때는 withCheckedContinuation 에서도 resume 을 두번 호출하면 런타임 에러가 발생하는 것을 확인했습니다.다만 CheckedContinuation과 UnsafeContinuation 의 케이스별 에러 로그 / 콘솔 로그가 조금 달랐습니다.애플 문서에서는 checked continuation 만이 오용(misuse)에 대한 detect 및 diagnose 를 제공한다고 되어있는데요, 이를 통해 제가 유추할 수 있는건 withCheckedContinuation 은 런타임에 "안전" 하다기 보다는, resume 을 잘못 사용했을때 좀 더 자세한 에러 로그(여러번 호출시) 및 콘솔 로그(미호출시)를 통해 개발자가 resume 을 한번만 올바르게 호출할 수 있도록 도와주는 역할을 한다는 것이었습니다.혹시 withCheckContinuation 에 대해 강의해서 설명해주신 "안전" 의 의미와, "두번째 resume 되는걸 체크해서 크래시가 발생하지 않게 해준다" 의 문서 레퍼런스를 알 수 있을까요?참고로 체크한 코드는 다음과 같습니다func fetchGreeting(completion: @escaping (Result<String, MyError>) -> Void) { completion(.success("hello")) } enum MyError: Error { case bye } func asyncFetchGreeting() async throws -> String { let greeting = try await withCheckedThrowingContinuation { continuation in fetchGreeting { greeting in continuation.resume(with: greeting) // 📍 resume 호출부 } } return greeting } Task { do { let greeting = try await asyncFetchGreeting() } catch { } }감사합니다.
-
미해결실전! Querydsl
fetchResults()는 더이상 권장되지 않는다는데 맞나요?
찾아보니 아래처럼 나옵니다.```fetchResults() 는 Querydsl 5.x부터 deprecated(더 이상 권장되지 않음) 처리되었습니다. fetchResults() 는 count 쿼리와 content 쿼리를 내부적으로 두 번 실행해서 결과를 가져옵니다.즉, 전체 개수(total count)와 페이징된 결과(results)를 한 번에 반환하려고 했는데,JPA 환경에서는 count 쿼리 최적화 문제SQL이 복잡해질 경우 성능 저하 문제Querydsl 5.x 이후로는 직접 count 쿼리와 content 쿼리를 분리해서 호출하는 방식을 권장합니다.```
-
미해결타입스크립트로 배우는 리액트(React.js) : 기초부터 최신 기술까지 완벽하게
styled-components 관련 질문
안녕하세요 css 쪽 학습 중에 있는데, style-component에 작성중인데 강사님의 화면과 다르게 실행은 제대로 되나 아래 화면과 같이 그냥 문자열처럼 갈색 표시가 되는데 그래서 css 문구 추천이 안되는 것 같은데 어떤 문제인가요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강기간 연장 부탁드립니다.
수업을 듣고싶은데 일이 많아서 못들었어요.. 10월 말까지 볼수있도록 기간 연장 요청드립니다. 감사합니다 !!