묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Json으로 말아넣는다는 것 질문
자바 ORM 표준 JPA 프로그래밍 11분 부터 나오는 내용중 데이터의 양이 많아지면 테이블을 단순하게 유지한다면서Json으로 말아넣는다는데 이게 어떤 방식을 의미하는 것인가요?
-
미해결오토캐드 2022 기초를 탄탄하게 초급과 중급까지 (자막제공)
예제 문의
중급 7강 듣는데 초급 예제는 받았었는데, 중급 PPT 예제가 어디 있을까요...
-
미해결Vue.js + TypeScript 완벽 가이드
두번쨰 프로젝트 권한요청
죄송하지만 유효기간이 지나 한번만 다시 요청 드리겠습니다!weotjqw@naver.com
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
Controller / application Service / Domain 의 역할 구분
안녕하세요 강의 잘 듣고 있습니다.헥사고날 아키텍쳐 부분 강의를 듣고, 궁금한 부분이 새겨서 질문 남깁니다!Application Service(이하 서비스) 에서 도메인부분을 분리 하여 객체의 상태 변화에 대한 부분을 처리하도록 하고, 서비스에선 Repository와 소통해서 필요한 객체나 컨트롤러에서 정보(예를 들어 수정 정보 등등) 등등을 얻어서 도메인 부분에 위임한다고 이해했습니다. 그렇게 도메인 영역을 분리하면 테스트에 용이하다는 것은 이해했습니다. 그런데 실제로 토이프로젝트에 적용해보려고 코드를 수정하는 중에 예를 들어 게시글을 수정하는 과정이라면 컨트롤러에서 처음 요청을 받을 때 postId, updateRequest를 받아서 서비스에 업데이트를 요청하고, 다시 서비스에선 아이디를 통해 Post를 찾고, PostDomainService(가칭)에 Post와서 updateRequest를 넘겨 수정한다면 거의 같은 내용의 파라미터를 굳이 2 계층을 건너 불필요한 위임이 반복 된다고 생각했습니다. 궁금한 것은 2가지 입니다.이런 경우엔 PostDomainService 클래스를 만들기보단 Post 객체 자체에서 업데이트를 처리하는 것이 맞을까요? - (1번 코드)도메인과 도메인 서비스의 차이는 객체의 상태(도메인)와 객체의 행동(도메인 서비스) 일까요? 엔티티와 도메인의 구분이 잘 이해가 되지 않습니다. //== 업데이트 로직 ==// public void updateInfo(PostUpdateReqDto updatePost) { this.title = updatePost.getTitle(); this.content = updatePost.getContent(); } // 기존 서비스에서의 로직 @Transactional public PostUpdateResDto updatePost(final Long postId, final PostUpdateReqDto postUpdateReqDto) { Post findPost = postRepository.findWithMemberByPostId(postId); Post updatedPost = postDomainService.updatePost(findPost, postUpdateReqDto); // 위 과정에 생기면 사라지는 메서드 // findPost.updateInfo(postUpdateReqDto); checkForbiddenWord(findPost); return new PostUpdateResDto(findPost); }
-
해결됨[2025 리뉴얼] 스스로 구축하는 AWS 클라우드 인프라 - 기본편
로컬에서 rds 접속
안녕하세요, 좋은 강의 감사합니다. 로컬에서 rds를 연결하고 싶은데 궁금한 것이 생겨서 질문을 남기게 되었습니다. 현재 private subnet에 rds를 생성한 상태에서 제 로컬 컴퓨터에 스프링을 사용해서 rds에 접근하려고 하는데 vpc가 달라서 접속이 되지 않습니다. 이를 해결하기 위해서 스택오버플로우를 참고하니 로컬 컴퓨터의 ip 주소를 rds 인바운드 규칙에 넣어서 하면 된다고 하길래 적용해봤더니 잘 되지 않습니다.보통 어떤 식으로 로컬에서 rds로 접근하는 것인가요?배스천을 사용해서 rds mysql workbranch에는 접근이 가능하도록 설정을 했습니다. 질문 읽어주셔서 감사합니다.
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
4-8. 지표 정의 연습 문제
안녕하세요 카일님!문제 정의처럼 본질적인 걸 설명해주시는데도 활용도가 높아서 매 챕터마다 놀람을 금치 못하면서, 강의 너무x100 잘 듣고 있습니다 ㅎㅎ배운 부분들을 활용하면서 지표 정의 연습 문제를 풀어봤습니다.피드백 부탁드려요 :) #1. 기능이 잘 작동하는지 확인하려면?1-1. 문제 정의 프로세스Q. 기능이 잘 동작한다면 어떤 현상이 발생하고 있을까? A. 해당 기능을 클릭한다.Q. 위 현상이 왜 발생했을까? A. 고객이 원하는 정보를 빠르게 제공했기 때문이다.Q. 고객은 이런 상황에 어떻게 할까? A. 해당 페이지에서 버튼 클릭, 다음 스크린 이동 등 특정 이벤트를 수행한다.1-2. 핵심 지표 & 보조 지표 정의핵심 지표는 무엇인가?기능별 CTR (click / view)보조 지표는 무엇인가?클릭한 신규 유저의 해당 세션 내 홈화면 Duration Time → 빠르게 정보를 찾을 수 있었는지 확인기존 유저의 경우 이미 페이지 레이아웃을 알고 있으므로 신규 유저만 따로 구분해서 보고자 함다음 페이지에서의 이벤트 발생 여부 → 원하는 정보를 찾았는지 확인ex. 최상단의 배너 컴포넌트를 클릭한 후 ‘할인 쿠폰 받기’ 버튼을 클릭했는지만약 아무 이벤트가 발생하지 안혹 다시 홈화면으로 이탈한다면, 기능을 클릭했다고 하더라도 원하는 정보를 제공했다고 보기 어려움1-3. 멘탈 시뮬레이션핵심 지표(CTR)을 어떻게 올릴 수 있을까? input 지표는 무엇일까?신규 유저를 대상으로 온보딩 프로세스 진행해 더 빠르게 정보를 제공 ⇒ ab 테스트로 온보딩 제공(실험군), 미제공(대조군) 유저의 한 세션 내 duration time 비교서브 타이틀을 추가해 클릭 시 표시될 정보에 대한 힌트 제공ex. ‘이런 음식 어때요’ 타이틀 하단에 “지금 다른 사람들이 많이 주문하고 있어요!” 텍스트 추가 / ‘동네 맛집’ 타이틀 하단에 “지금 이웃들이 가장 많이 찾는 맛집” 텍스트 추가 #2. 검색 만족도 지표2-1. 문제 정의 프로세스Q. 검색 기능에 만족한다면 어떤 현상이 발생하고 있을까?A. 검색 결과를 클릭한다.Q. 위 현상이 왜 발생했을까? A. 검색을 통해 찾고자 했던 정보가 표시됐기 때문이다.Q. 고객은 이런 상황에 어떻게 할까? A. 검색 기능을 다음 앱 방문 때도 사용한다.2-2. 핵심 지표 & 보조 지표 정의핵심 지표는 무엇인가?search, search_result 페이지별 검색 결과 CTR (click / view)검색 기능 사용 주차별 리텐션율 (전주 대비 이번 주 search, search_result 페이지 vIew 수)꼭 매번 앱을 사용할 때마다 검색 기능을 사용하지는 않을 수 있기 때문에 한 주로 기간을 정의함보조 지표는 무엇인가?검색 결과를 클릭한 유저의 결제 전환율 (결제를 진행한 유저 수 / search OR search_result 페이지에서 검색 결과를 클릭한 유저 수)실제로 매출로까지 이어졌는지 파악하고자 함2-3. 멘탈 시뮬레이션만약 검색 결과에 만족하지 않았다면 유저는 어떻게 행동할까?홈 화면으로 이탈한다. (search ⇒ home)재검색을 해본다 (search ⇒ search_result ⇒ search ⇒ search_result) #3. 검색 필터 기능의 활성화 지표3-1. 문제 정의 프로세스Q. 필터 기능이 잘 사용되고 있다다면 어떤 현상이 발생하고 있을까? A. 검색 필터 결과를 클릭한다.Q. 위 현상이 왜 발생했을까? A. 원하는 조건을 적용해 많은 검색 결과 중 본인에게 필요한 정보만 볼 수 있었기 때문이다.Q. 고객은 이런 상황에 어떻게 행동할까? A. 필터 기능을 다시 사용한다.3-2. 핵심 지표 & 보조 지표 정의핵심 지표는 무엇인가?검색 필터 결과 CTR활성화를 ‘본인에게 필요한 정보를 찾는 것’으로 정의 → 필요한 정보를 찾았다면 검색 결과를 클릭했을 것보조 지표는 무엇인가?검색 필터 기능 주차별 리텐션율필터 기능을 통한 검색 프로세스가 만족스러웠다면 다시 사용했을 것검색 필터 사용 ↔ 미사용 유저의 결제 전환율 편차일종의 가드레일 지표로 사용. 퍼널 전체에 영향을 얼마나 미치는지 확인3-3. 멘탈 시뮬레이션핵심 지표를 어떻게 개선할 수 있을까? input 지표는 무엇일까?‘필요한 정보’를 더 쪼개서 생각해보면 아래 2가지로 나눌 수 있음A) 구매하고자 하는 상품군이 뚜렷하여 해당 정보를 찾는 것 (ex. 운동할 때 입을 반바지를 사기 위해 카테고리 필터에서 ‘트레이닝 복’을 선택)B) 아직 구매하고자 하는 바가 뚜렷하지 않아 필요 없는 정보는 제외하는 것 (ex. 10만원 이상은 지불할 의사가 없어 가격 필터를 10만원 이하로 설정)A를 원하는 유저에게는 더 상세하게 필터에서 선택할 수 있는 값을 제공B를 원하는 유저에게는 직접 값을 입력하는 방식으로 드래그 형식으로 범위를 지정할 수 있도록 UX 제공필터 기능에서 유저가 아하 모먼트를 느끼지 못 했다면 어떻게 행동할까?필터 기능이 복잡하다고 느껴서 이탈할 수도 있을 듯 → 검색 페이지에서 홈 화면으로의 이탈율을 파악#4. 배달 서비스에서 가장 중요한 지표는?4-1. 핵심 지표 정의주차별 리텐션율일반적인 배달 비즈니스의 모델은 매출원을 ‘수수료’, ‘광고 및 프로모션’, ‘파트너사 수수료’, ‘기타 수익원’ 총 4가지로 나눌 수 있음또한 수수료가 가장 큰 수입원인 경우가 많음수수료의 선행 지표로는 아래 3가지가 있음A. 주문 건수를 늘리거나B. 객단가를 높이거나C. 더 자주 주문을 하게 만들거나A는 프로모션을 통해 일시적으로 증가시킬 수 있지만 지속 가능한 방안이 아님.또한 유저의 관점에서 생각해보면 옷은 하루에도 5벌, 100벌도 살 수 있지만 음식은 하루에 5끼, 10끼 먹으라 할 수 없음 (허헣)B는 3-side market인 배달 비즈니스 모델을 고려했을 때 가맹점들에게 강제할 수 없으므로 어려움C는 가맹점, 라이더와 별개적으로 관리할 수 있는 지표로, 플랫폼의 편의성을 높이는 등의 액션으로 통제가 가능함따라서 주차별 리텐션율을 핵심 지표로 설정함4-2. Action Item 도출서비스를 다시 사용하는 유저에 대한 가설은 아래와 같음배달 앱이 편리하다배달 앱이 경쟁사에 비해 혜택을 많이 준다입점된 가게가 많다리뷰가 많다부가적인 서비스를 제공한다 (ex. 쿠팡이츠 - 쿠팡플레이)데이터를 확인할 수 없으므로 개인의 경험을 토대로 생각했을 때 4번 이유가 가장 클 것으로 예상유저에게 리뷰 작성을 유도하거나, 리뷰를 보기 편리하도록 기능을 개선한다면 주차별 리텐션율도 높아질 것으로 예상됨#5. 추천 알고리즘의 성능 지표5-1. 문제 정의 프로세스Q. 유저가 추천에 만족했다면 어떤 현상이 발생할까? A. 추천 알고리즘으로 표시된 제품에 관심을 가진다Q. 위 현상이 왜 발생했을까? A’. 구매를 하려고 했던 제품을 표시해줬다A.’’ 살 생각은 없었으나 마음에 드는 제품을 추천해줬다Q. 어떤 행동을 할까? A’. 추천 상품을 클릭한다A’’. 상세페이지에서 구매를 한다5-2. 핵심 지표 & 보조 지표 정의핵심 지표는 무엇인가?추천 상품 CTR보조 지표는 무엇인가?추천 상품 CVR5-3. 멘탈 시뮬레이션어떻게 하면 핵심 지표를 높일 수 있을까? Input 지표는 무엇일까?유저를 세그먼트로 나눠 NDCG를 측정(관련도 값을 활용할 수 있기 때문에 평가 지표로 NDCG를 선정함)하고 각 세그먼트 별로 추천 알고리즘을 다르게 적용 → NDCG가 Input 지표로 적용될 수 있음#6. 자주 사용하는 서비스의 지표6-0. 가장 자주 사용하는 서비스배달의 민족 내 배민스토어 서비스6-1. 제일 중요한 지표는 무엇인가?배달의 민족 유저 중 배민스토어 사용 이력 있는 유저의 비율 (배민스토어 MAU / 배달의 민족 MAU)6-2. 왜 해당 지표가 가장 중요한가?현 배민스토어 비즈니스 상황을 고려했을 때, AARRR 퍼널 중 Acquisition을 개선했을 때 가장 비즈니스 임팩트가 클 것으로 예상되기 때문배달의 민족은 MAU가 약 2천만에 달하지만 그 중 배민스토어를 사용해본 유저는 3.4%에 불과(오픈서베이 리포트 참고)또한 이미 회원가입이 되어 있는 유저를 배민스토어로 유입시키기만 하면 되기 때문에 퍼널 개선의 난이도가 낮음워낙 배민 유저가 많아 임팩트가 뒷단의 퍼널을 개선했을 때보다 임팩트가 큼6-3. 이외에 확인해야 하는 지표 2개는?배민스토어 홈 화면 컴포넌트별 클릭률아직 사업 초기이기 때문에 유저를 온보딩하는 기능이 중요 → 해당 역할을 얼마나 잘 하고 있는지 클릭률을 통해 확인장바구니 → 결제 페이지 전환율최소주문금액이 1만~3만 원 정도로 형성되어 있는데, ‘즉시성’이라는 요인(ex. 갑자기 수건이 없어서 다음 날 도착하는 쿠팡이나 네이버가 아닌 1~3시간 내 도착하는 배민스토어를 통해 주문)을 고려했을 때 최소주문금액을 채우지 못하는 유저가 많을 것으로 생각됨#7. 가입 퍼널 개선 프로젝트7-1. 핵심 지표는 무엇인가?온보딩 도입 이전 대비 가입률 증감률온보딩 도입 이전 대비 핵심 기능 사용 비율 비교온보딩은 서비스의 아하 모먼트를 미리 알려주려고 하는 기능도 있음. 만약 가입을 한다고 해도, 서비스의 아하 모먼트를 파악하지 못하면 리텐션율이 떨어질 것이기 때문. +) 연습 문제를 풀면서 느낀 점MECE하게 문제를 나눌 때 어떤 기준으로 로직 트리를 그려 나가냐에 따라 액션 아이템도 완전히 달라진다이 업무. 문제 정의가 99%다. 어렵지만 그만큼 중요하니 앞으로도 꾸준히 연습을 해봐야겠다 ++) 어려웠던 부분 & 궁금한 부분문제 정의 프로세스에서 '어떤 현상이 발생할까?'와 '고객은 이런 상황에 어떻게 행동할까?'에 같은 답변을 하게 되는 경우가 많았습니다. 또는 순서의 개념으로 작성을 하게 되는데(ex. 검색 기능을 클릭한다 -> 검색 기능을 다시 사용한다) 제가 제대로 프로세스를 짜고 있는 게 맞을까요?팀원들에게 문제 정의를 설명할 때 어떻게 하면 제가 만든 MECE+Logic Tree를 전달할 수 있을까요? (특히 상사에게 보고할 때 도식화를 그대로 보여줄 수는 없으니...) 혹시 카일 님만의 팁이 있는지 궁금합니다! 감사합니다!
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
메일 질문있습니다
5/31 이벤트 유튜브 영상 (https://youtu.be/3rpEsV0vnB8) 보고서선생님께 메일 보냈었는데메일이 안 간건지보낸 메일 주소가 잘못된건지보낸 방식이 잘못된건지 답변을 못 받았습니다.어떤 메일 주소로 어떻게 캡쳐해서 보내드리면 될까요?
-
미해결Glide를 활용한 노코드 프로토타이핑의 기초
glide로 재피어로 연동하면 센드버드와 같은 채팅 api 삽입이 가능할까요?
glide로 앱을 만들려고 하는데 채팅 기능이 필요해서요. 재피어로 연동하면 센드버드와 같은 채팅 api 삽입도 가능할까요?그리고 채팅에 올라온 사진과 텍스트들을 따로 데이터베이스에 저장이 가능한지와 채팅화면에서 관리자 입장에서만 보이는 오른쪽 버튼으로 고객의 정보를 확인하는 식으로 만드는게 가능한지가 궁금합니다ㅜㅜㅜ
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
Time limit가 걸리는데 어떻게 해결해야 할까요?
#include <stdio.h> #include <vector> using namespace std; int n, m; int answer = 0; void solution(vector<vector<int>> & arr, vector<int> & visited, int current){ if(current == n){ answer++; return; } visited[current - 1] = 1; for(int i=0;i<n;i++){ if(arr[current-1][i]!=0 && visited[i] == 0){ visited[i] = 1; solution(arr, visited, i+1); visited[i] = 0; } } visited[current - 1] = 0; } int main(void){ //freopen("input.txt", "rt", stdin); int start, end; scanf("%d %d", &n, &m); vector<vector<int>> arr(n, vector<int>(n)); vector<int> visited(n); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ scanf("%d %d", &start, &end); arr[start-1][end-1] = 1; } } solution(arr, visited, 1); printf("%d", answer); return 0; }안녕하세요. 다름이 아니라 수업 듣기 전 짠 코드를 이용해 채점 프로그램을 실행시키면 모든 case에 대해 time limit가 나와서 질문드립니다. 위 코드에 어떤 문제가 있을까요? 채점파일 내에 있는 input.txt 입력받고 실행시키면 전부 정답으로 나옵니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
무한맵에서 스태이지 생성이 되지 않습니다.
일단 동작이 안되서 코드를 전부 복붙을 하였지만 2번째 스태이지가 생성이 되지 않고요.GateTrigger 4종이 ABTrigger 콜리전으로 되어있지 않고 Custom..으로 설정되어 있습니다.그리고 이런 오류를 잡기위해 어디에 중단점을 놔야 할까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
튜닝 관련
안녕하세요 튜닝하다가 궁금한 점이 생겼는데요max_depth는 기본이 3이고 3~12 를 넣어보라고 하셨는데,2나 1을 넣어서 roc_auc_score가 높아지면 낮춰도 되는 건가요?
-
미해결홍정모의 따라하며 배우는 C++
비트 연산 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의 14분에 item3 를 사용했을때items_flag &= ~opt3; 를 하셨는데items_flag ^= opt3; 로 해도 괜찮은가요?둘 사이에 차이가 있는지 아니면 같은 건지 궁금합니다!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
교재 및 강의 문의드립니다.
안녕하세요. 이제 막 강의를 듣기 시작했는데요. 혹시 교재는 별도로 판매하시나요?그리고..지금 커리큘럼에는 작업형 3에 관한 강의는 없는데요. 혹시 나중에 작업형 3에 관한 강의는 업데이트가 되는건가요? 아니면 작업형 3에 관한 것은 새소식에 올려주신 글들을 참고하면 될까요?
-
미해결[리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편
제네릭 extends 함수로 한 경우
function test<T extends (a: number, b: string) => boolean>(callback: T): void { return; } const callback = (a: number) => {return true}; const callback2 = (a: string) => {return true}; const callback3 = () => {return true}; test(callback); // OK test(callback2); // ERROR test(callback3); // OKplayground에서 위 코드 입력시 callback2에서만 오류가 나고 나머진 통과됩니다.제네릭에선 a, b 옵셔널이 아닌 두 매개변수를 정했는데 왜 빈값 혹은 1개만 넣어도 충족되는지 궁금합니다.
-
해결됨모의해킹 실무자가 알려주는, XSS 공격 기법
강의 교재
강의 교재가 별도로 없나요? 수업을 다 듣고 복습차원에서 교재를 보고 싶은데 교재가 없네요. 수업 진행 시 PPT를 받아 볼 수 있을까요?
-
미해결빅데이터의 통찰력을 키워주는 엑셀 Quick Start
중괄호 대괄호
VLookup 함수중괄호인가요 대괄호인가요중괄호 쓰시면서 계속 대괄호라고 말씀하시니까 헷갈립니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
roc_auc
roc_auc로 할 때1) 이진 분류 구할 때(=양성인 확률값을 구하는 것)pred = 모델.predict_proba(X_val)roc_auc_score(y_val, pred[:,1])pred_final = 모델.predict_proba(X_test)submit = pd.DataFramd({'pred': pred_final[:,1]})2) 다중 분류 구할 때(= 각 클래스에 대한 확률값을 구하는 것)pred = 모델.predict_proba(X_val)roc_auc_score(y_val, pred,multi_class='ovr')pred_final = 모델.predict_proba(X_test)submit = pd.DataFramd({'pred': pred_final[:,1]})=> roc_auc를 쓸 때는 predict는 안쓴다고 보면 되는 건가용?=> 이 정도만 알면 되는 걸까용?
-
미해결스프링 시큐리티 OAuth2
권한 부여 타입 authorization code, credential, refresh token 타입만 지원??
OAuth 2.0 Authorization Server Metadata Endpoint / JWK Set Endpoint 2:40~2:55권한 부여 타입이 authorization code, credential, refresh token 타입만 지원한다고 하셨는데 좀 헷갈립니다. 인증 서비스를 개발할 때 권한 부여 타입에는 위 3가지말고도 Resource owner password 방식을 사용할 수도 있긴한거죠? 공식문서에서 어디를 참고하면 될까요..?근데 스프링 시큐리티에서 이 Resource owner password 방식의 자체 configure 를 지원하진 않는다. 로 이해하면 될까요.만약에 Resource owner password 타입으로 권한 부여 서비스를 개발하려면 저희가 직접 ~configure, provider 클래스를 생성하는 건가요?
-
해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
Entity nullable
강사님 강의 다 수강 이후 코드를 하나씩 뜯어보며 이해하던 중 엔티티에서 컬럼의 속성 값에 대한 의문ㅇ이 생겨 질문 드립니다. 강사님의 ChannelChats.entity에서 이와 같이 userId와 channelId가 nullable true로 설정이 되어있는데 널값을 허용하는 이유가 궁금하여 질문 드립니다. 그리고 또 다른 질문이 있는데 아래에서 m:1 관계 설정 후 joinColumn만으로도 테이블에 컬럼이 추가되는 걸로 알고 있는데 위에서 Column데코레이터로 다시 한 번 만들어준 것은 후에 select과 같은 요청시 joinColumn만으로 생성된 컬럼 값은 안넘어와서 column 데코레이터를 다시 한 번 사용해준 것이라고 이해해도 괜찮을까요??
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
이미지경로를 시퀄라이즈 모델에저장시 post모델에 배열로 저장하지 않고 따로 테이블을 만들어 관계형으로 저장하는이유
1.이미지 경로는 이미지가 여러개일 경우 배열상태로 존재하는데 왜 post 모델에 배열로 저장하지 않고 따로 테이블을 만들어 관계를 짖는 이유를 알수있을까요2.테이블에 배열데이터를 저장하려면 json으로 저장이 될꺼같은데 이 데이터를 text타입으로 바꿔서 저장해야하나요?관계를 지어 테이블을 두개 만드는 방식과 배열데이터를 같은 테이블에 넣는 방식중 머가 더 좋은가요?