묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
안녕하세요 강의 무한로딩 문의합니다.
9월 20일 추가 하신 강의 중 가챠 2 강의 제외하고 모두 무한 로딩 뜨는데요 혹시 무슨 문제 일까요?
-
해결됨한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지
package.json
안녕하세요 파일에 package.json은 있는데 어떤 내용들 넣으셨어요???
-
미해결프로그래밍 시작하기 : 도전! 45가지 파이썬 기초 문법 실습 (Inflearn Original)
glob.glob1() <-- 질문
import glob png_list1 = glob.glob1('./source/42-1/', '*.png') print(len(png_list1)) png_list2 = glob.glob1('./source/42-1/', '*py') print(len(png_list2))여기에서 glob을 쓸때요. 왜 glob1() 에 1을 붙였나요?검색해보니 glob1() 이라는건 없다고 나와서요 1. 질문하시기 전 유사한 질문이 있는지 검색을 먼저 부탁드려요!전체 소스코드를 올려주시면 답변을 빠르게 드릴 수 있어요!(글보다 빨라요)기초적인 질문은 이미 검색해보시면 사례가 많이 있어요!문법적인 궁금증은 먼저 구글 검색을 통해서 레퍼런스(메뉴얼)을 읽어보시고 해결하시면 실력 향상 100%너무 잦은 질문이나 강의와 관련 없는 질문은 가급적 자제 부탁드려요 ㅠ.ㅠ2. 답변이 다소 늦을 수도 있어요!일반적인 근무시간(9 TO 6) 안에는 답변을 드리도록 노력하고 있어요!문법적인 질문은 먼저 검색을 통해 해결해 보세요!정확하게 질문해주시면 정확한 답변을 받으실 수 있어요!늦더라도 꼭 응답은 드리고 있으니, 먼저 검색을 통해 해결해 보세요!
-
미해결
안녕하세요. 강의 커리큘럼 관련해서 질문있어요!
안녕하세요~제가 현재 졸업을 앞둔 대학생인데 ott 플랫폼 데이터 엔지니어 직무를 희망해서 파이썬 수강해서 관련 지식을 더 쌓고싶은데 그중에서도 머신러닝과 딥러닝 그리고 추천시스템이 커리큘럼에 포함된 강좌를 듣고싶은데 혹시 추천해주실수 있을까요?파이썬 관련 지식은 대학2,3학년때 대학강의로 들은거 외에 따로 파보질 못해서 기초단계 복습하고 머신러닝, 딥러닝, 추천시스템 배우는 커리큘럼도 괜찮습니다. 감사합니다!
-
미해결달리(DALL-E): 초보자를 위한 이미지 생성 가이드 (입문편)
동일 캐릭터 생성의 어려움.
동일한 캐릭터 이미지 생성하기 쪽을 실습하고 있습니다.동일한 캐릭터로 웹툰을 만드는 것이 안되네요... 문제는 캐릭터가 너무 달라진다는 점입니다....시드번호를 따서 넣어도 마찬가지입니다.작업은 이렇게 해봤습니다.동일한 캐릭터를 못쓰는 것이 문제니깐 먼저 배경없이 캐릭터 일러스트를 만들어서 시드번호를 딴다해당 시드번호를 바탕으로 미리 만들어 놓은 4컷 웹툰 스토리보드와 결합해서 1컷의 이야기를 만들어줘라고 한다.1컷을 스토리보드에 맞게 수정한다.이제는 1컷의 시드번호를 딴다(원래 캐릭터 일러스트 시드번호를 따는 것보다 1컷의 시드번호를 따는 것이 동일한 캐릭터를 나오게 하는데 좋다고 판단했습니다.)아래와 같이 요청한다.1. "시드번호 : 2234079682"의 3명의 인물의 키, 몸무게, 얼굴생김새, 머리스타일, 옷을 그대로 유지, 배경도 유지2. 2컷 내용을 기반으로 이미지 만들어줘 2컷: 첫째의 눈물 준호는 은지의 머리 위에 작은 인형을 올리고 깔깔거리며 웃는다. 은지는 불안해하며 눈물이 고이기 시작하고, 결국 울음을 터뜨린다. 준호는 당황한 표정으로 은지를 쳐다보지만, 은지는 고개를 숙인 채 눈물을 흘린다. 배경: 아이들이 웅성거리며 상황을 지켜보는 장면. 캐릭터: 은지(눈물을 흘리며 고개를 숙이고 있음), 준호(당황한 얼굴로 뒷머리를 긁적이며 서 있음).하지만 여전히 동일캐릭터로 만드는 것이 쉽지 않습니다.... 어떻게 하면 좋을까요?
-
미해결
Stablity Matrix package 설치 에러 질문..
인공지능에 관심을 가지게 되어서 Stablity Matrix 라는 프로그램을 설치 후, Stable diffusion Webui package를 설치하는데 계속 pip install jsonmerge라고 뜨면서 설치가 불가하네요.. 버전이 안 맞는다는 얘기도 있고.. 무엇이 문제인지 정말 궁금합니다... 아래는 Console logs입니다..ㅠㅠ ERROR: Could not find a version that satisfies the requirement jsonmerge==1.8.0 (from versions: 1.0.0, 1.1.0, 1.2.0, 1.2.1, 1.3.0, 1.4.0, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.6.1, 1.7.0, 1.8.0, 1.9.0, 1.9.1, 1.9.2)ERROR: No matching distribution found for jsonmerge==1.8.0Error: StabilityMatrix.Core.Exceptions.ProcessException: pip install failed with code 1: 'Looking in indexes: https://pypi.org/simple, https://download.pytorch.org/whl/cu121\r\nCollecting torch==2.1.2\r\n Using cached https://download.pytorch.org/whl/cu121/torch-2.1.2%2Bcu121-cp310-cp310-win_amd64.whl (2473.9 MB)\r\nCollecting torchvision==0.16.2\r\n Using cached https://download.pytorch.org/whl/cu121/torchvision-0.16.2%2Bcu121-cp310-cp310-win_amd64.whl (5.6 MB)\r\nCollecting setuptools==69.5.1\r\n Using cached setuptools-69.5.1-py3-none-any.whl.metadata (6.2 kB)\r\nCollecting GitPython==3.1.32\r\n Using cached GitPython-3.1.32-py3-none-any.whl.metadata (10.0 kB)\r\nCollecting Pillow==9.5.0\r\n Using cached Pillow-9.5.0-cp310-cp310-win_amd64.whl.metadata (9.7 kB)\r\nCollecting accelerate==0.21.0\r\n Using cached accelerate-0.21.0-py3-none-any.whl.metadata (17 kB)\r\nCollecting blendmodes==2022\r\n Using cached blendmodes-2022-py3-none-any.whl.metadata (12 kB)\r\nCollecting clean-fid==0.1.35\r\n Using cached clean_fid-0.1.35-py3-none-any.whl.metadata (36 kB)\r\nCollecting diskcache==5.6.3\r\n Using cached diskcache-5.6.3-py3-none-any.whl.metadata (20 kB)\r\nCollecting einops==0.4.1\r\n Using cached einops-0.4.1-py3-none-any.whl.metadata (10 kB)\r\nCollecting facexlib==0.3.0\r\n Using cached facexlib-0.3.0-py3-none-any.whl.metadata (4.6 kB)\r\nCollecting fastapi==0.94.0\r\n Using cached fastapi-0.94.0-py3-none-any.whl.metadata (25 kB)\r\nCollecting gradio==3.41.2\r\n Using cached gradio-3.41.2-py3-none-any.whl.metadata (17 kB)\r\nCollecting httpcore==0.15\r\n Using cached httpcore-0.15.0-py3-none-any.whl.metadata (15 kB)\r\nCollecting inflection==0.5.1\r\n Using cached inflection-0.5.1-py2.py3-none-any.whl.metadata (1.7 kB)\r\nCollecting jsonmerge==1.8.0\r\n Using cached jsonmerge-0.0.0-py3-none-any.whl\r\nDiscarding https://files.pythonhosted.org/packages/37/1b/05dd6fd53a76a73e898f3d2b60d02ee90af9e11de2f8e3802a6262fa1ca9/jsonmerge-1.8.0.tar.gz (from https://pypi.org/simple/jsonmerge/): Requested jsonmerge==1.8.0 from file:///C:/users/user/appdata/local/pip/cache/wheels/5a/28/53/7c501247d1873c913eb46702f23045e4d9f565fe2a5ec13f69/jsonmerge-0.0.0-py3-none-any.whl has inconsistent version: expected '1.8.0', but metadata has '0.0.0'\r\nERROR: Could not find a version that satisfies the requirement jsonmerge==1.8.0 (from versions: 1.0.0, 1.1.0, 1.2.0, 1.2.1, 1.3.0, 1.4.0, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.6.1, 1.7.0, 1.8.0, 1.9.0, 1.9.1, 1.9.2)\r\nERROR: No matching distribution found for jsonmerge==1.8.0\r\n'at StabilityMatrix.Core.Python.PyVenvRunner.PipInstall(ProcessArgs args, Action1 outputDataReceived) at StabilityMatrix.Core.Models.Packages.A3WebUI.InstallPackage(String installLocation, TorchVersion torchVersion, SharedFolderMethod selectedSharedFolderMethod, DownloadPackageVersionOptions versionOptions, IProgress1 progress, Action1 onConsoleOutput) at StabilityMatrix.Core.Models.Packages.A3WebUI.InstallPackage(String installLocation, TorchVersion torchVersion, SharedFolderMethod selectedSharedFolderMethod, DownloadPackageVersionOptions versionOptions, IProgress1 progress, Action1 onConsoleOutput) at StabilityMatrix.Core.Models.PackageModification.InstallPackageStep.ExecuteAsync(IProgress1 progress)at StabilityMatrix.Core.Models.PackageModification.PackageModificationRunner.ExecuteSteps(IReadOnlyList`1 steps)
-
해결됨Real MySQL 시즌 1 - Part 1
12강. LEFT JOIN 사용 방법 준수 5:42
안녕하세요 강의 잘 듣고 있습니다.강의 내용 중 오른쪽 쿼리에서 LEFT JOIN이 불필요하게 들어가서 쿼리들에서 LEFT JOIN을 제거하는게 쿼리 성능에 도움이 된다고 하셨는데요.LEFT JOIN 대신 INNER JOIN을 사용하는 것으로 이해하는게 맞을까요? 제거하라하면 JOIN 자체를 제거하라는 의미인지 헷갈려서 질문 남기게 되었습니다. 감사합니다.
-
미해결리눅스 커널의 구조와 원리: 디버깅 - Basic [저자 직강 1부-2]
강의 화면에 아무것도 나오지 않고 오디오만 나오네요
디버깅 패치를 보여주신다고 말씀하시는데 화면에 아무것도 나오지 않네요.몇몇 강의에서 이런 문제가 있는 것 같습니다.빠른 조치 부탁드립니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
혹시 MUI에 대한것도 배우나요?
이 강의에서 MUI에 대한 것도 배우는지 궁금합니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
답변) 자동 완성 안되는 이유
가끔 자동 완성이 안되는 이유는,자동 완성을 입력하고자 하는 바로 아랫쪽에 위치한 함수에함수의 반환형이 명시되어 있지 않아서 그런 것 같습니다.
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
Window에서 Vue.js 설정
당연히 구글링 해보셨져? 원하는 결과를 못찾으셨나요? 어떤 검색어를 입력했는지 알려주세문제가 발생한 코드(프로젝트)를 Github에 올리시고 링크를 알려주세요.안녕하세요 호돌맨님 .. 영상 잘보고 있습니다.저는 Window 에서 영상보면서 공부를 하고있습니다. 근데 Vue 부분 부터 영상대로 따라 만들어보려고 우분투 설치 등 GPT 한테도 물어보면서 하려고했지만도저히 못따라할거 같습니다 혹시 Window 로 하는 사람들은 어떤걸 참조하면서 하면 될까요?? 기존의 React 사용을 해봐서 Vue도 한번 따라해보고싶어서 따라 하는중입니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
인텔리제이 gradle 질문드립니다..
복습하려고 다시 프로젝트 처음부터 진행중인데, 이렇게 콘솔에 찍히면서 프로그램이 중단되어버립니다..구글에 찾아봐도 정보가 없고 gradle을 refresh하면,Could not create parent directory for lock file 이런식으로 나옵니다...그래서 https://memodayoungee.tistory.com/m/55이대로 진행해봐도 안되고 인텔리제이 캐시도 삭제해봤는데도 해결이안되서.. 너무 답답해서 질문드립니다..
-
해결됨두고두고 써먹는 유니티 VR
xr 인터렉티브 툴키트를 수강하고 있습니다
강의에서 진행하는 유니티 버전 2021 2..13f 을사용하고 있습니다 강의 프로젝트셋팅때 버전은 같은데 설치하고 나서 하이어라키 메뉴 에서 xr 메뉴 xr oring (action based)라는 내용이 없습니다 받은 툴키에 셋업샘플에 컨트롤러도 내용이 강좌보다 많은 컨틀롤러가 있습니다 우선있는 컨트롤러는 디콜트 였습니다 하이어라키 메뉴 에서 xr 메뉴 xr oring (action based) 가 없어요 우선 시뮬레이터로 작업하려고 합니다
-
미해결
강의 내용과 좀다른게 있어서
안녕하세요 유니티 xr인터렉트 툴키트과정을 듣고 있습니다 같은버전 2021 .216 사용하는데'하이어라키 에서 xr 에 oringin(action-based)라는 항목이 없읍니다 다같은버젼인데 인터렉트툴키트도 같은 버젼으로 설치했는데 항목이 강의 보다 항목이 많이 생기네요
-
해결됨Flutter 앱 개발 기초
shared_preferences 패키지 설치하고나면 새로운 파일이 안생겨요
shared_preferences 패키지 설치하고나면 generated_plugin_registrant.dart 파일이 생긴다고하셨는데 패키지 버전이 올라가면서 이제 안생기는건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
클라이언트 강제 종료 시 플레이어 삭제 기능
안녕하세요 루키스님part4 강의로 만들어진 서버와part5에서 만들어진 클라이언트를조금 수정해가며 추가 기능을 만들던 중문제가 생겼는데 해결이 잘 안되어서 질문드립니다.우선 추가하려는 기능은 강의에서 배운 Q를 눌러서 종료하는 기능 외에플레이어(3명)들이 접속해있는 상태에서 언리얼 편집창을 닫아버렸을 때3명 모두 접속이 끊어지며 플레이어들을 서버에서 제거해주는 기능을 추가하려고 합니다..이 때, 발생하는 문제는player가 3명이고 objectId가 각각 1번부터 3번까지 있다고 했을 때,어쩔 땐 player들 모두 제거되고,어쩔 땐 player(2번), player(1번), player(1번)처럼objectId가 1번인 플레이어를 제거하는 처리가 중복 호출되며2번과 1번에 대한 삭제만 이루어지고,3번에 대한 삭제가 이루어지지 않는 문제가 발생합니다.아래는 작성한 코드입니다.먼저 GameSession::OnDisconnected()의 맨 마지막 줄에 GRoom->DoAsync()로Room::HandleLeavePlayer를 호출해주는 코드를 추가했고,이 때 들어오는 player들의 objectId들을 확인해봤을 때1, 2, 3 모두 중복 없이 들어오는 것을 확인했습니다.void GameSession::OnDisconnected() { if (player.load() == nullptr) { return; } cout << "objectId: " << player.load().get()->objectInfo->object_id() << endl; RoomRef room = player.load()->room.load().lock(); if (room == nullptr) { return; } GRoom->DoAsync(&Room::HandleLeavePlayer, player.load()); }다음은 Room::LeaveRoom()에서 위에서 말한 상황일 때파라미터로 들어오는 object가 중복으로 들어오는 걸 확인했습니다.if(!success) { return success; }는이미 삭제된 object를 중복으로 RemoveObject(objectId)를 할 경우 false를 돌려주는데밑에서 패킷 보내는 작업을 넘겨버리기 위해 추가했습니다.그리고 코드 거의 마지막 부분에GSessionManager.Remove(session)로세션을 제거하는 코드를 추가했습니다.bool Room::LeaveRoom(ObjectRef object) { if (object == nullptr) { return false; } const uint64 objectId = object->objectInfo->object_id(); bool success = RemoveObject(objectId); if (!success) { return success; } // 퇴장할 플레이어에게 퇴장 패킷 전송 if (object->IsPlayer()) { PlayerRef player = static_pointer_cast<Player>(object); Protocol::S_LEAVE_GAME leavePkt; SendBufferRef sendBuffer = ClientPacketHandler::MakeSendBuffer(leavePkt); if (GameSessionRef session = player->session.lock()) { session->Send(sendBuffer); } } // 남아있는 플레이어들에게 퇴장 플레이어의 디스폰 패킷 전송 { Protocol::S_DESPAWN despawnPkt; despawnPkt.add_object_ids(objectId); SendBufferRef sendBuffer = ClientPacketHandler::MakeSendBuffer(despawnPkt); Broadcast(sendBuffer, objectId); // 퇴장 플레이어는 이미 room에서 빠져나간 상태라 Broadcast 불가 if (object->IsPlayer()) { PlayerRef player = static_pointer_cast<Player>(object); if (GameSessionRef session = player->session.lock()) { session->Send(sendBuffer); GSessionManager.Remove(session); } } } return success; } GameSession 소멸자virtual ~GameSession() override { cout << "~GameSession" << endl; player.store(shared_ptr<Player>()); }Player 소멸자Player::~Player() { cout << "~Player" << endl; session.reset(); }다음은 첫번째 실행 화면입니다.(실행 화면에 출력되는 줄이 뒤죽박죽이라 서로 다른 색으로 구별 해봤습니다..ㅠ)연두색으로 묶은 범위는 언리얼 에디터를 1번 실행했다가 닫았을 때의 단위로 묶었습니다.빨간색으로 밑줄 그어진 objectId: 숫자로 출력되는 부분은GameSession::OnDisconnected()에서 출력하고 있고,노란색으로 밑줄 그어진 Remove Objedct숫자로 출력되는 부분은Room::RemoveObject()에서 objectId를 출력하고 있습니다.첫번째 실행 화면에서는 처음 실행하고 바로 해당 문제가 발생했습니다.objectId: 3, objectId: 2, objectId: 1 순으로 중복 없이 잘 들어왔는데Remove Object3, Remove Object1, Remove Object1 처럼 출력되었고,2번 플레이어에 대한 제거가 되지 않았습니다.때문에 두번째, 세번째 실행에서는 접속한 3명의 플레이어가 모두 잘 제거됨에도처음에 제거되지 않은 플레이어 하나가 남아서언리얼 에디터 실행 화면에 보이는 플레이어가 총 4명이었습니다.다음은 두번째 출력 화면입니다.두번째 실행 화면에서는 5번째가 되어서야 해당 문제가 발생했습니다.그 전까지는 문제 없이 3명의 플레이어 모두 잘 제거되었습니다.마찬가지로 objectId: 13, objectId: 14, objectId: 15로 들어왔고Remove Object13, Remove Object15, Remove Object15로 실행되면서13, 15번의 플레이어만 제거되고 14번 플레이어는 제거되지 않았습니다.실제로 문제가 발생할 경우의 호출 스택을 따라가 봤을 때 OnDisconnected()에서GRoom->DoAsync(&Room::HandleLeavePlayer, player.load())로삭제 작업 예약 거는 것 까지는 플레이어가 중복 없이 잘 들어가는데예약했던 Room::HandleLeavePlayer()가 호출되고파라미터로 들어오는 플레이어의 objectId를 확인해보면이미 삭제된 플레이어가 한번 더 들어오는 경우가 생기네요.혹시 어떤 부분 때문일까요??
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
pyqt5와 pyside가 충돌
pyqt5와 pyside가 충돌을 해서 .exe 파일이 만들어지지 않아서 pyqt5를 uninstall 했는데도 exe 파일이 만들어지지 않네요. 이럴 때 파이썬을 다시 삭제하고 설치하는 방법밖에 없나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
선생님...대체 뭐떄문에 틀린지 모르겠어요..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 선생님....선생님 해설보기전에 스스로 풀어보고 내려는데 자꾸 12%에서 틀립니다.백준에서 반례도 열심히 넣어봤는데.... 전부 다 제대로 동작합니다 ㅠㅠ제 코드는 아래와 같습니다.IsPossible이라는 함수에서 이게 애초에 팰린드롬이 가능한지 아닌지 검사합니다.main에서는 팰린드롬이라면count배열에 알파벳 갯수를 기록해두고char 벡터에 NULL값 하나를 넣어서 생성해둡니다.받은 문자열의 길이가 홀수라면, 가운데 글자를 미리 삽입해둡니다.짝수라면 NULL양옆으로 알파벳순서대로 삽입합니다.모든 과정을 마친 후 NULL을 삭제합니다.출력합니다.선생님...부탁드립니다..정말 오래고민했어요 ㅠㅠㅠ선생님의 정답을 보기전에 꼭 해결해보고 싶어서, 이렇게 질문드립니다//#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <vector> #include <algorithm> #include <string> #include <cmath> #include <map> using namespace std; bool IsPossible(string s) { int count[26] = { 0 }; int len = s.length(); for (char c : s) { count[c-'A']++; } if (len % 2 == 0) { for (int i : count) if (i % 2 == 1) return false; } else { for (int i = 0; i < 26; ++i) if (count[i]%2 == 1) count[i]--; for (int i : count) if (i % 2 == 1) return false; } return true; } void PrintV(vector<char> c) { for (char i : c) { cout << i; } } int main() { string s; cin >> s; if (IsPossible(s)) { int count[26] = { 0 }; int len = s.length(); for (char c : s) count[c - 'A']++; vector<char> v(1); if (len % 2 == 1) { for (int i = 0; i < 26; ++i) if (count[i]%2 == 1) { count[i]--; v[0] = (char)(i+'A'); break; } } for (int i = 0; i < 26; ++i) { while (count[i] != 0) { if (v.size() % 2 == 1) { v.insert(v.begin() + v.size() / 2, i + 'A'); } else { v.insert(v.begin() + v.size() / 2 + 1, i + 'A'); } count[i]--; } } if(len%2 == 0) v.erase(v.begin() + (v.size() / 2)); PrintV(v); } else cout << "I'm Sorry Hansoo" << "\n"; }
-
미해결실전! Django 활용
urls.py 파일에 작성한 코드 분리 여부
안녕하세요. 정말 강의 재밌게 잘 듣고 있습니다.들으면서 궁금한 부분이 있어 질문드립니다./orders API를 예시로 들었을 때, urls.py 파일에 모든 코드가 작성되는데, 쿼리나 비즈니스 로직을 따로 분리하는 방식은 파이썬 프레임워크에서는 잘 사용하지 않는 방법인가요? 일반적으로 스프링에서는 service와 respository 클래스로 해당 코드를 분리하는 편이어서 이 차이점이 궁금합니다.
-
미해결백엔드 애플리케이션 성능 개선하기 - 기초편
비동기 분리에 대해서 질문드립니다.
안녕하세요? 강의쭉 잘 듣고 있습니다.강의에서 말씀해주시고자 하는 부분은 [IO대기시간이 있는 작업을 비동기로 돌려서 클라이언트쪽에 우선응답을 빠르게 주고, 나머지는 따로 알아서 처리하는 것]으로 이해했습니다. 말씀해주신 방법은 충분히 사용할 수 있는 방법이라고 생각합니다. 그런데 조금 논외로, 이렇게 분리하는 방식이 좋은 방향성인가?에 대해서 궁금증이 생기고 사실 이 부분에 대해 최근 현업에서도 꽤 고민하고 있어서 질문을 드립니다. 아무래도 쪼렙 주니어개발자다보니.. 이런 부분에서 부족함과 의문이 많이 있네요 ㅠㅠ 제 생각에, 단축 url을 만드는 api가 200을 내려준다고하면 저장까지 올바르게 완료됨을 전제해야한다고 생각합니다. 이렇게 생각하는 이유는, 단축 url을 저장하는 것까지가 일종의 핵심적인 로직에 포함되지 않나? 하는 생각입니다. 예를 들어 로그를 찍거나, 혹은 비즈니스로직이여도 그렇게 중요하지 않은 부분이라면 마음편하게 완료를 보장하지 않는 async로 돌려도 될것 같습니다.하지만 url저장처럼 핵심적인 로직에 관한 부분에 대해서는 200을 내려줄 거면 저장도 올바르게 보장되어야 하지 않나? 하는 생각이 듭니다. 다르게 말하면, 내려준 단축 url이 정상적으로 동작하지 않는데 200을 내려줘도 되나? 에 대한 궁금증입니다.(물론 핵심적인 로직에 대한 판단은 개개인마다 또 상황마다 다를 수 있지만요) 결론적으로 여쭤보고 싶은 부분은 아래와 같습니다1) 비동기로 나누는 부분의 기준이 강사님에게 있으실 것 같은데, 보통 어떤 기준으로 나누시나요?2) 추가로, 핸들링을 어떤식으로 하시는지도 궁금합니다. 예를 들면 위와 같이 저장하는 로직을 비동기로 뺏을 때, 실패한다면 보통 어떤식으로 핸들링을 하시나요?