묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
API Versioning 관련 질문
안녕하세요. 추후 확장성을 위해 api versioning을 진행하려고 합니다. ``` /api/v1/ - MemberController - PostController ``` 위처럼 v1폴더 내부에 총 2가지의 컨트롤러가 있다고 가정을 할게요. 그리고 URL을 /api/v1/members|posts 로 맞추고 싶습니다. <질문> 1. 모든 URL에 /api라는 prefix를 붙이고 싶습니다. 따라서 application.yml에 server: servlet: context-path: /api 로 설정해두었는데 실무에서 사용하는 방법일까요? 2. 각 컨트롤러에 @RequestMapping(value = "/v1/members|posts") 로 설정해두었는데 버저닝을 이렇게 진행하는게 실무에서 사용하는 방법일까요? 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO 분리 관련 질문
안녕하세요. DTO 분리에 관한 질문입니다. MemberController에 대한 Request/Response DTO들을 만든다고 가정하겠습니다. 1. CreateMemberRequest, CreateMemberResponse, GetMemberRequest, GetMemberResponse를 각각의 클래스 파일로 분리해서 만드는 방법 2. MemberDto라는 클래스를 만들고 내부에 inner class로 CreateMemberRequest, CreateMemberResponse, GetMemberRequest, GetMemberResponse를 만드는 방법 이렇게 2가지를 생각하고 있는데요. 처음에는 1번으로 진행하려고 했지만 DTO하나를 클래스 파일 하나로 빼려다보니 나중에는 파일이 너무나도 많아질 것 같아 걱정이 됩니다. 그래서 2번처럼 inner class로 만들면 파일의 개수를 줄일 수 있을 것 같아서 고민중인데요. https://velog.io/@ausg/Spring-Boot%EC%97%90%EC%84%9C-%EA%B9%94%EB%81%94%ED%95%98%EA%B2%8C-DTO-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0 인터넷을 찾아보니 위 글 처럼 inner class로 활용하는 방법을 소개하는 글이 있더라구요. 궁금한점은, 실무에서는 DTO마다 별도의 클래스 파일로 분리하여 관리하는 방법과 inner class로 분리하는 방법 중 어떤 방법을 더 많이 사용하나요? 감사합니다 :)
-
미해결Zapier로 노코드 업무자동화, 게으르지만 일 잘하고픈 분들을 위한 최고의 방법
구글슬라이드로 작성하신 강의안도 공유 받을 수 있을까요?
/
-
미해결Zapier로 노코드 업무자동화, 게으르지만 일 잘하고픈 분들을 위한 최고의 방법
강의안 관련
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
useReducer와 redux-saga를 같이 사용하는 상황에 대한 질문입니다.
제로초님 안녕하세요. 그간 제로초님 강의를 들으면서 배운 것을 바탕으로 프로젝트를 진행 중인데요. 확실히 강의를 들으면서 배운 것이 많아서 예전에비해서 훨씬 익숙하게 프로젝트를 진행하고 있습니다. 그런데 하나 막히는 부분이 있어서 여쭤보려고 하는데요. 비동기처리가 필요한 부분이거나 여기저기서 참고하는 global state는 redux-saga로 처리를 하고, 컴포넌트들 중에 관리할 state가 좀 많고 복잡하지만 컴포넌트에서 한정해서 사용되는 것들은 useReducer를 사용해서 관리를 해보려는 생각으로 코드를 작성하고 있는데요. redux-saga의 경우 작성해야할 코드의 양이 많은 편이니 local state는 이런 식으로 분리를 하면 코드 양도 줄어들고 관리하기도 편해지지 않을까 하는 생각이었습니다. 혹시 현업에서도 이런 식으로 처리를 하는 편인가요? 그런데 문제는 이 컴포넌트가 직접 global state를 바꾸지는 않지만, global state에서 데이터를 가져와야 하는데요. useSelector hook으로 가져오려고 시도했더니 hook은 function component 안에서만 사용할 수 있어서 안된다고 하더라고요. 그래서 우선은 액션을 하나 만들어서 해당 컴포넌트의 useEffect 안에서 global 데이터를 가져와서 컴포넌트의 state로 설정해주게끔 하기는 했는데요. 괜찮은 방법인가요? 아니면 좀 더 괜찮은 방법이 있을까요? 좋은 강의와 또 매번 빠른 답변 감사합니다.
-
미해결프로젝트로 배우는 Vue.js 3
여기서 에러가 발생했네요. timeout is not defined no-undef
잘 따라왔고, 강의 내용대로 타이핑 했는데, 여기서 에러가 발생했습니다. error in ./src/store/index.js Module Error (from ./node_modules/eslint-loader/index.js): D:\work\vue3-project\src\store\index.js 33:13 error 'timeout' is not defined no-undef ✖ 1 problem (1 error, 0 warnings) 소스 첨부했으니, 좀 봐주세요. 선생님 https://gitlab.com/ramiaros/vue3-project.git
-
미해결웹 게임을 만들며 배우는 React에 TypeScript 적용하기
useReducer 사용시 dispatch 함수에 generic으로 action 타입을 넘겨줄 때 에러가 발생합니다.
제로초님 안녕하세요. TicTacToe 코드에서 질문이 있습니다. const TicTacToe = () => { const [state, dispatch] = useReducer<Reducer<ReducerState, ReducerActions>>(reducer, initialState); ... if (win) { dispatch<SetWinnerAction>({ type: SET_WINNER, winner: turn }); dispatch({ type: RESET_GAME}); } ... } 위의 코드에서 SET_WINNER action을 dispatch 하는 부분에서처럼 dispatch에 generic으로 SetWinnerAction 인터페이스를 줘서 표기를 확실히하고 싶은데, 저렇게 하면 SetWinnerAction 부분에서 타입에러가 나면서 "Expected 0 arguments, but got 1" 이라는 메시지가 뜹니다. 현재 웹스톰 사용 중인데, type definition을 따라가보면 useReducer가 function useReducer<R extends ReducerWithoutAction<any>, I>( reducer: R, initializerArg: I, initializer: (arg: I) => ReducerStateWithoutAction<R>): [ReducerStateWithoutAction<R>, DispatchWithoutAction]; 여기에 매칭이 되더라고요. vscode로 보면 function useReducer<R extends Reducer<any, any>>( reducer: R, initialState: ReducerState<R>, initializer?: undefined ): [ReducerState<R>, Dispatch<ReducerAction<R>>]; 여기에 매칭이 되기는 하는데 어쨌든 IDE에나 컴파일해봤을 때나 같은 에러가 뜹니다. 이건 어떤 식으로 해결할 수 있을까요? 감사합니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
lock과 send에 관해서
안녕하세요, 이전 질문 글에 비슷한 내용의 질문이 있었는데 조금 다른 부분이 궁금해서 질문글을 올립니다. 1. Send를 할 때 lock을 건다. (현재 _pendingList가 비어있으면, RegisterSend() 호출하고 이게 끝나야 lock이 풀리게된다. ) 2. RegisterSend에서는 SendAsync를 호출하는데 true라면, 1에서 잡은 lock은 바로 풀릴것이다. 그런데 만약 false가 되면 3으로 넘어간다. 3. OnSendCompleted 에서 lock을 걸려고 한다. 👉 이 때 2번에서 SendAsync가 false가 되어 3으로 넘어온 경우라면, 1에서 잡은 lock이 아직 안풀렸을 것 같은 데 잡을 수 있나? 3번의 질문 내용이 궁금합니다. (1번에서 lock을 잡은 상태로 2번을 호출했고, 2에서 SendAsync의 return 값이 false가 되어 3으로 넘어올 때가 궁금합니다.) 제가 비동기 프로그래밍이 익숙하지 않다보니 이해가 부족해서 이런 질문을 올리게 되었습니다.😁 (제가 아직 뒷쪽 강의를 다 듣지 않았는데, 뒤 쪽에 혹시 이런 설명이 나올까요..?) 감사합니다(__) public void Send(byte[] sendBuff) { lock(_lock) { _sendQueue.Enqueue(sendBuff); if (_pendingList.Count == 0) // 대기중인게 하나도 없으니 해라. RegisterSend(); } } void RegisterSend() { // _pendingList가 비어있을 때만 여기로 들어온다. //_pendingList.Clear(); //_sendArgs.SetBuffer(buff, 0, buff.Length); while(_sendQueue.Count > 0) { byte[] buff = _sendQueue.Dequeue(); _pendingList.Add(new ArraySegment<byte>(buff, 0, buff.Length)); } _sendArgs.BufferList = _pendingList; bool pending = _socket.SendAsync(_sendArgs); if (pending == false) { OnSendCompleted(null, _sendArgs); } } void OnSendCompleted(object sender, SocketAsyncEventArgs args) { // 예약한 pendingList 완료됨 lock(_lock) { if (args.BytesTransferred > 0 && args.SocketError == SocketError.Success) { try { _sendArgs.BufferList = null; _pendingList.Clear(); if(_sendQueue.Count > 0) // 보내는동안 누가 또 Queue에 쌓았다. { RegisterSend(); } } catch (Exception e) { Console.WriteLine($"OnSendCompleted Fail {e}"); } } else { Disconnect(); } } }
-
미해결우디의 포토샵 강좌
Lasso tool 동시에 스페이스바
선생님 저는 스페이스바를 클릭하니 사진 전체가 움직입니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
DEVICE매크로 관련 질문있습니다.
#define DEVICE에서 GetDevice가 _device를 가져오는것인데 왜 두 번 가져오는건지 이해가 잘 가지 않습니다.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
android emulator 문제
android VDC에서 가상장치 만들고 실행하려하면 Haxm을 요구합니다만.. Haxm의 경우에 생각보다 설치하는게 복잡합니다. bios 설정도 변경해야 하는거 같고.. 다른 방법은 없는지 궁금하네요.
-
미해결프론트엔드 개발자를 위한 웹팩
1개 이상의 엔트리를 적용했을때
안녕하세요^^ entry강의에서 entry에 1개 이상을 적어줄수 있다고 하셨는데, 이 경우에는 output 설정을 어떻게 해야 할까요? ------------------------------------------------- entry: { login: './src/LoginView.js', main: './src/MainView.js' } ------------------------------------------------ output: { filename: 'bundle.js' } ------------------------------------------------ [name].bundle.js [id[.bundle.js 이런식으로 output에 옵션을 주면 자동으로 두개이상의 entry를 처리해주는 방식인가요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO의 위치에 관하여
Version 4 까지의 최적화를 하면서 Dto의 위치가 repository 까지 갔는데 DTO의 위치는 상황에 맞게 자유롭게 두는게 괜찮을까요?
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
강사님 elastic bean에 대해 질문 드립니다
루트가 travis에 이미지 파일을 빌드하고 그 빌드된 nginx, frontend, backend를 도커 허브에 푸쉬하고 , 엘라스틱 빈에서 도커 파일들을 가져와서 실행시키는데 이때 여기서 궁금한점이 docker compose 파일의 작성한것이 의미가 있는지 궁금합니다 . 왜냐면 엘라스틱 빈스톡에서는 도커 허브에서 빌드된 도커파일만 가져오는데 docker compose를 작성한 이유가 궁금합니다. 프로젝트 파일 전체를 가져오는것이 아니라 도커 파일만 pull 하는데 . 프로젝트 파일에 컴포즈 파일만 작성하더라도 이게 엘라스틱 빈스톡까지 영향을 끼치는건가요?
-
해결됨프리다(Frida)를 이용한 안드로이드 앱 모의해킹
frida -U -f com.android.chrome 명령 실행시, Not allowed to start activity Intent 에러가 발생합니다!
안녕하세요? 프리다 실습을 하던 중, frida -U -f com.android.chrome 명령 실행시 Not allowed to start activity Intent 오류가 발생합니다. 버전은 12.6.11로 강사님이 말씀하신대로 다 맞췄어요. 문제가 뭘까요.?
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
CI=false의 의미가 무엇인가요?
CI=false의 의미가 무엇인가요? 또한 process.env.NODE_ENV 에 들어가는 값은 어떤 원리로 클라우드 환경인지 개인컴퓨터 환경인지 파악할 수 있는 건가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
case (int)Choice.Scissors 이 부분에 대해서..
안녕하세요. 이제 막 처음 C#을 배우기 시작했습니다. 어떻게 시작해야 할 지 갑갑했는데, 좋은 강의 만들어 주셔서 감사드립니다. 강의를 보다가 궁금한 부분이 생겨서 질문을 드립니다. 앞서 const를 써서 만들 때는, 변수만으로는 case 뒤에 참조로 넣을 수 없어서 상수인자인 const를 쓰셨다고 하셨는데 나중에 enum을 쓸때는 앞에 변수 int를 쓰고 있는 점이 의문이 가서요. 제가 아직 문법에 대한 기초도 제대로 다지기 전이라 이해가 부족해서^^); 혹시 int를 저렇게 써도 괜찮은 이유를 알려주실 수 있을까요?
-
해결됨비전공자를 위한 진짜 입문 올인원 개발 부트캠프
함수에서 값을 실행하는 것과 반환하는 것의 차이
안녕하세요 그랩님! 함수 값 반환에 관한 강의를 듣다가 궁금한 점이 있는데요. return이라는 표현을 통해서 값을 '빈환'할 수 있다고 하셨는데, 단순히 함수를 실행해서 값이 나오는 거랑 반환하는 거랑 무슨 차이가 있는건지 개념 이해가 정확히 되지 않아서요. 혹시 차이를 설명해주실 수 있으신가요? 감사합니다! :)
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
클라우드 사용 질문
서버 배포에 사용할 클라우드와 React 배포에 사용할 클라우드를 다른 것으로 사용해야하는 이유가 있는지 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Disconnect 함수의 임계영역
안녕하세요 ㅎㅎ 궁금증이 생겨 질문드립니다. 강의 21분에 "Disconnect 함수를 동시 다발적으로 실행하거나 같은 Thread가 두 번 한다면" 이라고 말씀하셨습니다. Q.1 Disconnect 함수를 동시다발적으로 실행할 수 있나요? 다르게 말하면 DisConnect함수가 실행하는 내용이 임계영역인가요? 여러번 고민해봤는데 Disconnect를 호출하는 OnAcceptHandler는 인자로 스레드마다 독립적으로 하나씩 가지고 있는 clientSocket을 받고 clientSocket으로 Session.Start(clientSocket); 을 통해 Session 클래스의 객체를 초기화 해주기에 임계 영역이 아니라고 생각합니다. 후자로 말씀하신 하나의 Thread에서 실수로 코드에 두 번 기입해서 Disconnect를 하지 않는 이상 별다른 문제가 없다고 생각합니다. Q.2 매번 코드를 작성할 때마다 임계영역인지 아닌지 고민하면서 코딩하다 보면 머리가 터질 것 같습니다. 선생님께서는 눈에 보이는 임계영역에만 상호배제를 해주고 후에 배포 전에 테스트 단계에서 문제가 발생하면 그때 수정하는것도 현명한 방법이라고 생각하시나요? 조언 부탁드립니다!!