묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@Validated @Valid의 차이
[질문 내용]안녕하세요. 강의 너무 잘 보고 있습니다.한 번 다 보고 나서 다시 복습중인데, 좀 더 깊게 공부하려고 보니까 이해가 안 되는 부분이 생겨서 질문 드립니다..ㅠㅠ@Valid는 Controller가 호출되기 전 ArgumentResolver에서 인자를 생성할 때 WebDataBinder에 의해 검증 과정 중에 참조되는 어노테이션이라 Controller에서만 사용 가능하고, @Validated는 Spring에서 AOP기술을 적용하도록 하는 어노테이션이라서 스프링 Bean으로 등록되는 모든 객체에 적용이 가능하다는 글을 보았습니다.그런데 ArumentResolver 소스코드를 살짝 봤더니 @Validated와 @Valid를 모두 처리할 수 있도록 되어 있는 것 같더라구요.@Validated를 사용해서 AOP가 적용되면 어차피 AOP기술에 의해 핸들러가 호출될 때 따로 검증 과정이 일어날텐데, @Validated를 WebDataBinder가 처리할 수 있게 해 놓으면 검증이 두 번 일어나게 되는 거 아닌가요? 그리고 영상에 @Validated를 핸들러 메소드의 인자에 사용하셨는데, 이건 클래스에 @Validated를 붙이고 핸들러 메소드에 @Valid를 붙인 것과 똑같이 동작하나요?너무 복잡해서 어렵네요 ㅠㅠ
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
django.contrib.auth.forms.UserChangeForm 질문드립니다.
안녕하세요! 선생님 강의를 들으면서 장고로 게시판을 만들어 보고 있는데, 유저 모델을 수정(프로필 수정 기능)하는 뷰를 만들면서 UserChangeForm을 사용하고 있습니다. 이때 데이터베이스에 저장된 모델의 필드명은 변경하지 않고, 폼 화면에서 username 대신 id라고 화면에 나올 수 있도록 하려면 어떻게 해야할까요? 장고 깃헙보면서 손대봤는데 안되서 질문드립니다. 감사합니다/class CustomUserChangeForm(UserChangeForm): class Meta(UserChangeForm.Meta): model = get_user_model() fields = ['username', 'first_name', 'last_name', 'email']
-
미해결
다중 주문 상품의 변경
안녕하세요.선생님의 조언 하나를 듣고 싶어서 글을 남깁니다.!이는 여러 주문 상품에 관한 질문입니다.코드리뷰에 관한 부분은 아니고 제가 생각하는 절차적인 부분에서 조언을 얻고싶습니다.일단 주문을 전체 취소하지 않고 주문 내역 중 일부 상품을 삭제하고 상품을 등록하는 부분에 대해 고민을 하고 있습니다.클라이언트에서 주문 상품에 대한 정보를 새롭게 전달해 주었을 때 이를 단순히 기존 Order에서 setOrderItem으로 저장하면 연관관계의 주인이 아니기 때문에 어떠한 변경도 없습니다.그래서 기존 Order를 가져온 이후 getOrderItems()를 통해 삭제 및 등록을 진행했습니다.//given Order order = em.find(Order.class, 4L); List<OrderItem> orderItems = order.getOrderItems(); List<Long> newOrderLineItemId = Arrays.asList(9L); //when //삭제 List<OrderItem> removeOrderLine = orderItems.stream() .filter(orderItem -> !newOrderLineItemId.contains(orderItem.getItem().getId())) .collect(Collectors.toList()); orderItems.removeIf(removeOrderLine::contains); //등록 newOrderLineItemId.forEach( itemId -> { Item item = em.find(Item.class, itemId); OrderItem orderItem = OrderItem.createOrderItem(item, 10000, 2); orderItems.add(orderItem); }); 이러면 Order와 OrderItems 둘 다 영속 상태이기 때문에 변경 감지를 통해 OrderItems insert문이 전송되는 것 까지는 확인을 했습니다.하지만 기존의 존재하던 상품의 삭제에 따라 OrderItems에 delete문을 전송하는 것은 확인하지 못했습니다.그래서 뭘 놓쳤을까 고민하던 차 삭제되어야 할 OrderItems는 여전히 Order를 참조하고 있다는게 문제 같았습니다.removeOrderLine.forEach(orderItem -> { orderItem.setOrder(null); }); 다음 코드를 넣고 실행했더니 다음과 같은 결과가 나왔습니다.insertintoorder_item(count, item_id, order_id, order_price, order_item_id)values(?, ?, ?, ?, ?)2022-10-29 20:09:00.704 TRACE 7104 --- [ Test worker] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [INTEGER] - [2]2022-10-29 20:09:00.704 TRACE 7104 --- [ Test worker] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [BIGINT] - [9]2022-10-29 20:09:00.704 TRACE 7104 --- [ Test worker] o.h.type.descriptor.sql.BasicBinder : binding parameter [3] as [BIGINT] - [null]2022-10-29 20:09:00.704 TRACE 7104 --- [ Test worker] o.h.type.descriptor.sql.BasicBinder : binding parameter [4] as [INTEGER] - [10000]2022-10-29 20:09:00.704 TRACE 7104 --- [ Test worker] o.h.type.descriptor.sql.BasicBinder : binding parameter [5] as [BIGINT] - [15]2022-10-29 20:09:00.705 DEBUG 7104 --- [ Test worker] org.hibernate.SQL :updateorder_itemsetcount=?,item_id=?,order_id=?,order_price=?whereorder_item_id=?2022-10-29 20:09:00.705 TRACE 7104 --- [ Test worker] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [INTEGER] - [1]2022-10-29 20:09:00.705 TRACE 7104 --- [ Test worker] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [BIGINT] - [2]2022-10-29 20:09:00.705 TRACE 7104 --- [ Test worker] o.h.type.descriptor.sql.BasicBinder : binding parameter [3] as [BIGINT] - [null]2022-10-29 20:09:00.705 TRACE 7104 --- [ Test worker] o.h.type.descriptor.sql.BasicBinder : binding parameter [4] as [INTEGER] - [10000]2022-10-29 20:09:00.705 TRACE 7104 --- [ Test worker] o.h.type.descriptor.sql.BasicBinder : binding parameter [5] as [BIGINT] - [6]2022-10-29 20:09:00.705 DEBUG 7104 --- [ Test worker] org.hibernate.SQL :updateorder_itemsetcount=?,item_id=?,order_id=?,order_price=?whereorder_item_id=?2022-10-29 20:09:00.706 TRACE 7104 --- [ Test worker] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [INTEGER] - [2]2022-10-29 20:09:00.706 TRACE 7104 --- [ Test worker] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [BIGINT] - [3]2022-10-29 20:09:00.706 TRACE 7104 --- [ Test worker] o.h.type.descriptor.sql.BasicBinder : binding parameter [3] as [BIGINT] - [null]2022-10-29 20:09:00.706 TRACE 7104 --- [ Test worker] o.h.type.descriptor.sql.BasicBinder : binding parameter [4] as [INTEGER] - [20000]2022-10-29 20:09:00.706 TRACE 7104 --- [ Test worker] o.h.type.descriptor.sql.BasicBinder : binding parameter [5] as [BIGINT] - [7] 아! 주입되는 값에대해 정리해드리면 다음과 같습니다.클라이언트에서는 최종 변경된 아이템 ID 리스트만 넘어왔다고 가정했습니다. 이에 따르면 ORDER_ITEM_ID PK 6, 7인 값은 FK인 ORDER_ID 4는 정상적으로 NULL로 업데이트를 했습니다.이 과정에서 하이버네이트는 삭제가 아닌 참조를 지웠기 때문에 삭제가 아닌 null로 업데이트 하는 것이 맞는 판단이라고 정답을 내렸습니다.delete문이 나가도록 하고 싶어서 옵션을 추가했습니다.@OneToMany(mappedBy = "order", cascade = CascadeType.ALL , orphanRemoval = true) private List<OrderItem> orderItems = new ArrayList<>(); 하지만 막힌 부분이 존재합니다.초기 insert문에 order_id값이 존재하지않습니다! 그래서 찾아보니 createOrderItem() 메서드에서새로운 객체를 생성했기 때문이라고 판단했습니다.아 새롭게 추가되는 것은 비 영속상태였는데 이를 놓쳤습니다.이를 통해 원하는 던 바를 이루었습니다. 여기서 제가 조언을 얻고 싶은 부분은 정말 이 과정이 정답인가에 대해서입니다.orderItems.setOrder(null) 말고 다른 방법은 없을까?이는 OrderItems에 대한 변경인데 Order를 통해 처리하는 것이 맞는가?처음부터 OrderID를 통해 OrderItem들을 가져와 수정하는게 맞지 않을까?내가 생각한 절차에서 문제가 될만한 부분은 없는 것인가?등등.. 저에게 하나의 팁, 조언을 부탁 드리고 싶습니다. 긴 글 봐주셔서 감사합니다.
-
미해결파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
anaconda 설치방법(윈도우) 영상 1분 30초 문의
안녕하세요! anaconda 설치방법(윈도우) 영상 1분 30초에서 All users를 선택하셨는데 제가 실수로 Just Me를 클릭하고 다운로드를 받았습니다. 이대로 그냥 사용해도 괜찮을지 문의드립니다.
-
미해결[EduAtoZ] 빅데이터분석기사 실기 (with Python)
회귀분석 강의 누락 문의
안녕하세요강의 수강 중 이상한 점이 있어 문의합니다Part4. 회귀분석 강의에서 이상치가 포함된 경우 테스트 예측이 부정확함을 확인하였고, 다음 수업에 이상치 제어하여 학습 진행하는 내용을 진행한다고 하셨습니다.그런데 다음 수업으로 넘어가면 릿지 라쏘 규제 내용이 진행됩니다.혹시 강의 업로드가 누락된 것이 있는지 확인 부탁드립니다 - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨장고 설계철학으로 시작하는 파이썬 장고 입문
맥 파이참 개발환경설정 중 db.sqlite3 main database 가 비어있습니다..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.메인에 있어야 할 여러가지 tables 들이 생성되지 않았습니다슈퍼계정도 생성해서 홈페이지도 작동시켜보았습니다. 강의 잘 따라오며 진행 중인데 이번 오류는 잘 모르겠어서,, 질문 남겨봅니다 python manage.py migrate 적용해보았고 경로 다르게 설정하여 한번더 실행해보았는데 ..Apply all migrations: admin, auth, contenttypes, sessions터미널에서는 이렇게 표기가 되는데 파이참에는 떠있지가 않습니다 혹시 제가 무엇을 놓친걸까요 ?
-
해결됨
*급합니다 discord.py 오류의 해결법을 알려주세요
현재 디스코드 봇을 처음 만들고 있습니다지금 현재 vscode에서 파이썬 3.8.10 버전과 discord.py 2.0.1을 쓰고있습니다vscode에서 실행을 돌리면bot = commands.Bot(command_prefix="!")이 코드에서예외가 발생했습니다. TypeError init() missing 1 required keyword-only argument: 'intents' File "C:\Users\steve\Desktop\test4\test4.py", line 6, in <module> bot = commands.Bot(command_prefix="!")라고 오류가 뜨네요이런 경우 해결방법을 아시는 분 계실까요?전체 코드입니다.import discord from discord.ext import commands token = 'MTAyMjAyNDkzNzE4MTAyMDIwMQ.GHUJEl.F97peSnol7JiFMetVsqnIdaZELl7IZxIE7SXoo' bot = commands.Bot(command_prefix="!") @bot.event async def on_ready(): await bot.change_presence(status=discord.Status.online, activity=discord.Game("반갑습니다 :D")) print("Bot is ready") @bot.command() async def hello(ctx): await ctx.send("Hello world") bot.run(token)
-
미해결[2024년 출제기준] 웹디자인기능사 실기시험 완벽 가이드(HTML+CSS+JQUERY)
내부 스타일 서식 관련
index.html 작업 중인데 (강의 25번) 결과물을 봤을 때 container 밑에 있는 div style 서식이 먹히지 않습니다..(display:none;은 아직 보류)(div를 class로 이름을 줄 땐 잘 반영됩니다. 차라리 class로 이름을 줘서 반영하는 게 나을까요?)어디가 문제인지 확인해줄 수 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
psvm 실행시 warning 오류
13:40 경에 실행하는 psvm run이OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.라며 warning이 발생하고 이후에는 문제없이 로그가 나옵니다. 찾아보니 Run/Debug Configuration 에서 Modify options의 launch optimization을 바꿔주라는 말이 있네요, 근데 각각 어느 사람은 enable로 하라하고, 어떤 사람은 disable로 하라고 가르쳐줍니다. 각각의 차이점을 알기가 어려운데 차이점과 적용해야할 방안이 궁금합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘
학습에 크게 지장이 있는건 아니지만 단순 궁금해서 질문드립니다
Maze.cpp에서 player.Init(&board)를 할 때 Player class 안에 멤버 변수 _board에는 nullptr이 들어 있잖아요 그런데 Player.cpp에서 Init 함수 내에 _pos = _board->GetEnterPos( ) 를 호출 할 때 _board에는 nullptr이 들어있는데 어떻게 GetEnterPos( ) 를 호출 할 수 있는건가요?제 생각으로는 _board = board로 먼저 _board를 특정 주소값으로 세팅한 다음 GetEnterPos( ) 함수를 호출해야 되는 것 같은데 순서를 뒤바꿔서 해도 실행하는데 전혀 문제가 없더라구요 그 이유가 궁금합니다!
-
미해결실전! 웹사이트제작! Step by Step! (한국소비자원 소비자시대- 레이아웃제작 기초)
overflow:hidden 과 float에 대해 질문 드립니다.
contents 영역 제작하기_2 부분에서 자식요소가 float를 쓸 경우, 부모가 높이 값을 잃어 overflow:hidden 을 사용해야한다고 말씀하셨는데요,부모의 값에 overflow을 적용할 경우에 자식의 flow:left이 사라져서 아래와 같은 모양으로 보입니다.왜 이런 결과가 나오는지, 이럴 때는 어떡하면 좋을까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
내부 커밋
내부에서 롤백을 하면 스프링에서 rollback-only 처리를 해주는데 내부에서 커밋하는건 의미가 없는거 아닌가요 ? 그렇다면 내부코드에서 commit 하는 코드를 넣지 않아도 되는건가요 ?
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
시큐리티 회원정보 수정과 이미지 수정
안녕하세요.회원 정보 수정과 이미지 수정을 위해서 컨트롤러에서 아래의 코드를 추가하면 홈 화면과 프로젝트의 모든 url에서 에러납니다. ; 이런 경우 구글링 키워드를 어떻게 잡아야 할 지 모르겠어요.. 그리고 혹시 해결 방법이 있을까요? ;;;ㅠ << 추가 코드 - member controller >>@Autowired MemberUserDetailsService memberUserDetailsService;<< 에러 내용 >>
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Circuit breaker와 ErrorDecoder 동시 사용
강사님 안녕하세요? 강의 너무 잘 듣고 있습니다. Feign Client 강의에서 ErrorDecoder를 추가하여 try-catch문을 사용하지 않고, HTTP 에러 코드 별 처리 방법을 별도로 분리했었는데요.이번 강의에서처럼 Circuit breaker를 사용하면 API 호출 시 발생하는 모든 오류 상황에 대해 fallback 값이 전달되기 때문에 ErrorDecoder는 별도로 필요하지 않을 것 같습니다. 외부 API 호출하는 모든 케이스에서 circuit breaker를 사용한다면 ErrorDecoder는 불필요한 것이 맞나요?circuit breaker와 error decoder가 둘 다 필요하다고 한다면, error decoder은 어떤 역할을 할 수 있나요? 항상 감사드립니다.
-
미해결대세는 쿠버네티스 [초급~중급]
Authorizattion Secrets 이슈
안녕하세요 강사님,Secrets에 아무것도 보이지 않습니다. authentication 에서도 exec 명령후 etc 안에 Kubernetes 디렉토리가 없어서 인증 키 실습을 못하고 건너 뛰었는데.. 같은 문제로 안되는 건지 설명 부탁 드립니다. 같은 문제면 어떻게 해결해야 할지 도 알려 주시면 감사하겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안질문
큰돌님 교안 공부중 이해가 안되는 부분들 정리하여 올립니다! 1.#include<bits/stdc++.h>using namespace std;void f(vector<int> v[10]){v[0][0] = 1000;}int main(){vector<int> v[10];v[0].push_back(100);f(v);for(int i : v[0]) cout << i << " ";return 0;}// 1000위 코드에서 vector<int> v[10] 꼴의 10개의 vector를 넘기는 함수가왜 void f(vector<int>v[10] {v[0][0] = 1000;} 와 같이 작성되는 것인지 잘 이해가 되지 않습니다.그리고 분명 v[0][0]에 1000의 값이 들어갔는데,왜 v[0]의 값이 최종적으로 1000이 되는 것인지 잘 모르겠습니다. 100이 맞지 않나요? 2.그리고 2차원 vector 코드에서#include<bits/stdc++.h>using namespace std;void f(vector<vector<int>> &v){vector<int> vv;vv.push_back(10000);v.push_back(vv);}int main(){vector<vector<int>> v;f(v);for(int i : v[0]) cout << i << " ";return 0;}vv[0]에 10000이라는 값이 들어가고,이가 다시 push_back 함수에 의해 v[0]에 10000의 값으로 들어간다고 이해하면 되는걸까요?(2차원 vector를 넘기기 위해 1차원 vector 두 개로 풀어냈다고 이해하였는데 제대로 이해한걸까요?) 3.struct Point{int y, x, z;Point(int y, int x, int z) : y(y), x(x), z(z){}Point(){y = -1; x = -1; z = -1; }bool operator < (const Point & a) const{if(x == a.x) {if(y == a.y) return z < a.z;return y > a.y;}return x < a.x;}};위 코드에서 bool operator 대략적으로 이해는 하였는데, 정확히 a.x 가 의미하는게 무엇일까요?또한 위 코드에서 x가 1순위 y가 2순위 z가 3순위로 정렬되는것은 알겠으나사실상 어떤 상황이든 x가 1순위로 오름차순 정렬되지 않나요? z, y가 1순위가 되어 오름차순 정렬이 되는 상황이 있나요?그리고 return x < a.x; 코드를 지우고 실행시키면 에러가 나오는데 그 이유는 무엇인가요?
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
RCNN에서 손실함수 구하기
안녕하세요?RCNN의 경우 classification에 대한 loss는 구할 수 없고 다만 bounding box regression은 구할 수 있는지 이유가 궁금합니다.RCNN의 경우는 최종 값을 판별하는 분류기가 CNN과 분리되어 있어서 역전파를 할 수 없어 classification의 경우는 오차 함수를 구할 수 가 없다고 이해했습니다. 그런데 어떻게 bounding box regression은 Loss 값을 구할 수 있는지 궁금합니다. 구한 Loss 값으로 CNN이 업데이트가 가능한지요?바쁘신 와중에 답변 주셔서 감사합니다^__________^
-
미해결[리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편
Flat 분석에서 Depth 타입을 위한 배열은 왜 하드코딩일까요?
type FlatArray<Arr, Depth extends number> = { "done": Arr, "recur": Arr extends ReadonlyArray<infer InnerArr> ? FlatArray<InnerArr, [-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20][Depth]> : Arr }[Depth extends 01 ? "done" : "recur"];위의 코드에서 typescript가 [-1,0,1,...,20]로 배열을 하드 코딩한 이유는 1. 코드를 직관적으로 이해하기 쉽도록 하기 위함2. 메서드로 배열 생성했을 때, 해당 배열 생성을 위한 Array의 다른 메서드 의존을 없애기 위함+다른 배열 생성 방법 예시 중 하나) new Array(21).fill(0).map((_,i)=>i-1) 3. 다시 쓰지도 않을거고, 이정도 사이즈의 배열은 그냥 써도 된다.4. ??어떤 이유일까요?제로초님의 생각은 어떠신지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일대다 단방향은 무조건 피해야 하나요?
일대다 단방향 매핑에서 다음의 두가지 단점이 있다고 말씀해 주셨습니다.추가적인 update 쿼리의 실행엔티티가 관리하는 외래 키가 다른 테이블에 있음그런데 일대다 단방향 매핑을 맺을 때 updatable=false와 nullable=false를 추가하면 update 쿼리 없이 한 번에 insert 쿼리만 나가는 것을 확인했습니다.@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.REMOVE}) @JoinColumn(name = "parent_id", nullable = false, updatable = false) private List<Child> children = new ArrayList<>();물론 부모 자식간 관계가 변하지 않고 라이프사이클이 완전 동일한 경우에만 활용할 수 있을 듯 합니다.그럼 update 쿼리가 추가적으로 나가는 것은 해결한 셈인데 이런 경우에도 엔티티가 관리하는 외래키가 다른 테이블에 있다는 단점에 의해 다대일 양방향을 맺어줘야 할까요? 복잡한 실무에서는 그 패러다임 불일치가 많은 영향을 주나요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
DFS에 대해 궁금증이 있습니다.
안녕하세요!저는 DFS가 어떤 그래프?를 탐색하는 방법으로 알고있었는데부분집합구하기 문제풀이를 볼때 숫자가 들어있는 정점이 아니라D(1) D(2)이런 함수를 탐색하는걸로 보이더라고요. 함수도 정점인가요?이런것도 DFS인가요?? DFS가 정확히 뭔가요??