묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO의 필요성이 와닿지 않습니다.
안녕하세요 강사님, 질문 드리겠습니다. DTO의 필요성에 대한 부분으로 "엔티티가 변경됐을 때 변경된 사항이 API 스펙에 적용되지 않아 API가 제대로 동작하지 않을 수 있다."라고 말씀해주셨는데요. 이러한 문제가 발생하는 V1에서는 받을 때는 Member, 돌려줄때는 CreateMemberResponse를 사용하고 있습니다. 그런데, 여기서 요청을 때, 응답을 줄 때 모두 Member를 사용해버린다면.. Member가 변경된다 하더라도 Response에서도 변경사항이 적용되기 때문에 문제가 없는 것 아닌가?? 하는 생각이 듭니다. 이 부분에 대한 추가설명을 부탁드리고 싶습니다. 감사합니다! ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 이어지는 강의들을 듣다보니 자연스럽게 이해되었습니다. 이해한 바를 바탕으로 질문에 대한 자답을 해보자면.. ************************************************** DTO를 반드시 사용해야 하는 이유는 다음과 같다. 1. DTO를 사용하지 않을 경우 엔티티의 변경에 의해 API 스펙이 변경될 수 있다. -> 엔티티와 API가 일대일 대응의 관계를 가진다면 엔티티에 수정이 일어날 때마다 API 스펙을 일일히 변경해줘야한다. 이는 매우 번거로운 작업이며 컴파일 에러로 이를 감지할 수 없기 때문에 에러 원인을 찾기가 어렵다. (DTO를 사용하면 DTO -> 엔티티 과정에서 컴파일 에러가 발생되므로 엔티티의 변경사항을 반드시 파악할 수 있다) 2. 하나의 엔티티에 대해서 API는 여러 개가 존재할 수 있다. -> 각각의 API가 요구하는 엔티티에 대한 데이터는 모두 다를 확률이 높다. 이때, 그냥 엔티티의 모든 정보를 넘겨줘버린다면 필요없는 데이터까지 받긴 하지만 필요한 건 전부 받은 셈이니 기능 동작에는 문제가 없을 것이다. 하지만 PW처럼 보안상 감추어야 할 정보까지 모두 JSON으로 함께 넘어가기 때문에 보안 문제가 발생할 수 있다. 엔티티 측에서 컬럼에 @JsonIgnore를 사용해 JSON 전달을 막을 수는 있지만 이는 엔티티가 API 스펙에 의존성을 갖게 되므로 좋지 않다. 유지보수가 복잡해질 뿐 아니라 다른 API에 대해서는 그때그때 또 변경을 해줘야 하는 쓸 데 없는 번거로움이 발생한다. 3. 엔티티를 그대로 넘겨줄 경우, 엔티티가 가진 정보 외의 것들은 넘겨주지 못한다. -> DTO를 사용하면 엔티티의 정보 외에 추가적으로 필요한 정보도 함께 넘겨줄 수 있다. ************************************************** 이 정도가 될 것 같습니다만.. 제가 놓친 내용이 있을까요??
-
미해결SVG 마스터
SMIL 애니메이션 중복 관련 질문드립니다. ( + 융의 땅 관련 질문 추가...)
안녕하세요! 강의를 들은지는 시간이 조금 지났지만 막상 적용하려다보니 잘 안되서 필요한 부분만 다시 듣는 중에 질문드립니다. 질문 : 하나의 도형이나 패스 안에 <animate> 두개를 사용하는 방법은 없을까요? 예를 들어 도형의 모양과 색상을 동시에 변형하고 싶은데 <animate> 태그 안에는 attributeName 속성이 하나밖에 들어가지 않는 것 같아서 질문드렸습니다. 감사합니다. ps 그리고 혹시 인터렉티브 웹 디자인이나 자바스크립트를 배우는데 있어서 참고가 될 만한 사이트(들)가 있다면 알려주실 수 있으신지도 부탁드립니다. (독해 가능한 언어는 한국어, 영어, 일본어입니다.) 강의에서 종종 언급되었던 모질라재단이나 어워즈, 그리고 스튜디오밀 등의 사이트는 큰 도움이 되었습니다. 그럼 좋은 하루 되세요! ------------------------------------ 안녕하세요! 아직 이전 질문에 답변을 해주시지는 않았지만 추가로 질문이 있어서 이전 질문에 추가로 작성하였습니다. 유튜브 채널에 있는 '캔버스로 융의 땅 만들기' 중에 질문사항이 생겼는데요, 해당 작업에서 class Light / class Lines/ class Particles 의 경우 constructor외부에서 메소드 draw() 를 선언(?)하고 있는데 왜 유독 class Characters의 constructor 안에서만는 this.setAction() 이라는 메소드가 포함되어 있는지 궁금해서 질문드립니다. constructor 내부에 this.함수() 가 포함되는 경우 그건 곧 새로운 인스턴스가 생성되는 순간 해당 this.함수() 를 호출한다는 의미가 되는걸까요? 아니면 호출이 아니라 단순 선언이 되는건지 잘 모르겠습니다. 어차피 requestAnimationFrame 으로 실행될때마다 new Character의 메소드 draw() 가 실행되는거라면 cm.context.drawImage() 와 마찬가지로 setAction() 메소드도 draw() 내부에 포함되서 실행시켜도 되지 않나요? constructor 안에 메소드를 포함시킴으로서 기대되는 효과가 있는지 궁금합니다. (혹시 setZOrder시 배열 참조에서 문제가 발생하기 떄문일까요? 하튼 잘 모르겠습니다) 첫번째 SMIL <animate> 관련 질문, 그리고 constructor 내부에 메소드를 선언(?) 하는 효과에 대한 질문 - 두가지 모두에 대해서 사실 직접 찾아볼 예정이긴 하지만 혹시나 하는 마음에 질문 남겼습니다. 뭔가 영화 인셉션처럼 꿈속의 꿈속의 꿈으로 들어와있는 느낌이라서 질문 자체가 애매한것같은데, 결국 여기에서 물어보는게 맞다고 판단했습니다. 그리고 질문과는 관계없이, 좋은 강의 만들어주셔서 정말 감사드립니다! 앞으로도 계속해서 업데이트 부탁드리겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
voice
Voice를 저도 실행 시키려고 했는데 오류가 뜨면서 실행이되질않습니다 ㅠㅠ Unable to open Assets/unity-chan!/Unity-chan! Model/Audio/Voice/univ0013.wav: Check external application preferences. 오류 내용으론 이렇게뜨는데 네이버 검색상 script Editor를 비쥬얼 스튜디오로 잘 설정되어있는지 확인해 보세요. [Edit] -> [Preferences] -> [External tools] -> [Exturnal Script Editor] -> [Visual Studio] 확인해보라고 합니다 하지만 비쥬얼스튜디오도 연결되어있는데 왜 안되는지 모르겠네요 ㅠ
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
선형회귀모델을 위한 데이터변환
타깃값의 경우 일반적으로 로그변환을 적용한다고 설명해주셨는데 positive skew, negative skew 인 두가지 모두의 경우 즉 분포의 왼쪽,오른쪽 쏠림 모든경우에 log변환을 하면되는건가요? 두경우다 쏠린값을 log값이 해결해주는것인지 궁금합니다. + feature값도 동일한 원리인지 궁금합니다 강의와 관련있는 질문을 남겨주세요.• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)• 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달에도 요령이 필요합니다.• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요! 구체적인 질문일수록 명확한 답을 받을 수 있어요.• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다. 기본적인 예의를 지켜주세요.• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA 관계 설정
안녕하세요! HTTP강의듣고 이번에 JPA강의도 듣네요 명강의 감사합니다. 계속 고민하다 궁금한게 생겨서 여쭤봅니다. Post Reply 관계에서 N : 1 그래프 객체가 Reply에있는 상태에서 강의에서 공부한대로, 혼자공부한대로 최대한 단방향으로 설정하려합니다. 근데 항상 고민이 됬던 것은 Reply를 save할 때, 해당 Post를 갖고와서. 즉, url : post/1/reply - @PostMapping 으로 Reply를 만들고자할때 Service단에서 ( 여기서 코딩하는거라 오타가있을수도...) @Transactional public void saveReply(ReplyServiceDto serviceDto){ // 우선적으로 post : 1 을 불러와서 Post post = postRepository.find(serviceDto.getPostId); Reply reply = Reply.builder() .postId(post) .content(serviceDto.getContent) build(); replyRepository(reply); } 이런식으로 하면 항상 reply를 save할때 post를 갖고와야한다는 불편함이있습니다. 그리고 url또한 post/1/reply 가아닌 reply 로 할때는 어떻게해야하는지... 그래서 찾아본 결과 1. Reply 쪽에 private Long postId; 딱 이것만 설정해놓고 따로 Post는 설정안하는 방법이 있더라구요. 물론 이게 무결성에 안좋다는건 알고있습니다. 2. 반대로 그냥 Post post 부분을 referencedColumn , DynamicInsert를 통해 null 로 넣을수도있다는... ( 이부분을 계속 시도는해보지만 FK로 안되는중 ) 너무 길었습니다. 결론은 그겁니다. 어떻게 해야 DB에 가는 성능상의 이슈를 풀수있는가. reply를 저장할때마다 post를 꼭 불러와야하는가. 이것에 대한 문제입니다. 그리고 한 post에 여러 reply가 달린 프로젝트에선 양방향은 또 어떨지... 궁금합니다 항상 좋은강의 감사합니다.
-
해결됨3. 웹개발 코스 [스프링 프레임워크+전자정부 표준프레임워크]
설치강의대로 3.7.?버전을 사용안하시고 강의진행하시면 따라하신 부분이 안될 수 있습니다.
안녕하세요. 최근에 설치강의대로 진행안하시고 안된다고 하시는 분들이 간혹계십니다. 최신버전을 사용하면 몇가지 함수가 삭제되거나 변경되거나 할 수 있습니다. 그렇기에 실무에서도 이미 안정적으로 돌아가고 사용되고있는 구버전 위주로 작업을 합니다.(최신기능이 필요할 경우에만 해당버전으로 교체.) https://mvnrepository.com/artifact/org.springframework/spring-context/4.3.20.RELEASE 이런식으로 요구하는 라이브러리 파일도 틀려지거나 합니다. 설치강의대로 3.7.?버전을 사용안하시고 강의진행하시면 따라하신 부분이 안될 수 있습니다. 라이브러리버전 차이입니다. 감사합니다.
-
미해결리액트로 나만의 블로그 만들기(MERN Stack)
모듈 오류
Cannot find module '@ckeditor/ckeditor5-dev-utils' 라는 에러가 발생하네요.. npm i @ckeditor/ckeditor5-dev-utils 을 해봐도 마찬가지로 에러가 나구요..... 어디서 문제인 걸까요
-
미해결[기초스피치] 14년차 아나운서에게 배우는 말 잘하는 방법!
숨 쉬는 포인크
퍼즈에서 숨을 참고 뒤쪽을 쭉 읽으려면 숨ㅇ 많이 차더더라고요 숨 참으면서 짧게 쉬어도 되나요?
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
nbextensions 설치
안녕하세요 강사님, 다름이 아니라 anaconda prompt에 (base) 가 뜨는 것을 확인 한 후 nbextiensions을 설치하였고 done이라고 뜨는 것까지 확인을 했습니다. 하지만 막상 jupyter notebook 에 들어가서 새로고침을 계쏙 해봐도 위에 nbextensions 탭이 뜨지 않습니다. 무엇이 문제일까요...
-
미해결실전 HTML & CSS 강좌
안녕하세요, 좋은 수업 감사합니다.
안녕하세요, 좋은 수업 감사합니다. 이번 강의를 들으려고 하는데 수업자료가 다운이 안 됩니다. 이런 경우에는 어떻게 해결해야하나요?
-
미해결실전! 스프링 데이터 JPA
엔티티 매핑 default 값
영한님 안녕하세요! 영한님은 엔티티 매핑시 default 값을 어떻게 넣는지 궁금해서 질문 드립니다 몇 가지 방법을 생각해 보았는데 1. @Prepersist를 통해 넣는다. 2.밑과 같이 그냥 값을 넣어준다. 제가 생각나는건 2개정도인데 영한님은 어떤식으로 default값을 넣어주시나요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코딩테스트에 관하여
안녕하세요 이번에 코딩테스트를 처음 준비하게된 학생입니다. 다름이아니라 코딩테스트에 궁금한점이 있어 질문드리게 되었습니다. 질문1) 코딩테스트를 할 때 웹에서 검색(구글링)을 할 수 있나요?(온라인, 오프라인 코딩테스트 모두) 질문2) 외부라이브러리는 사용가능한가요?(온라인, 오프라인 코딩테스트 모두) 질문3) 미리 자신이 만들어놓은 코드를 사용할 수 있나요?(온라인, 오프라인 코딩테스트 모두) 질문4) 코딩테스트에서 자신의 visual studio code에서 작업 후 복사 붙여넣기로 문제를 해결해도되나요? 읽어주셔서 감사합니다.
-
미해결데이터베이스 중급(Modeling)
강사님 다대다 관계에 관해서 질문이 있습니다.
다대다 관계를 보면 개별적인 객체간에 비즈니스가 끼어들면서 중간에 테이블을 생성하고 일대다 다대일 형식으로 풀어줘야 되는 것으로 알고있습니다. 궁금한점이 개념적으로는 객체 A가 객체 B를 포함하거나 소유하는 개념이 아닐 때 객체 A와 객체 B간에 관계를 맺어주어야 한다면 도저히 객체 A와 객체 B간의 다대다 관계가 안보여도 개별적인 객체간의 관계를 위해 중간 테이블을 생성하는 게 맞는건지요. 그리고 설명해주신 버스와 좌석처럼 has-a 관계, 포함관계일 때만 일대다 관계가 성립하는게 맞는건가요 ?
-
미해결하울의 안드로이드 인스타그램 클론 만들기
네이버,카카오로 로그인 기능은 못 추가 하나요?
구글,페이스북 말고도 파이어 베이스에 없는 네이버,카카오 로로그인도 넣고 싶은데 구현 불가능한 부분인가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
API와 라이브러리
선생님 API와 라이브러리는 같다고생각하면되나용?? 라이브러리 하니까 API가 생각나서 헷갈려서 적어봅니다.
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
E: Unable to correct problems, you have held broken packages.
npm i 에서 npm not found라고 뜨길래 npm 설치하려니까 E: Unable to correct problems, you have held broken packages. 위 에러가 발생해서 구글링을 해봤는데, 일단 내용도 많이없고 하라는대로 해도 되질 않네요... 그냥 인스턴스부터 다 지우고 다시 하는게 좋을까요?
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프1탄]
안녕하세요 질문입니다.
'Authentication plugin 'caching_sha2_password' cannot be loaded: ' 에러가 계속 나서 넘어가지 못하고 있습니다. 그리고 강의에서 mysql 워크벤치가 아닌 cli 형태로 계속 진행되는지도 궁금합니다. 원래 쓰던 mysql 계정이 있는데 새로 만들고 해야되는건가요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
회원가입이 안됩니다.
회원가입 창 가면 auth 에러, 회원가입 submit 하면 register 오류가 떠요.. 또한 터미널에서는 [nodemon] app crashed - waiting for file changes before starting... 오류가 계속해서 뜹니다 ㅠㅠ 몽고 DB가 연결이 안된건가요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
mysql 질문있습니다.
안녕하세요 제로초님! 잘 안되서 질문을 올립니다. export class HomeBannerListsEntity { @PrimaryGeneratedColumn('increment') id: number; @Column("simple-array") lists: BannerDto[] @CreateDateColumn() createdAt: Date @UpdateDateColumn() updatedAt: Date @DeleteDateColumn() deletedAt: Date} 위 코드는 typeorm entity쪽 코드이며, lists 컬럼에 배열을 넣고 싶어 'simple-array'라는 속성을 추가하였습니다. 일단은 배열은 해당컬럼에 저장은 되나 column값을 확인 했을시에는 [Object object] 이런식으로 데이터가 저장되는것을 확인했습니다. [Object object] 이 데이터를 파싱하는 방법이 없을까요? 현재 해본방법은 JSON.stringigy(data), util(nodejs 내장 모듈)을 이용한 utils.inspect(data) 로 해봤는데 잘 안되어 질문을 올립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
favicon 질문입니다~
안녕하세요 프로젝트 생성? 파트에서 localhost:8080 브라우저에 치면 강의에서는 주소 앞에 spring favicon이 뜨는 데 저는 안뜨더라구요. favicon 이미지 파일이 누락되거나 그런걸 까요?? 강의와 관련있는 질문을 남겨주세요.• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)• 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달에도 요령이 필요합니다.• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요! 구체적인 질문일수록 명확한 답을 받을 수 있어요.• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다. 기본적인 예의를 지켜주세요.• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다.