묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
return new CreateMemberResponse(id); 필요성
@RestController @RequiredArgsConstructor public class MemberApiController { .. @PostMapping("/api/v1/members") public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member) { Long id = memberService.join(member); return new CreateMemberResponse(id); } @Data static class CreateMemberResponse { private Long id; public CreateMemberResponse(Long id) { this.id = id; } } 일 때, memberService.join(member); 의 반환 값이 엔티티가 아니고 단순히 Long id인 값인데도 return id; 로 안하고 CreateMemberResponse 클래스를 만들어 return new CreateMemberResponse(id); 로 하는 이유는 뭔가요 ? 처음에는 Long id = memberService.join(member); return id; 로 했다가 누군가가 inline으로 합쳐버려서 return memberService.join(member); 으로 만들어 버리면 memberService.join의 반환 값이 수정될 때 컴파일이 안뜨고, api에서 스펙이 바뀌어 오류가 생길 가능성이 있어서 컴파일 단계에서 막아버릴려고 CreateMemberResponse 클래스를 만들어 return new CreateMemberResponse(id); 를 해주는 것일까 생각도 들었는데, inline으로 합쳐버리고 memberService.join의 반환값이 바뀌어도 어차피 @PostMapping("/api/v1/members") public Long saveMemberV1(@RequestBody @Valid Member member) { Long id = memberService.join(member); return id; } 인 상태에서 inline하는 거니까 public Long saveMemberV1(..) {..} 에서 return값이 Long타입이 아니게 바뀌면 컴파일 뜰 것 같아서 그것도 아닌가 싶기도 하고 .. 유지보수할 때, 추적하기 쉬우려고 그러는 건가 싶기도 하고 .. 갑자기 든 생각인데, 일반적으로는 단순히 id만 반환할 일이 없으니 일반적인 케이스를 생각해 만드신 건가 싶기도 하고.. 이 케이스만 예외적으로 Long으로 써도 가능한 건지 궁금합니다 :]
-
미해결Axure RP 9,10 - 서비스 기획자를 위한 최적의 프로토타이핑 툴
XEIcon Interaction 관련하여 질문 드립니다.
안녕하세요. 유용한 강의 정말 감사드립니다. 강의를 들으며 조금씩 성장하는 Axure 활용 능력에 큰 만족감을 느끼고 있습니다. 다름이 아니라 요즘 선생님께서 소개해주신 XEIcon을 많이 사용하는데요, XEIcon에 대하여 'Rotate'와 같은 Interaction을 주면 기존의 아이콘과 다르게 클라우드 상의 동작이 이상하게 나타나는 문제를 발견했습니다. 'Axure 프로그램'의 시뮬레이션 기능에서는 해당 아이콘이 '아이콘의 중앙'을 중심으로 원하는 목표치 만큼 회전 했는데, 'Axure 클라우드' 상에서는 해당 아이콘이 '아이콘의 좌측 하단'을 중심으로 회전을 하더군요. 아무래도 문자형식의 아이콘이라 이런 문제가 발생하는 것 같은데... 아무튼 XEIcon의 중앙 좌표 값이 기존 아이콘과 다르게 (0, 0)이 아닐 것이라 생각했고, 해당 가설을 바탕으로 XEIcon의 (0,0) 값과 중앙값을 일일히 찾아보았습니다. 그 결과 XEIcon의 위로부터 세로 2/3지점과 왼쪽으로부터 가로 1/3 지점이 교차하는 점이 중앙값임을 발견했고, 30px 아이콘을 'Rotate'할 때 Anchor를 (5, -5)로 지정하면 'Axure 클라우드' 상에서 해당 아이콘이 아이콘의 중앙을 중심으로 회전하는 것을 알았습니다. 하지만 Rotate 간의 부자연스러운 떨림이 있었고, 무엇보다 'Axure 프로그램' 상의 시뮬레이션에서는 다시 해당 아이콘의 rotate 중앙값이 바뀌는 역설적인 현상을 발견했습니다. 1. 이 경우 'Axure 프로그램의 시뮬레이션'을 기준으로 Interaction을 구현해야 하나요, 아니면 'Axure 클라우드 시뮬레이션'을 기준으로 Interaction을 구현해야 하나요. 2. 아니면 애당초 다른 해결방법이 있을까요. 3. 만약 해결이 안된다고 하면 Interaction이 사용되는 아이콘은 적당히 타협하여 XEIcon이 아닌 다른 아이콘을 사용하는게 나을까요. (아이콘은 그냥 XEIcon으로 통일하고 싶어 큰 고민이 생기네요...) 아무튼 답변주시면 정말 감사하겠습니다. 남은 연휴 잘 보내시고, 앞으로도 건승하십셔.
-
미해결Slack 클론 코딩[실시간 채팅 with React]
두가지 궁금한게 있습니다! (axios vs useSWR, promise vs async await)
안녕하세요! 제로초님 단순히 궁금한 두가지가 있습니다! 1. 요청은 axios 로 보내고 데이터 받아오는것은 useSWR를 사용하는 이유의 개념이 잘안잡혀서요 캐시 컨트롤때문일까요? 2. axios 로 데이터 처리할때 async await 말고 promise 를 사용하시는 이유가 있을까요? 만약 async await을 사용한다면 기존 then, catch, finally를 어떻게 async await 문법으로 변경 할 수 있나요?
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
english = words_dict[q] 부분에서
englsih = words_dict[q] 부분에서 if user_input.strip().lower() == english.lower(): #공백제거 strip #소문자만들기 lower print("정답입니다.") break else: print("틀렸습니다.")if user_input.strip().lower() != english.lower(): print("정답은 {} 입니다.".format(english)) 이렇게 나오는데, 제 생각에는 그러면 english 는 해당 문제의 정답을 말하고, user_input은 유저가 입력한 정답인거로 이해했습니다. 그러면 if user_input.strip().lower.() == english.lower(): 부분에서 if user_input.strip().lower() == words_dict[q]: 로 대체해도 되지 않을까요? 왜 english 를 넣으셨는지 궁금합니다. 그래서 제가 english 를 words_dict[q] 로 대체하여 실행해 보았더니 잘 되는 것 같아서요.,
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요. Springboot에서 RDBMS를 사용하지 않고, 자체적으로 DB를 구현해서 사용하는 방법이 있을까요?
안녕하세요. 좋은 강의로 힘차게 완강했고 후속으로 여러가지 공부중에 있습니다. 강의에서는 H2 데이터베이스의 인메모리 DB를 사용했는데, Springboot에서 JPA, JDBC 등 RDBMS를 사용하지 않고, 직접 DB의 기능을 구현해서 사용하는 방법이 있을까 문득 궁금합니다. 단순 File 형태로 DB를 저장하고 관리하려고 하는데, 가능한 방법이 있을까요?
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
header.html에 context_object_name 미적용 이유 질문
header.html에 <a href="{% url 'accountapp:detail' pk=user.pk %}"> <span>내정보</span> </a> views.py에서는 context_object_name = target_user 로 했는데 여기서는 pk = target_user.pk 로 안 해도 되는 이유가 있을까요~??
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
text-align: center를 부모요소에 주는 이유
선생님 안녕하세요. 33:07초 쯤에서 inline-block을 중앙 정렬하는 방법 중 text-align: center를 자식 요소가 아닌 부모요소에 주는 이유가 무엇인지 궁금합니다.
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
24번째 줄 에서의 오류 ..?
import randomnumbers =[]number = str(random.randint(0,9)) #문자열로 다룬다, 문자열로 다루는 이유? #코딩하다보면 안다.for i in range(3): #3번 반복 while number in numbers: number = str(random.randint(0,9)) numbers.append(number)count_strike = 0count_ball = 0while count_strike < 3: count_strike = 0 count_ball = 0 num = str(input("숫자 3자리를 입력하세요 : ")) if len(num) == 3: for i in range(0,3): for j in range (0,3): if num[i] == numbers[j] and i == j: count_strike += 1 elif num[i] == number[j] and i != j: count_ball += 1 if count_strike == 0 and count_ball == 0: print("3 out!") else: output = "" if count_strike > 0: output += "{} 스트라이크".format(count_strike) if count_ball > 0: output += "{} 볼".format(count_ball) print(output.strip()) print("게임 성공") 실행을 시켜보면 elif num[i] == number[j] and i != j: IndexError: string index out of range 라고 떠서 어떻게 해야할지 뭐가 문제인지 모르겠습니다..
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
M 행렬에 대해서
내용을 듣다가 의문점이 생겨서 질문을 남겨봅니다! M 행렬을 곱한다는건 이해가 가는데, M행렬을 굳이 만들지 않고, v벡터와 동일한 형태의 벡터를 만들어서 그냥 둘끼리 더하는 연산을 해줬으면 그래도 됐지 않았을까 생각되는데 왜 굳이 행렬을 곱하려고 한건가요? v = (x,y,z) v2 = (k1,k2,k3) v1 + v2 = (x+k1, y+k2, z+k3) 이렇게 제가 원하는 translation 결과값을 얻을수도 있는데 왜 굳이 행렬을 어렵게 곱해서 결과를 얻어내려고 했는지 그 이유를 잘 모르겠습니다ㅠ
-
해결됨[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
(재질문) @RestController 는 꼭 필요한건가요?
안녕하세요 이전 질문(https://inf.run/hHQE) 에서 저의 질문 의도가 조금 잘못된 거 같아서 다시 질문 드립니다. 이전 답변에서 말씀 주신대로 @RestController 는 예외를 처리하는 것과는 별개이다. 라고 말씀을 주셨습니다. 그렇다면 작성한 CustomizedResponseEntityExceptionHandler 는 단순하게 모든 @Controller, @RestController 의 예외를 처리하는 기능만 함으로 @ControllerAdvice 만 필요한 게 아닌가요? @RestController @ControllerAdvice 이렇게 둘 다 붙인 이유가 궁금합니다.
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
login 후에도 로그인 창 뜨는 경우
안녕하세요! 강의 잘 만들어주셔서 감사합니다 잘 듣고 있어요! http://127.0.0.1:8000/account/user/ 에서 헤더 부분의 login 버튼을 클릭해서 이동하면 http://127.0.0.1:8000/account/login/?next=/account/user/ 이 주소로 이동하고 여기서 아이디와 비번을 입력하면 로그인이 되어 있는 상태임에도 불구하고 또 로그인 창이 떠서 로그인 버튼을 클릭한 후에 로그인에 성공했을 경우에 다시 로그인 창이 뜨는게 아니라 기존에 만들어둔 다른 url로 연결하고 싶은 경우라면 어떻게 해야 할까요..? login.html에서 <form action=""> 여기를 빈칸으로 해뒀었는데 이 부분을 수정해야 하는 걸까요?? 구글에 검색도 해 봤는데 어떤 식으로 검색을 해야할지조차 감이 안 와서 질문 드립니다
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
static파일 실패..관련..
안녕하세요, 강의대로 잘 따라해 나가다가, 컨테이너에서 볼륨까지 설정 다했는데, css적용이 안됩니다 ㅠㅠㅠ nginx로그입니다! 2021/09/22 03:08:47 [error] 31#31: *106 open() "/data/static/base.css" failed (2: No such file or directory), client: 125.179.59.200, server: , request: "GET /static/base.css HTTP/1.1", host: "158.247.211.203", referrer: "http://158.247.211.203/accounts/login/?next=/subscribes/list/" 이렇게 나와있는데 도저히 해결 방법을 모르겠습니다 ㅠㅠ nginx.conf 입니다! worker_processes auto;events {}http { server { listen 80; include mime.types; location /static/ { alias /data/static/; } location /media/ { alias /data/media/; } location / { proxy_pass http://django_container_gunicorn:8000; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }} 다른분들 질문글도 보고 다른 검색을 해봐도 어떻게 해결할지 방법을 모르겠습니다 ..
-
해결됨홍정모의 따라하며 배우는 C언어
visual studio x64, x 86
x64와 x 86의 차이가 무었인가요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
연산을 이용해서 풀어봤는데 괜찮을까요?
<html> <head> <meta charset="UTF-8" /> <title>출력결과</title> </head> <body> <script> function solution(a, b) { let answer = []; for (let i = 0; i < a.length; i++) { if (a[i] === b[i]) answer.push('D'); else if (a[i] - b[i] === 1 || a[i] - b[i] === -2) answer.push('A'); else answer.push('B'); } return answer; } let a = [2, 3, 3, 1, 3]; let b = [1, 1, 2, 2, 3]; console.log(solution(a, b)); </script> </body> </html>
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
일시적 리다이렉션 vs 영구적 리 다이렉션
영한님 안녕하세요. 강의 잘 듣고 있습니다! 일시적 리다이렉션과 영구적 리다이렉션에 대해 제가 잘 이해한게 맞는지 궁금하여 질문 드립니다. Post로 HTTP를 요청하였을 때 1. 301로 응답을 받게되면 응답받은 url로 이동하는데 이 후Post로 전달해준 데이터도 함께 전달을 하여 새로운 url에서 Post를 처리하는 것이고 2. 302로 응답을 받게되면 기존 url(Post로 받은 url)에서 Post로 전달받은 데이터를 사용하고, 경우에 따라 Get으로 새로운 url로 이동하는 것인가요?(데이터는 전달하지 않고 url만 get) 정확히 이해한것이 맞는지 궁금하여 질문 남깁니다! 좋은 강의 너무 감사드립니다! :)
-
미해결중급자를 위한 1 minute, 스낵 파이썬
코랩, Cython 변환 후, import 하면, list_append가 없다고 뜨네요. 저만 이런가요?
module 'test' has no attribute 'list_append' 각종 튜토리얼을 참고했는데도 별다른 이상한점이 없었어서, 질문 올려요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
FrontControllerServletV3의 기능중 이해가 안되는 부분이 있습니다.
Map<String, String> paramMap = createParamMap(request);ModelView mv = controller.process(paramMap);String viewName = mv.getViewName();MyView view = viewResolver(viewName);view.render(mv.getModel(), request, response); 안녕하세요 위 소스에 대한 내용이 궁금해서 문의 드립니다. 제가 이해한대로 우선 설명을 드리면.. Map<String, String> paramMap = createParamMap(request); request에서 받아온 값들을 Key, Value 형식으로 paramMap에 담아주는 역할을 함.(key: username, value : 34)이런식으로 ModelView mv = controller.process(paramMap); 주소값에 따라 value에 저장되어있는 컨트롤러(ex> MemberListControllerV3에서 저장한 viewName을 반환해준다(안에 값이 있으면 같이 보내준다(컨트롤러의 기능에 따라 저장된 값들) String viewName = mv.getViewName(); 이 부분이 위의 mv에 저장되어있던 값들중 viewName값(save-resultemd)을 가져온다. MyView view = viewResolver(viewName); 이곳에서 전체적인 경로(/WEB-INF/views/ + viewName + .jsp)를 조합해서 리턴할 풀 경로를 만들어준다. view.render(mv.getModel(), request, response); 이 부분이 제일 이해가 안가는 부분입니다. 모델에 있는 값들을 꺼내서 request에 담아서 jsp쪽으로 보내주는 내용인데.. render를 할 때 mv.getModel() 이 값에 모델 정보들을 넘겨주는데 getModel이라는 정보가 위에서 controller.process(paramMap)의 컨트롤러에서 process메소드를 실행해서 넣어준 mv.getModel().put() 값을 말하는게 맞는거죠? 그렇게 만들어준 값들을 view 화면에 넘겨주기 위해서 render를 할 때 mv.getModel정보를 같이 render에 넘겨줘서 render에서는 해당 값들을 뽑아서 request값에 setAttribute로 key, value로 넣어줘야 jsp 파일에서 쉽게 사용을 할 수 있기 때문에 render에서 request에 담아서 화면단으로 넘겨주는게 맞는거죠?? 정리가 안되는 부분이 있어서 문의글을 적으면서 차근차근 글을 적다보니 대략적으로 이런식으로 흘러가는거구나.. 하고 감이 잡히는 것 같은데 제가 이해하고 있는 부분이 맞는건지, 아니면 놓치는 부분이 있는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안드로이드와 연동 질문입니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 강의 잘 듣고 있습니다. 현재 팀 프로젝트로 안드로이드 앱 개발을 하는 중인데 apm를 사용해서 백엔드를 구성했었는데 문제가 생겨 스프링으로 전환하게되었습니다. 아예 기초도 몰랐기에 해당 강의를 수강했습니다. 스프링과 스프링 부트의 차이점을 찾아보면 간단하게 스프링을 간편하게 사용할 수 있게 해주는 것이 스프링 부트라고 이해했는데, 그렇다면 정보를 찾을 때의 경우에 스프링에 대한 자료가 훨씬 많은데 스프링부트를 사용하는데도 그 자료들을 써도 되는 건지요? 예를 들어 안드로이드와 스프링부트 연동에 대한 자료를 찾는데 거의 90퍼센트의 자료가 스프링 부트가 아닌 스프링과 안드로이드 연동이라는 제목으로 나와서 여쭈어봅니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
properties에 encoding을 추가해야 하는건 아닌가요?
application.properties에 spring.messages.encoding=UTF-8 위 문장을 추가해야 되는게 아닌지 궁금합니다. 테스트 케이스에서 에러가 나서요..
-
미해결인공지능 기초수학
밑이 0보다 작으면 안되는 이유가 무엇인가?
밑이 0보다 작으면 안되는 이유가 무엇인가? 수학을 몰라서... 어리석은 질문일까요? 강사분은 아예 답변을 안하시는 것 같은데요. 수강생분들 중에서 아시는 분이 계시면 답변 좀 부탁드립니다.