묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨움짤로 빠르게 배우는 파이썬-아래아한글 자동화 레시피
시험지 만들기파트 질문
안녕하세요 선생님! 오랜만에 들어와서 공부를 다시 하고 있는데 시험지 합치기에서 궁금한게 있어서요. EBS 모의고사도 같은 방법으로 가능할지 궁금해져서 데이터를 수집하려고 보니까 pdf로만 제공이 되고 있더라구요 ㅠㅠ 혹시 한글로 받을 수 있는 경로를 알려주실 수 있을까요??
-
해결됨[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
주사위앱 관련해서 질문 있습니다!
안녕하세요?오늘도 선생님 강의와 똑같이 따라한 것 같은데주사위가 선생님 버전보다 밑에 있고 버튼은 더 밑에 있어서 보이지 않습니다.혹시 해결 방법을 알고 계시면 알려 주시면 감사하겠습니다.풍요로운 한가위 보내시기를 바라고 항상 감사드립니다. 그리고 제 코드는<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#008000" android:orientation="vertical" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="200dp" android:layout_marginTop="100dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="30sp" android:textColor="@color/black" android:layout_margin="20dp" android:gravity="center" android:textStyle="bold" android:text="인생은 주사위 한방에 가는 거 아니겠습니까?"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="200dp"> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="200dp" android:weightSum="2"> <ImageView android:src="@drawable/dice_1" android:layout_width="120dp" android:layout_height="120dp" android:layout_weight="1"/> <ImageView android:src="@drawable/dice_2" android:layout_width="120dp" android:layout_height="120dp" android:layout_weight="1"/> </LinearLayout> <Button android:text="인생 고고" android:layout_width="match_parent" android:background="@color/black" android:textColor="@color/white" android:layout_height="50dp" android:layout_margin="50dp"/> </LinearLayout>입니다!
-
미해결
앱 번들 버전 오류
Suggestion: use a compatible library with a minSdk of at most 16,or increase this project's minSdk version to at least 19, 앱 번들 버전오류 인거 같은데 어디서 수정해야 할까요?
-
해결됨문법 공부 다음엔, 자바스크립트 프로젝트 101
filter 영상에서 질문이 있습니다
const selectCategory = (e) => { if (!myProducts) { alert('상품 목록을 불러와주세요.'); } else { const {selectedIndex} = e.target.options; // 구조분해할당 문법 const {value} = e.target.options[selectedIndex]; } }여기서 구조분해 할당 문법이 적용이 되었는데 잘 이해가 가지 않아서 질문 드립니다. 1) 구조분해 할당은 배열/객체에서 적용이 가능한 것으로 알고 있는데요, console.log(e.target.options) 를 찍어보면 Array 가 아닌 "HTMLOptionsCollection" 으로 반환이 되는데 어떻게 객체로 되어서 문법이 가능한지 궁금합니다.=> 보니까.. 첫 Prototype 에만 HTMLOptionsCollection 으로 반환이 되고, Prototype 에서 계속 타고 내려갈수록 결국 "Object" 에서 파생된거라 가능한건가요?2) option 의 value 값을 어떻게 한 번에 받아올 수가 있는지 궁금합니다. 부가 설명을 드리자면, e.target.options 를 찍으면 많은 정보들(ex. tagName, className, value 등등)이 나오는데요. 원래대로라면 e.target.options[selectedIndex].value 처럼 접근해야 값을 가져올 수 있는건데, 여기서는 const {value} = e.target.options[selectedIndex] 로 한 번에 가져오는게 궁금합니다.=> 해당 부분을 콘솔로 찍어보았을 때 아래처럼 HTML 태그를 가져오는 건 확인했습니다.<option value="life">생활용품</option>여기서 구조분해 할당 문법 적용 시 태그에 선언되어 있는 attribute 값이 자동으로 적용 이 되어 가져오는 건지, 아니면 문법적으로 뭔가 고정된 식 이 있는건지 궁금합니다.아래는 제가 const {value} = e.target.options[selectedIndex]; 코드로 적고 콘솔로 찍었을 때 반환하는 값을 테스트 해 본 결과로 공유 드립니다. <select name="category" class="select"> <option value="life">생활용품</option> <!-- "life" 반환 --> <option data-id="test">생활용품</option> <!-- "생활용품" 반환 --> <option data-id="test" value="life">생활용품</option> <!-- "life" 반환 --> </select>
-
해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
socket.io 사용시 랜덤하게 객체가 emit 됩니다.
안녕하세요 제로초님~ 백엔드 개발자 지망생이자 제로초님의 팬인 신유빈입니다.1개월 가량 하기 문제를 구글링 하며 여러 경우의 수를 찾아보았지만 이유를 찾지 못하여 질문드립니다.질문드리고자 하는 내용은 이렇습니다.socket.io 로 이벤트를 emit 할때, 같은 메서드를 사용함에도 객체에 따라 클라이언트에 전송될 때도 있고, 전송되지 않을 때도 있는데 그 원인을 찾지 못하고 있습니다.현재 저는 신규게시물 혹은 댓글이 작성되었을때 모든 사용자에게 알림을 emit 하고자 합니다.현재 3가지의 경우 중 A만 성공중인 상태입니다.A : 테스트를 위하여 handleConnection 메서드에서 소켓에 연결한 사용자의 정보 객체를 message 로 전송시 성공B : 게시물 작성 시 생성한 알림 메시지 객체를 message 로 전송시 실패C: 댓글 작성 시 생성한 알림 메시지 객체를 message 로 전송시 실패모든 케이스에서 클라이언트에게 메시지를 성공적으로 보내려면 어떻게 해야할지 도움을 주실 수 있을까요?// 실행 동영상 https://youtu.be/AgLmcV53EvM// 코드깃허브 저장소 전체 코드https://github.com/fog-of-war/dev-be/blob/zerocho/README.mdEventsGatewayhttps://github.com/fog-of-war/dev-be/blob/zerocho/src/events/events.gateway.ts#L55 // fow-be/src/events/events.gateway.ts /** 웹소켓 연결시 */ handleConnection(@ConnectedSocket() socket: Socket, client: any) { const interval = setInterval(() => { const userInfo = socket.userInfo; this.sendMessage(userInfo); }, 5000); socket.on("disconnect", () => { clearInterval(interval); }); } /** 메시지 전송 */ sendMessage(message?: any) { console.log(" \n 🌠 sendMessage \n", message); this.server.emit("message", message); return Promise.resolve("Message sent successfully"); } AlertServicehttps://github.com/fog-of-war/dev-be/blob/zerocho/src/alert/alert.service.ts#L12 // fow-be/src/alert/alert.service.ts // B: 게시물 작성시 실행되는 알림 서비스 코드 async createNotifyAlert(id: number) { const data = { alert_place_id: id, alert_type: "NOTIFY" as Type }; const alert = await this.prisma.alert.create({ data: data }); const result = await this.makePostAlertMessage(id); await this.eventsGateway .sendMessage(result) .then((response) => { // console.log("🌠 Notification sent successfully:", response); }) .catch((error) => { console.error("🌠 Error sending notification:", error); // 전송 실패 또는 오류가 발생한 경우에 실행할 로직을 여기에 추가 }); return result; }// fow-be/src/alert/alert.service.ts // C : 댓글 작성시 실행되는 알림 서비스 코드 async createActivityAlert(id: number) { const data = { alert_comment_id: id, alert_type: "ACTIVITY" as Type }; const alert = await this.prisma.alert.create({ data: data }); const result = await this.makeCommentAlertMessage(id); await this.eventsGateway .sendMessage(result) .then((response) => { // console.log("🌠 Notification sent successfully:", response); }) .catch((error) => { console.error("🌠 Error sending notification:", error); }); return result; } // 출력결과# A : 클라이언트에 전송 성공 🌠 sendMessage { sub: 2, user_email: 'shin.yubin18@gmail.com', iat: 1695983169, exp: 1695986769 } # B : 클라이언트에 전송 실패 🌠 sendMessage { place_id: 1, place_name: '코엑스', region_name: '강남구', post_id: 65, post_created_at: 2023-09-29T10:27:28.371Z, post_image_url: 'https://fog-of-war.s3.ap-northeast-2.amazonaws.com/랜드마크/1코엑스.jpeg' } # C : 클라이언트에 전송 실패 🌠 sendMessage { user_nickname: '구글신유빈', user_image_url: 'https://fog-of-war.s3.ap-northeast-2.amazonaws.com/defaultProfile.png', comment_id: 15, comment_text: '우왕', comment_created_at: 2023-09-29T10:52:24.960Z }
-
미해결ESXi 가상 인프라 구축과 보안 솔루션을 활용한 이상징후 탐지 모니터링
pfsense 설정 후 외부로 ping 불가
모든 절차를 똑같이 설정한 이후, pfsense를 최종적으로 설정하였습니다.그 이후 pfsense의 netgate services and support 부분이 무한 회전을하고,pfsense에서 8.8.8.8로의 핑이 나가질 않습니다. 또한 이를 확인해보고자 router 인 vyos에서도 ping 을 시도하였는데 ping이 8.8.8.8로 나가지 않습니다.모든 설정값이 동일했다는 가정하에, ping이 pfsense 설정 이후 나가지지 않게되는 이유가 무엇이며, 해결 방안은 무엇인가요?
-
미해결
integerOverFlow 뜨는 이유가 궁금합니다. 1섹션1강
#include <iostream> #include <cstdlib> using namespace std;1090번 문제 1섹션 1강 완전탐색 강의 5번째 문제입니다.c++에서 만든 코드입니다. 백준에 제출 했는데 integerOverFlow로 오류가 나옵니다.(예제는 모두 잘 실행됩니다)int의 범위에서 문제가 생길 것 같은 곳은 long long int 나 arr로 고쳤는데도 런타임 오류가 계속 뜹니다.도저히 어떤 부분에서 문제가 생기는지 짐작이 안가네요 int main(int argc, char **argv) { int n; int pointX, pointY; // <- 기준으로 완전 탐색 int minX, minY, maxX, maxY; //완전 탐색할 범위 cin >> n; int arr[n][2]; for(int i=0; i<n; i++){ cin >> arr[i][0] >> arr[i][1];//함수값 받기 } minX = arr[0][0]; maxX = arr[0][0]; //일단 값 1개 설정 minY = arr[0][1]; maxY = arr[0][1]; for(int i=1; i<n; i++){ // 완전 탐색할 범위 찾기 if(arr[i][0]>maxX){ maxX = arr[i][0]; } else if(arr[i][0]<minX){ minX = arr[i][0]; } if(arr[i][1]>maxY){ maxY = arr[i][1]; } else if(arr[i][1]<minY){ minY = arr[i][1]; } } pointX=minX; pointY=minY; long long int size = (maxY-minY+1)*(maxX-minX+1); //완전 탐색하는 횟수 long long int xy=0; // 완전 탐색해서 2차원 배열에 넣기 위한 열의 *번째 long long int arr_dis[size][n]; for(int i=minY; i<=maxY; i++){ for(int j=minX; j<= maxX; j++){ for(int l=0; l<n; l++){ //각 점에서 최소길이 구해서 한 행에 순차적으로 넣기 int subY= 0, subX=0; subY = i-arr[l][1]; subX = j-arr[l][0]; arr_dis[xy][l] = abs(subX) + abs(subY); } xy+=1; } } //일단 가능한 범위 내에서 모든 경우의 수를 다 구하는 것이기 떄문에 //최소 길이는 작은 순으로 정렬 안해도 된다고 판단. 맞는지는 확인 못함 //답이 되는 어떠한 한 점의 경우가 배열의 한 행에 무조건 있을 것 //arr_dis 출력 이상 없었음 /* for(int i=0; i<xy; i++){ for(int j=0; j<n; j++){ cout << arr_dis[i][j] << " "; } cout << "\n"; } */ for(int i=1; i<=n; i++){ long long int min_distance = 50000001; if(i==1){ cout << 0 << " "; continue; } for(int j=0; j <xy; j++){ // k개 사이의 최소 거리 찾기 int sum = 0; for(int k=0; k<i; k++){ sum += arr_dis[j][k]; } if(sum<min_distance){ min_distance = sum; } } cout << min_distance << " "; } return 0; /* for(int i=0; i<xy; i++){ for(int j=0; j<n; j++){ cout << arr_dis[i][j] << " "; } cout << "\n"; } n xy0 1 3 8 1 0 2 7 2 1 1 6 3 2 0 5 4 3 1 4 5 4 2 3 6 5 3 2 7 6 4 1 8 7 5 0 */ }
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
12891_DNA비밀번호
package baekjoon; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer; public class p12891_DNA비밀번호 {static int[] myArr;static int[] checkArr;static int checkSecret; public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));StringTokenizer st = new StringTokenizer(br.readLine());int s = Integer.parseInt(st.nextToken());int p = Integer.parseInt(st.nextToken()); int result = 0;checkArr = new int[4]; // 비밀번호 체크 배열myArr = new int[4]; // 현재 상태 배열char[] a = new char[s];checkSecret = 0; // 현재 p개 중 몇개가 비밀번호 요건에 만족하는지 a = br.readLine().toCharArray();st = new StringTokenizer(br.readLine());for (int i = 0; i < 4; i++) {checkArr[i] = Integer.parseInt(st.nextToken());if (checkArr[i] == 0) {checkSecret++; // i번째 값은 이미 완성됨.}} for (int i = 0; i < p; i++) { // 부분 문자열 처음 받을 때 세팅Add(a[i]); // 현재 상태 배열에 담음} if (checkSecret == 4) {result++;} // 슬라이딩 윈도우for (int i = p; i < s; i++) {int j = i - p; // j = 맨 왼쪽, i = 맨 오른쪽Add(a[i]); // 오른쪽에 있는 값 추가Remove(a[j]);if (checkSecret == 4) {result++;}} System.out.println(result);br.close();} private static void Remove(char c) {switch (c) {case 'A':if (myArr[0] == checkArr[0]) // 같으면 이번에 빠짐으로써 충족이 안 되는 것이니까 checkSecret 하나 줄임checkSecret--;myArr[0]--;break;case 'C':if (myArr[1] == checkArr[1])checkSecret--;myArr[1]--;break;case 'G':if (myArr[2] == checkArr[2])checkSecret--;myArr[2]--;break;case 'T':if (myArr[3] == checkArr[3])checkSecret--;myArr[3]--;break;}} private static void Add(char c) {switch (c) {case 'A':myArr[0]++;if (myArr[0] == checkArr[0])checkSecret++; // 'A'가 더 많이 들어온다고 해서 checkSecret값을 올리면 되는 게 아니므로 딱 같을 때에만 증가시킴break;case 'C':myArr[1]++;if (myArr[1] == checkArr[1])checkSecret++;break;case 'G':myArr[2]++;if (myArr[2] == checkArr[2])checkSecret++;break;case 'T':myArr[3]++;if (myArr[3] == checkArr[3])checkSecret++;break;}}}현재 백준에서 문제가 통과되지 않고 있는데 혹시 잘못된 부분이라도 있을까요?ㅠ
-
미해결AWS(Amazon Web Service) 입문자를 위한 강의
connect.php 파일 오픈 안될 경우
기존에 있는 s3 connet.php 파일은 현재 php 버전에서 지원하지 않는 코드입니다 ;;;;; 하,,,, 그래서 찾아보니 현재 최신 버전에 맞는 코드로 작성해야 합니다. <?php$username = "";$password = "";$hostname = "";$dbname = "";// connection to the database$dbhandle = new mysqli($hostname, $username, $password, $dbname);if ($dbhandle->connect_error) { die("MySQL에 연결할 수 없습니다: " . $dbhandle->connect_error);}echo "MySQL 접속 성공!<br>";// Later, when done with the database connection$dbhandle->close();?> 계속 http 에러가 뜨길래 뭔가 했는데 그냥 코드 문제였네요.. 강의가 좀 된거라서 그런지 안맞거나 안되는 부분이 너무 많습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
user domain 생성관련
안녕하세요 선생님, 7강 유저 생성 에서 질문이 생겨 남깁니다. DTO에 User를 생성하는 클래스가 있는데 domain으로 따로 빼서 User클래스를 또 생성하는 이유는 무엇인가요? 스프링부트의 구조 짜는 법을 잘 모르고 있는건가 싶기도 하고..dto는 단순히 어떤 데이터로 통신할건지 정의만 해놓고 상세한 정의는 domain 의 user에서 하는 개념인건가요? 상세한 설명 부탁드리겠씁니다..!
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
미로 탐색 코드 리뷰 부탁드립니다!
반복문을 안 쓰고 짜 봤는데 답은 그대로 나오지만 이렇게 짜도 되는 건지 궁금합니다. 1로 바꿔줬다가 0으로 바꿔주는 시점을 이렇게 해도 괜찮을까요?? 풀이에서는 DFS 돌아올 때마다 해주시는 것 같아서 질문 드립니다! const solution = (miro) => { let ans = 0; const DFS = (N, M) => { if (N < 0 || M < 0 || N > 6 || M > 6) return; if (M === 6 && N === 6) { ans++; } else { if (miro[N][M] === 0) { miro[N][M] = 1; DFS(N - 1, M); DFS(N, M - 1); DFS(N + 1, M); DFS(N, M + 1); miro[N][M] = 0; } } }; DFS(0, 0); return ans; }; console.log( solution([ [0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 1, 0], [0, 0, 0, 1, 0, 0, 0], [1, 1, 0, 1, 0, 1, 1], [1, 1, 0, 0, 0, 0, 1], [1, 1, 0, 1, 1, 0, 0], [1, 0, 0, 0, 0, 0, 0], ]) );
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
저도 가로 배치가 잘되다가 세로 배치가 되어 질문드립니다.
저도 강의 따라가다가 세로로 갑자기 변환되어서 답변 내용대로 해봤지만 고쳐지지를 않아서 질의 드립니다 아래 코드는 html코드입니다<html> <head> <title>그랩마켓</title> <link href="index.css" type="text/css" rel="stylesheet" /> <body> <div id="header"> <div id="header-area"> <img src="images/images/icons/logo.png"/> </div> </div> <div id="body"> <div id="banner"> <img src="images/images/banners/banner1.png"/> </div> <h1>판매되는 상품들</h1> <div id="product-list"> <div class="product-card"> <img class="product-img" src="images/images/products/basketball1.jpeg"/> <div class="product-contents"> <span class="product-name">농구공 1호</span> <span class="product-price">50000원</span> <div class="product-seller"> <img class="product-avatar" src="images/images/icons/avatar.png"/> <span>그랩</span> </div> </div> </div> </div> <div class="product-card"> <img class="product-img" src="images/images/products/keyboard1.jpg"/> <div class="product-contents"> <span class="product-name">키보드 1호</span> <span class="product-price">30000원</span> <div class="product-seller"> <img class="product-avatar" src="images/images/icons/avatar.png"/> <span>그랩</span> </div> </div> </div> <div class="product-card"></div> <div class="product-card"></div> </div> <div id="footer"></div> </body> </head> </html>아래는 css코드입니다 * { margin: 0; padding: 0; } #header{ height: 64px; display: flex; justify-content: center; border-bottom: 1px solid gray; } #body{ min-height: 100%; width: 1024px; margin: 0 auto; padding-bottom: 24px; } #footer{ height: 200px; background-color: red; } #banner{ height: 300px; background-color: yellow; } #header-area{ width: 1024px; height: 100%; display: flex; align-items: center; } #header-area > img{ width: 128px; height: 36px; } #body > h1{ margin-top: 16px; } #banner > img{ width: 100%; height: 300px; } #product-list{ display: flex; flex-wrap: wrap; margin-top: 12px; flex-direction: row; } .product-card{ width: 180px; height: 300px; margin-right: 12px; margin-bottom:12px; border: 1px solid rgb(230, 230, 230); border-radius: 12px; } .product-img{ width: 100%; height: 210px; } .product-contents{ display: flex; flex-direction: column; padding: 8px; } .product-name{ font-size: 14px; } .product-price{ font-size: 16px; font-weight: 200px; margin-top: 4px; } .product-seller{ display: flex; align-items: center; margin-top: 12px; } .product-avatar{ width: 24px; }바쁘시겠지만 답변 해주시면 감사하겠습니다!+해당 코드 진행 후 개발자 도구 이용해서 보면 flex에 의해 정해지지않은 보라색 칸이 있는데 해당 칸 처리가 힘들어 추가 질문 올립니다!
-
미해결Three.js로 시작하는 3D 인터랙티브 웹
카메라 컨트롤을 어떤 걸 사용해야 할지 모르겠습니다...!
안녕하세요. 1분코딩 선생님 강의를 수강 중인 수강생입니다. 현재 아래 사이트의 화면과 비슷한 기능을 구현해야 하는 상황인데 어떤 카메라 컨트롤을 써야 할지 감이 잡히지 않아 질문 드립니다...https://www.lamborghini.com/en-en/3dFlyControls와 PointerLockControls로 테스트를 해보았는데 FlyControls의 경우는 비슷하게 구현은 되었지만 화면을 계속 움직이다보면 화면이 기울어버리는 경우가 생기고,PointerLockControls의 경우는 움직이려면 lock(); 함수를 실행시키면 마우스가 사라져서 문제가 되었습니다.카메라 컨트롤 셋팅은 glb파일의 카메라 객체를 넣어 생성하였습니다.위의 사이트와 비슷한 기능을 만들려면 어떤 카메라 컨트롤러가 적합할까요...?카메라 객체로 컨트롤 셋팅을 하고 따로 셋팅을 해줘야하는 값들이 있을까요...?답변 및 조언 주시면 정말 감사하겠습니다!
-
미해결스프링 시큐리티
FilterSecurityInterceptor deprecated
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. FilterSecurityInterceptor deprecated 가 돼서 AuthorizationFIlter 를 사용하라고 해서 @Bean 으로 등록하려고 했습니다. @Bean public AuthorizationFilter authorizationFilter() throws Exception { AuthorizationFilter filter = new AuthorizationFilter(authorizationManager(authenticationConfiguration)); filter.set } 여기서 setSeucirtyMetadataSource 같은 메서드가 없어서 어떻게 해야할지 잘 모르겠습니다...
-
미해결AWS(Amazon Web Service) 입문자를 위한 강의
ec2 생성 시 사용자 데이터 코드 오류
yum install php-mysql << 이 구문 때문에 사용자 데이터 편집 코드가 아예 먹통이 되는 현상이 있습니다. 그래서 확인해보니 yum install php-mysqlnd 저 부분만 이렇게 수정해서 붙여넣고 해보세요 이렇게 입력하고 하면 잘 되더라구요...
-
미해결
MSA, DDD 패턴으로 구현할때 고민사항
안녕하세요2일동안 강의 달리면서 실습도 하면서 궁금증을 해소하기위해 달려온 잡부개발자입니다최근 일반 레이어드 아키텍처로만 개발을 진행하니 생긴 문제들(테스트진행이 어려워짐, 소스파악하기 어려워짐 등등)이 생겨서 다른 아키텍처가 있나...찾아보다가 헥사고날 아키텍처가 가장 괜찮았다고 생각했고 DDD 형태로 진행하는게 깔끔할꺼같아서 혼자서 구조를 만들어보았어요아래 설명을 이어붙히도록하겠습니다adapterㄴ 헥사고날중 가장 바깥에 존재하는 controller, dao 부분adapter-modelㄴ adapter 에 쓰이는 모델들을 application 모듈과 연동시키기 위해 만든 model 클래스 모듈 applicationㄴ 각각의 UseCase 구현체와 인터펭이스가 존재하며 adapter-model 을 domain 객체로 변경하는 역할도 가진 모듈 domainㄴ 실제로 비즈니스로직을 가질수있는 POJO 도메인 객체위 구조는 Aggregate 를 적용하지않았기때문에 향후 각각의 작은 서버로 구성할수있는 MSA 로 뺄수있는 구조는 아니에요 다만 그건 aggregate 모듈을 만들어서 빼면 되는거라 생각하는데 그것보다도 가장 궁금한점은..... 비즈니스 로직을 POJO 객체가 있는 domain 모듈로 파싱할때 JPA 기준 A 라는 유저가 가지고있는 게임플레이 히스토리들도 가지고있잖아요? 이건 POJO 객체로 가져올때 히스토리 객체들도 모두 가지고와서 POJO 내에 넣어야하나요?반대의 경우 히스토리에서는 유저객체를 들고있을텐데 이때 의존을 모두 가져와야하나요? 아니면 유저의 키값만 객체로 들고있으면될까요?만약 해당 유저가 한시간에 1000번의 게임을 했다고 가정하면 몇일만 조회해도 엄청 많은 데이터가 램으로 올라가기때문에 좀 부담스러운데 히스토리가 필요한경우 쿼리에 비즈니스로직을 담아 타협해야하나요?물론 드라마틱한 성능차이가 없다면 도메인에서 처리해도되겠지만 성능상 차이가 많이 난다면 쿼리에 비즈니르로직을 담아야하는게 아닌가싶어서요글이 좀 생각의 흐름대로 쓰인거같아 미리 죄송합니다 ㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I qSize를 쓰는 것과 안 쓰는것의 차이
가 뭔지 잘 모르겠습니다 ㅠㅠ어떻게 달라지는지 알려주실 수 있나요
-
해결됨배달앱 클론코딩 [with React Native]
1명은 맥, 1명은 윈도우로 협업하는 것이 가능한가요?
현재까지 배운 내용(섹션 0- 리액트 네비게이션까지 수강 ) 으로는 환경 설정 부분의 차이 때문에 github를 이용한 협업을 할 경우(프로젝트 폴더를 pull받을 때 특히), 상당히 충돌할 것으로 예상되는데해결할 방법이 있을까요? 학습을 모두 마치고 여쭤보려고도 했지만, 처음부터 협업이 어려울 수도 있다는 생각이 들어서 다 듣기 전에 여쭈어 보는 점은 죄송합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-H next > MAX라고 하면 틀리는 이유
http://boj.kr/21fd549ee17c48b9be877802112b7a91if문에서next > MAX라고 하면 틀리네요next >= MAX라고 하면 맞구요 왜 그런걸까요그리고 v.push_back(i) 할 때1, 2, 3 이렇게 넣으면 1 , 2, 3 순서대로 들어가는게 아니라 3, 2, 1 이렇게 되네요 처음 알았습니다
-
미해결모의해킹 실무자가 알려주는, SQL Injection 고급 공격 기법 : PART 2
QueryBox 다운로드 불가
쿼리박스 공식 홈페이지에서 더이상 다운로드가 불가능합니다.해당 파일 어디서 다운받아야 하나요?