묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
domain\user\User.java 파일에 updateName 메서드에 대한 궁금증이 있습니다.
package com.group.libraryapp.domain.user; import com.group.libraryapp.domain.user.loanhistory.UserLoanHistory; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id = null; @Column(nullable = false, length = 20, name = "name") private String name; private Integer age; // ManyToOne의 관계이기 때문에 List 사용 @OneToMany(mappedBy = "user") // mappedBy는 연관관계의 주인이 아닌 쪽에 붙는다. private List<UserLoanHistory> userLoanHistories = new ArrayList<>(); protected User() { } public User(String name, Integer age) { if (name == null || name.isBlank()) { throw new IllegalArgumentException(String.format("잘못된 name(%s)이 들어왔습니다.", name)); } this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Long getId() { return id; } public void updateName(String name) { this.name = name; } } 궁금증은 간단합니다. updateName과 setName의 차이점이 무엇인지 궁금합니다.updateName 또한 setName 처럼 User 객체의 name 프로퍼티를 변경해주기 위한 메서드로 보입니다.이름만 다를 뿐 형태가 똑같은데 굳이 updateName 이란 메서드를 만드는 이유가 궁금합니다.updateAPI에 맞춰서 통일성을 주기 위해 updateName 메서드를 만든 것인지, update의 요구 조건에 따라 updateName이 변경될 가능성이 있기 때문에 확장성 때문에 만든건지 아니면 어떠한 이점이 있는 것인지 등등 그 목적이 알고 싶습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
left outer join 쿼리가 생략되는 이유
@SpringBootTest @Slf4j @Transactional class JpqlApplicationTests { @Autowired EntityManager em; @Test @Rollback(false) void contextLoads() { Team team = new Team(); team.setName("맨유"); em.persist(team); Member member1 = new Member(); member1.setUsername("박지성"); member1.setAge(20); member1.setTeam(team); Member member2 = new Member(); member2.setUsername("드록바"); member2.setAge(24); em.persist(member); em.persist(member2); em.flush(); em.clear(); List<Member> resultList = em.createQuery("select m from Member m left outer join m.team t", Member.class) .getResultList(); } }member와 team이 다대일 연관관계입니다.member1은 team과 연결해주었고 member2는 연결해주지않았습니다.inner join 쿼리는 잘나가나 left outer join을 하면 쿼리가 아래와 같이 나갑니다. select m1_0.member_id, m1_0.age, m1_0.team_id, m1_0.username from member m1_0 <질문>제 생각에는 left outer join 은 어떻게 보면 member만 조회하는 것이랑 같은 결과니까 JPA가 자가판단해서 그냥 member만 조회하는 쿼리만 보낸다고 생각이드는데 맞게 생각한 것인지 모르겠습니다.<참고>on t.name='맨유' 를 추가하면 쿼리가 잘 나갑니다.List<Member> resultList = em.createQuery("select m from Member m left join m.team t on t.name='맨유'", Member.class) .getResultList();select m1_0.member_id, m1_0.age, m1_0.team_id, m1_0.username from member m1_0 left join team t1_0 on t1_0.team_id=m1_0.team_id and t1_0.name='맨유'답변 주시면 정말 감사하겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
C나 C++은 array가 스택영역에 할당되는 것으로 알고 있는데
C#에서는 Java와 마찬가지로 힙 영역에 할당되는 건가요?그렇다면 LIST를 동적배열이라고 했는데 array 역시 동적배열로 할당된게 아닌가요?
-
미해결일잘하는 마케터, MD에게 꼭 필요한 파이썬 데이터 분석
에러 질문드립니다.
# 셀레니움 module import # from selenium import webdriver ################################################################################################################################################################ # 2023.06.08 셀레니움 버전 업데이트로 인해 사용불가 ################################################################################################################################################################ # 2023.05.08 selenium webdriver 사용방법 변경 # from selenium.webdriver.common.by import By # from selenium import webdriver # import time # from time import sleep # from bs4 import BeautifulSoup # from selenium.webdriver.common.keys import Keys # import requests # import re # import os # # Dataframe # import pandas as pd # df = pd.DataFrame(columns=['idx','star','review']) # chrome_options = webdriver.ChromeOptions() # chrome_options.add_argument('--headless') # chrome_options.add_argument('--no-sandbox') # chrome_options.add_argument('disable-dev-shm-usage') # chrome_options.add_argument("user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36") # driver = webdriver.Chrome('chromedriver', options=chrome_options) ################################################################################################################################################################ # 2023.07.09 셀레니움 버전업으로 인한 코드 변경 ################################################################################################################################################################ from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By import time from time import sleep from bs4 import BeautifulSoup import requests import re import os # Dataframe import pandas as pd df = pd.DataFrame(columns=['idx','star','review']) service = Service(executable_path="chromedriver") options = webdriver.ChromeOptions() options.add_argument('--headless') options.add_argument('--no-sandbox') driver = webdriver.Chrome(service=service, options=options)안녕하세요. 해당 부분 다음과 같이 오류가 나오는데 어떻게 하면 좋을까요?NoSuchDriverException Traceback (most recent call last) <ipython-input-6-e1d24ca4db7f> in <cell line: 48>() 46 options.add_argument('--headless') 47 options.add_argument('--no-sandbox') ---> 48 driver = webdriver.Chrome(service=service, options=options) 2 frames/usr/local/lib/python3.10/dist-packages/selenium/webdriver/common/driver_finder.py in get_path(service, options) 42 43 if path is None or not Path(path).is_file(): ---> 44 raise NoSuchDriverException(f"Unable to locate or obtain driver for {options.capabilities['browserName']}") 45 46 return path NoSuchDriverException: Message: Unable to locate or obtain driver for chrome; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
apollo 서버 코드 질문합니다
질문입니다type Mutation {createBoard(createBoardInput: CreateBoardInput!):String } 에서맨 마지막에 왜 createBoard는 String이 붙고type Query{fetchBoards: [MyResult]}에서 fetchBoards는 맨 마지막에 String이 안 붙나요?fetchBoards: [MyResult]:String 이렇게 될수도 있지 않나요 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ const typeDefs = `#graphqltype Query{fetchBoards: [MyResult]}type Mutation {createBoard(createBoardInput: CreateBoardInput!):String } `;const resolvers = {Query: {fetchBoards: (parent, args, context, info) => {const result = [ { number: 1, writer: "철수", title: "제목입니다", contents: "내용이에요", },{number: 2,writer: "영희", title: "제목입니다",contents: "영희이에요",},{ number: 3, writer: "훈이", title: "제목입니다",contents: "훈이이에요", },];return result;} },Mutation: { createBoard: (_, args) => { console.log(args); onsole.log("========================="); console.log(args.createBoardInput.writer);console.log(args.createBoardInput.title);console.log(args.createBoardInput.contents);return "게시물 등록에 성공하였습니다"; }, }, };
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
IOCP 관련 질문이 있습니다.
이제 개발을 할때 WSASend함수를 통해 Scatter-Gether 방식으로 전달을 한다고 하면 내부적으로는 해당 데이터들이 하나의 Sendbuffe에 담겨서 가는지가 궁금합니다.WSASend에 요청한 데이터가 너무 커서 2번이상의 걸처 나눠서 전송이 된다면, 모든 데이터가 전송이 완료되어야지만 IOCP GQCS에서 완료되었다는 사실을 알 수 있는지 궁금합니다. 정리)1. Scatter-Gether를 통해서 여러 데이터를 보내면 내부적으로 1개의 Send Buffer에 담아서 보내지는지2.WSASend 호출 -> 데이터가 너무 커서 2개로 짤림이때 1개의 데이터를 전송 완료 후 GQCS OR2개의 데이터를 전부 전송 완료 후 GQCS에 등록 이 되는지 궁금합니다.
-
해결됨친절한 블렌더 - [LV.0] 입문 필수
오브제 모델링2에서 shade auto smooth를 사용하신 이유가 궁금 합니다.
오브제 모델링2 14분 정도에서 shade smooth가 아니라 shade auto smooth를 사용하신 이유가 궁금 합니다. 강좌에서 큐브와 피라미드의 모서리과 꼭짓점을 둥글게 만들기 위해서 shade auto smooth를 사용하시는데 이 상황에서는 일부분을 각지게 하는 것이 아니라 모든 꼭짓점과 모서리를 둥글게 만들어야 하니까 shade smooth가 더 적합한 거 아닌가요?
-
해결됨Windows 시스템 프로그래밍 - 기본
실행 중인 프로세스에 대한 질문
선생님 안녕하세요, 강의 재밌게 보고 있는 수강생 중 한명입니다"실행중인 프로세스 열거"를 듣고 있다가 하나의 궁금증이 생겨서 질문합니다. 영상을 이해한 바로는 시스템에서 실행중인 Process Handle 과 그 process가 사용한 메모리에 권한만 충족한다면 접근할 수 있다고 이해했습니다.그런데 여기서 제가 소유하지 않은 프로그램에 접근해서 메모리와 정보를 읽는 프로그램을 만들고 배포 유통 까지 하면 현행법상 문제가 발생하나요? 예를들어서, 어떤 회사가 A라는 프로그램을 만들었는데 그 프로그램을 모니터링하는 프로그램을 제가 출시한다면 거기에 따른 법적 제약이 있는지 선생님 경험의 바탕에서 궁금합니다. OS위에 돌아가는 process 간의 접근 제약이 그렇게 크지 않다는 것을 보고 갑자기 흥미로운 질문이 들어서 질문합니다 :D질문 봐주셔서 감사하고 강의의 주제에 다소 벗어나는 질문인 것 같지만 가볍게라도 답변해주셨으면 감사하겠습니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
opencv Yolo v3 inference
안녕하세요. 권철민 강사님유익한 영상 잘 보고 있습니다. 현재 opencv로 Yolov3를 inference하는 파트를 보고 있습니다.nms threshold 값이 예를 들어nms_confidence = 0.4이면 한 상자당 confidence score가 가장 높은 상자를 뽑아 for문을 돌면서 iou 값이 nms_confidence이상이면 제거하는 데 쓰이는 것이 맞는지 확인하고 싶습니다. 그리고 85개의 차원중에 5번째에 있는 객체가 있는지 없는 지를 판단하는 confidence (detection[5])은 안쓰는 지 여쭙고 싶습니다. 본 코드에서는 class_score 부분만 if문에 조건으로 사용하여 의아한 기분이 들어 질문 드립니다.
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코드의 이 부분을 다르게 풀었는데, 괜찮은지 질문드립니다!
private static void bfs() { while (!queue.isEmpty()) { int size = queue.size(); for (int i = 0; i < size; i++) { Point now = queue.poll(); for (int j = 0; j < 4; j++) { int nextX = now.x + dx[j]; int nextY = now.y + dy[j]; if (nextX >= 0 && nextY >= 0 && nextX < n && nextY < m) { if (board[nextX][nextY] == 0) { board[nextX][nextY] = 1; day[nextX][nextY] = day[now.x][now.y] + 1; queue.offer(new Point(nextX, nextY)); } } } } } }코드의 bfs 메서드이고, 큐의 사이즈만큼 순회하는 로직int size = queue.size(); for (int i = 0; i < size; i++) { Point now = queue.poll();을 추가했습니다. 결과나 과정 측면에서 봤을 때, 강의에서의 코드와 무슨 차이가 있는지 모르겠는데, 혹시 성능 상에서 기존 코드보다 많이 떨어지는 코드일까요? 이렇게 작성해도 되는지 궁금합니다. 이전 bfs 강의에서는 이렇게 큐의 사이즈를 구해서 순회하는 로직을 사용하더라구요.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
트랜잭션 추상화 후 커넥션 풀 관련 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.트랜잭션 추상화 후 트랜잭션 매니저에서 데이터소스를 통해 커넥션을 생성한다고 강의에서 말씀해 주셨습니다.@Transactional을 사용하면 커넥션 풀을 사용하는지 DriverManger를 통해 신규 커넥션을 생성하는지와 커넥션 풀을 사용한다면 어떤 커넥션 풀을 사용하는지 궁금합니다!
-
미해결자바스크립트 제대로 배워볼래?
Async Await 오류가 나서 문의드립니다.
안녕하세요.스크립트는 아래와 같이 작성하였으며,콘솔에는 3-12.AsyncAwait.html:20 Uncaught (in promise) TypeError: data is not iterableat calculateSum 이라는 오류가 나왔습니다.<!DOCTYPE html> <html> <head> <title>Document</title> </head> <body> <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> <script> var url ="https://74f8c451-bcda-46f0-820b-f63caee12b28.mock.pstmn.io/productList"; async function getData2(){ return (await axios.get(url)).data; } async function calculateSum(){ var data = await getData2(); var total = 0; for(var item of data){ total += item.price; } console.log(total); } calculateSum(); </script> </body> </html>어디가 잘못된걸까요...강의랑 똑같이 작성을 한거같은데..
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
이럴 때는 엔티티 관계 설정을 1:1로 해야하는지 1:n 으로 해야하는지 궁금합니다.
[질문 내용]https://www.inflearn.com/questions/958528이전 질문에 이어서 질문 드립니다.이전 내용을 간단히 요약하면 보안매체 엔티티와 보안매체가 갖는 토큰을 엔티티로 표현할 때, 보안매체 한 개에 유효한 토큰은 하나만 가질 수 있으므로 1:1 관계로 해야할지, 아니면 사용자에 연결된(만료된 토큰과 현재 유효한 토큰) 모든 토큰을 가지고 온 후, 그 이후에 유효한 토큰을 소스상에서 필터해서 얻어내는 식으로 하여 1:n으로 해야할지 여쭈어보았는데요. 답변으로 1:n으로 관계를 짓고, 유효한 토큰을 필터하는 식으로 하길 권해주셨습니다.이게 '보안매체에 유효한 토큰은 오직 한개' 라는 개념적인 관점에서는 1:1이지만, JPA에서의 엔티티 클래스로 표현해보자면 하나의 고객KEY를 외래키로 하는 토큰은 여러개가 있을 수 있으니 1(단일객체)가 아닌 N(리스트)로 표현하고, 비즈니스 로직상에서 유효한 하나를 뽑아서 현재 활성화된 토큰을 얻어낸다고 보면 되는걸까요?매번 쿼리를 통해 필요로하는 객체로 뽑아내다가, 이를 엔티티 클래스, 관계로 소스를 짜려니 어색하네요. 항상 감사합니다. 답변주시면 감사드리겠습니다!! ㅠㅠ
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
혹시 강의 중에 git clone 말씀하시는데, git 주소를 좀 알수 있을까요?
혹시 강의 중에 git clone 말씀하시는데, git 주소를 좀 알수 있을까요?
-
미해결만들면서 배우는 프론트엔드 DO IT 코딩 (Next.js, Typescript)
localhost:3000/api/user.info/totuworld 404 에러가 뜹니다.
userInfo가 받아와지지 않아서 계속 "사용자를 찾을 수 없습니다'페이지가 뜹니다.현재 아래와 같이 계속 뜹니다,강의를 다시보기 해보아도 문제가 발생합니다.어디를 확인해봐야할까요...?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 MVC2 입력폼처리
안녕하세요 MVC-2 강의중 2. 타임리프 - 스프링 통합과 폼강의자료 3~4페이지 중에서 질문이 있습니다. 첨부한 사진을 코드를 살펴보시면, 클라이언트가 /add 페이지를 요청할 때마다 new Item()을 생성하게 됩니다. 물론 new를 하는 이유는 타임리프가 제공하는 편리한 기능인 커맨드 객체를 사용하기 위함이라고 말씀하셨습니다.제가 궁금한 부분은, 실제 서비스에서 클라이언트는 단지 get을 할 뿐인데 이처럼 매번 객체를 생성하면 서버의 메모리가 낭비되지 않을까라는 생각이 들어서 질문을 남깁니다.실무에서 이같은 코드를 실제로 사용하는지 궁금합니다.아니라면, 실무에서 적용가능한 개선점도 말씀해주시면 감사하겠습니다.
-
미해결스프링부트 시큐리티 & JWT 강의
마지막 강의 질문드립니다.
여기서 super.doFilterInternal(request, response, chain);위 문장을 지워주셨는데 해당 줄을 지우면 회원가입 로직이 컨트롤러를 타지 않습니다.회원가입은 /join으로 매핑되어 있는데 JwtAuthorizationFilter의 doFilterInternal() 메소드를 타고jwtHeader 값이 없기 때문에 return을 만나 컨트롤러를 타지 않는 것 같습니다. 반대로 super.doFilterInternal(request, response, chain); 주석 해제하면 회원가입 로직은 진행됩니다만 마지막 강의에서 인증이 되지 않는 문제가 계속 일어나고 있습니다! SecurityConfig 클래스 코드입니다! 부족한 지식으로 제 생각이 다를 수 있지만 문제를 해결하지 못하고 있어 질문 드립니다ㅠㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
application/json;charset=utf-8 부분 질문
response.getWriter() 사용하면 나오는 문제라고 하셨는데그럼 스프링MVC 사용할때는 신경 안써도 되는 문제일까요?
-
해결됨그림으로 쉽게 배우는 네트워크
인터넷 동작 방식 문의
안녕하세요.정확히는 라우팅 관련 문의 입니다.[네트워크 구성] 인터넷 에서 강의한 내용을 보면본인 pc에서 짱구 pc로 ping 을 날렸을 때 출발지 ip와 목적지 ip는 변동이 없고 계속해서 맥주소가 변환되는 것을 볼 수 있는데요.처음에 본인 pc가 속한 네트워크에서 스위치를 거쳐 라우터로 갈 때 어떻게 알고 맥 이더넷 프레임의 목적지 맥 주소가 라우터의 맥주소로 입력이 되나요 ?
-
미해결Practical Testing: 실용적인 테스트 가이드
Stubbing을 주로 외부 api를 호출할 때 사용하나요?
안녕하세요~ 'Mockito로 Stubbing하기' 강의를 듣고 궁금한 내용이 있습니다.메일을 전송하는 부분을 stubbing하셨는데요.보통 어떤 경우에 실무에서 stubbing하여 테스트를 작성하나요? 감이 잘 안잡히네요..제가 이해한건 아래처럼 이해했습니다.sendMail 메서드에 대한 테스트는 '메일만 전송'하는 테스트를 작성한다.sendOrderStatisticsMail 테스트를 작성하는 도중 sendMail 부분은 이미 '1번'에서 따로 테스트 케이스를 작성했으므로 넘어가도 무방하다. 따라서 여기는 stubbing하여 간단하게 넘어간다. 즉, 이번 예시에서는 메일이지만 확장하여 생각해본다면 외부 api를 호출하는 경우에는 stubbing을 진행한다.