묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
jpa repository에서 JPQL 엔티티 리턴 관련 질문
내가 댓글 단 게시글을 조회할 때, @JPQL을 이용해서 다음과 같이 댓글 Repository에서 JPQL 사용해서 PostEntity를 반환하고 있는데, 이 방식이 혹시 문제가 있을까요? @Repository public interface CommentRepository extends JpaRepository<CommentEntity,Long> { @Query("SELECT DISTINCT c.post FROM CommentEntity c WHERE c.user.userId = :userId") Page<PostEntity> findPostByUserComment(@Param("userId") String userId, Pageable pageable); }질문은 다음 3가지 입니다.1. CommentRepository에서는 CommentEntity로만 반환하고 CommentEntity.getPost()를 통해 게시글을 가져오는 게 맞을까요? 아니면 위 코드대로 진행해도 괜찮을까요? 실무에서 선호하는 방식이 궁금합니다. 내가 댓글 단 게시글을 조회하는거니까, CommentRepository에서 메소드를 만드는 게 맞다 생각했는데 혹시 PostRepository에서 메소드를 구현하는게 더 좋을까요?만약 위 코드처럼 한다면, 다대일이기 때문에 fetch join을 추가해서 pageable 같이 써도 문제 없는게 맞을까요?
-
해결됨Supabase, Next 풀 스택 시작하기 (feat. 슈파베이스 OAuth, nextjs 14)
9.1 강의에서 생긴 servercomponent 변수
9.1장에서 user.action.ts의 getUser 함수에 serverComponent라는 속성이 갑자기 생겨났는데 이거에 대한 설명이 필요한 것 같습니다.
-
미해결Vue 3 중급 - Composition API
화면이 안나옵니다
(사진)
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
오타 제보
'업캐스팅은 this를 무시합니다.'에서출력값 오타 있습니다. 코드는 XY를 예시로 드는데 출력값은 PC로 나옵니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
String.valueOf(CNT)
3:03초보면 앞뒤 문자가 다르면 answer에 해당 i값을 추가하고 나서 cnt를 1로 초기화하는데 왜 소스코드에는 cnt>1이상인 경우를 추가해서 ans+=String.valueOf(cnt)를 해주는 건가요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
소수 판별기 질문이요!
C언어 기출변형 문제 9분대 소수판별기 질문드립니다.출력값 첫번째에 2가 들어가던데 함수에 2를 집어 넣으면 num=2, i=2 가 돼서 2<2는 성립하지 못하기 때문에 2는 답이 못되지 않나요?그리구 출려값에 소수들끼리 띄어쓰셨는데 왜 띄어쓰는지 모르겠습니다ㅜㅜ
-
미해결
equals 부분 제가 이해한 게 맞는지 궁금합니다
bucket.contains(value) << 이 부분에서 equals를 정의하지 않았기 때문에 서로 다른 인스턴스가 들어와서 비교에 실패했다고 이해했는데 맞을까요?ex) bucket.contains(m1) m1의 인스턴스는 x001 bucket.contains(m2) m2의 인스턴스는 x002
-
해결됨C개발자를 위한 최소한의 C++
생성자 궁금한거 있습니다
#include <iostream>using namespace std;class MyClass {public:MyClass(int a) : m(a) {cout << "base" << endl;}MyClass(const MyClass& rhs) : m(rhs.m) {cout << "copy" << endl;}~MyClass() {cout << "delete:" << m << endl;}void print() {std::cout << m << std::endl;}private:int m;};MyClass test(MyClass rhs){return rhs;}int main() {MyClass a = 10;MyClass b = MyClass(50);MyClass c = a;return 0;}결과로 base, base, copy, delete: 10, delete: 50, delete: 10이 출력됐습니다.[질문]MyClass a = 10;MyClass b = MyClass(50);이 둘의 차이가 무엇인가요? 특히 MyClass b = MyClass(50);의 base만 출력은 이해가 되지 않습니다.일단 임시객체를 만들었으니 base, 그리고 임시객체를 const MyClass& rhs의 인자로 넘겨줘서 copy, 그리고 다음줄로 넘어가면 쓸모없어진 임시객체 MyClass(50)이 삭제되서 delete 이렇게 3개가 출력될줄 알았는데 base만 출력돼서 이해가 되지 않습니다.. (이 부분은 찾아보니까 복사 엘리전이라고 하는데 맞나요?? 그래서 복사 생성자를 안쓴다는데 헷갈리네요 ㅠㅠ)그리고MyClass b = MyClass(50);MyClass c = a; 이 둘의 차이도 알고싶습니다.b,c 둘다 객체를 인자로 받고있습니다. 근데 b는 base를 출력하고 c는 copy를 출력합니다. 왜 b가 base를 출력하나요? 이와같은 복잡함을 덜기위해 explicit를 사용하는건가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간복잡도와 연산량의 관계 질문
안녕하세요 강사님.늘 강의 잘 듣고 있습니다.시간복잡도와 연산량의 관계를 질문 드리고 싶습니다.크기 N인 입력에 대해 코드의 연산량이 2n^2 + 3n 일때,빅O 표기법으로 시간복잡도를 표현하면 O(n^2)입니다.그런데, 실제로 해당 연산량이 주어진 시간에 통과하는지 판단할 때는 최고차항의 계수도 고려해야하나요?예를 들어, 1초에 연산량이 1억이고, N이 10000이라면 빅O표기법의 n^2은 1억이어서 시간 안에 통과하지만, 2n^2은 1억을 넘어 시간 초과가 발생하니, 실제로 위의 코드는 시간을 초과하는 코드라고 봐야하나요? 감사합니다.
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
질문있습니다.
- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다)- 이외의 문의등은 평생강의이므로 양해를 부탁드립니다- 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다- 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요.from urllib.request import urlopenfrom bs4 import BeautifulSoupimport reres = urlopen('https://davelee-fun.github.io/blog/crawl_test_css.html')soup = BeautifulSoup(res, "html.parser")data = soup.select('ul#dev_course_list li.course')for item in data:print (item.get_text())여기에서data = soup.select('ul#dev_course_list li.course')이부분을data = soup.select_one('ul#dev_course_list')data1=soup.select('li.course')이렇게 나누는 거랑 뭐가 다른가요?값은 같게 나오길래 궁금해서 여쭤봅니다,항상 감사합니다!
-
미해결스프링부트 시큐리티 & JWT 강의
이론강의
안녕하세요OAuth이론강의는 어디에있는지알수잇을까요?
-
미해결실전! 스프링 데이터 JPA
DB,검증코드 에서는 member가 다른팀을 가지고있으나 soutv에서 같은팀을 가지고있다고 하는문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.member = Member(id=1, username=member1, age=10)member.getTeam() = Team(id=1, name=teamA)memberList = [Member(id=1, username=member1, age=10), Member(id=2, username=member2, age=20)]member = Member(id=2, username=member2, age=20)member.getTeam() = Team(id=1, name=teamA)memberList = [Member(id=1, username=member1, age=10), Member(id=2, username=member2, age=20)]member = Member(id=3, username=member3, age=30)member.getTeam() = Team(id=1, name=teamA)memberList = [Member(id=3, username=member3, age=30), Member(id=4, username=member4, age=40)]member = Member(id=4, username=member4, age=40)member.getTeam() = Team(id=1, name=teamA)memberList = [Member(id=3, username=member3, age=30), Member(id=4, username=member4, age=40)]이부분이 soutv 프린트결과입니다.이부분부터 테스트코드인데요 여기서분명히 팀을 다르게넣어주었고 실제로 db에도 적용되어있습니다.@Test @DisplayName("entity test") void entityTest() { Team team = new Team("teamA"); Team teamB = new Team("teamB"); em.persist(team); em.persist(teamB); Member member = new Member("member1",10,team); Member member1 = new Member("member2",20,team); Member member2 = new Member("member3",30,teamB); Member member3 = new Member("member4",40,teamB); em.persist(member); em.persist(member1); em.persist(member2); em.persist(member3); List<Member> members = em.createQuery("select m from Member m", Member.class).getResultList(); for (Member memberList : members) { System.out.println("member = " + memberList); System.out.println("member.getTeam() = " + member.getTeam()); System.out.println("memberList = " + memberList.getTeam().getMembers()); } Assertions.assertThat(member.getTeam()).isEqualTo(team); Assertions.assertThat(member1.getTeam()).isEqualTo(team); Assertions.assertThat(member2.getTeam()).isEqualTo(teamB); Assertions.assertThat(member3.getTeam()).isEqualTo(teamB); } 어떤게 문제인지모르겠어서 질문남깁니다!entity code 도 남기겠습니다.package study.datajpa.entity; import jakarta.persistence.*; import lombok.*; @Entity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString(of = {"id","username","age"}) public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String username; private int age; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") private Team team; public Member(String username) { this.username = username; } public void memberTeamSetting(Team team) { if (this.team != null) { this.team.getMembers().remove(this); } this.team = team; team.getMembers().add(this); } public Member(String username, int age, Team team) { this.username = username; this.age = age; if(team != null) { memberTeamSetting(team); } } } package study.datajpa.entity; import jakarta.persistence.*; import lombok.*; import java.util.ArrayList; import java.util.List; @Entity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString(of = {"id","name"}) public class Team { @Id @GeneratedValue @Column(name = "team_id") private Long id; private String name; @OneToMany(mappedBy = "team") private List<Member> members = new ArrayList<>(); public Team(String name) { this.name = name; } }
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
평소에 궁금했던 sql 문의드립니다
예시 문제학생 테이블에서 성적이 80점 이상인 학생의 이름을 뽑아라.평소 쿼리를 짤때 보면 Select 이름 from 학생Where 성적 >=80;이렇게 해왔는데, 가끔 기출이나 이런걸 보면 답지에Select 이름 from 학생Having 성적 >=80;이런식으로 having 절을 유독 사용하는데,, 답은 똑같으나 꼭 having을 사용해야하는건지 헷갈립니다.선생님 강의가 여지껏 들은 강의중 최고에요.. 딴말 필요없이 필요한거만 긁어주시네요
-
해결됨모던 안드로이드 - Jetpack Compose 입문
이젠 아래와 같은 오류가 뜨는데 KSP가 문제 인걸까요?
파랑색 둘다 해봤는데 이유를 못 찾겠네요 ㅠㅠ
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
메모리스페셜(배열과 포인터) 질문있습니다.
이 문장이 이해가 안갑니다 ㅠㅠ arr배열이 가리키는 주소가 가지고 있는 값은 12면서 + 1을 하기 때문에 13이 나오는 것은 알겠는데 **를 2개쓰는 이유를 모르겠어요 포인터 변수도 메모리 주소(a - 자기가 위치한 곳)를 가지고 있고, 가지고 있는 값(b - 내가 가리키고 있는 주소)가 있습니다.여기서 arr은 a-자기가 위치한 곳을 가리킵니다. 그것의 값을 arr 가져오라고 하니 b-내가 가리키고 있는 주소를 가지고 오게 되고, 거기에 다시 *을 씌우니 12를 가지고 오게 됩니다. 거기에 1을 더하면 13이 되죠.그래서 최종값은 24 + 13인 37이 됩니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
그럼 업캐스팅과 일반 상속의 차이점은 무엇인가요?
앞에 태그명? 다른 것 빼고는 차이점을 못느끼겠어서요모든 문제를 업캐스팅이라고 가정하고 풀어도 가능한건가요?
-
미해결직접 활용할 수 있는 Git과 Github - 기초부터 협업까지
deveop 브랜치와 master 브랜치의 차이를 몰겠어요
6강까지 볼 때는 master 브랜치를 중심으로 기능을 추가하는 형식으로 이해를 했는데 deveop이 중심인 브랜치이고 feature이 기능을 개발해서 추가하는 브랜치 인건가요..?
-
미해결
API 와 xml 부분에서
import requestsfrom bs4 import BeautifulSoupurl = 'https://www.fun-coding.org/posts/dust-forecast'request_params = { 'serviceKey' : 'Bx2fQ8Kp7Ld1Rz5Mj9Nh3Gt6Ws4Uc0Vk1Ea8Hb7Jc3Xt9Fy6Dg0Sj2Zw7Ar4Li5Kq1Pv', 'returnType' : 'xml', 'numOfRows' : '100', 'pageNo' : '1', 'searchDate' : '2024-03-22', 'InformCode' : 'PM10' }res=requests.get(url,params=request_params)soup=BeautifulSoup(res.content,"lxml")data1=soup.find_all("item")for A in data1: data2=A.find("informcause") print(data2.get_text()) 이부분에서 저기 request_params 값에 """또는 ''' 이것을 넣으면 값이 안나오는데 왜그런걸까요? 분명 저렇게 문장이 길거나 엔터 많고 하는 값은 """안에 넣을수 있다고 했는데이경우는 적용이 안되고 그냥 아무것도 뜨지 않습니다. 밑에 처럼 해봤습니다. request_params =""" { 'serviceKey' : 'Bx2fQ8Kp7Ld1Rz5Mj9Nh3Gt6Ws4Uc0Vk1Ea8Hb7Jc3Xt9Fy6Dg0Sj2Zw7Ar4Li5Kq1Pv', 'returnType' : 'xml', 'numOfRows' : '100', 'pageNo' : '1', 'searchDate' : '2024-03-22', 'InformCode' : 'PM10' }"""
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
yml 파일 관리
안녕하세요 강의 들으면서 진행중인 토이 프로젝트에 적용시켜 보고 있습니다. gitignore 처리 된 yml 파일을 관리하는 부분에서 궁금증이 생겨 질문 드립니다. 현재 프로젝트엔 yml파일이 3종류 있는데(jwt, oauth 관련) 이렇게 yml 파일이 여러개인 경우 APPLICATION_PROPERTIES1,2,3 이렇게 여러개 만들어서 각각 적용해 주려고 합니다. 이게 좋은 방법일까요? 다른 방법이 있는지도 궁금합니다!그리고 cat 명령어로 yml 파일의 내용을 읽어 봤는데 강의에서처럼 파일 자체의 내용이 나오지 않고 APPLICATION_PROPERTIES 이라고 나오는데 정상적인건가요?
-
해결됨만들면서 배우는 리액트 : 기초
메인글자수정...
MainCard에 처음 나오는 이미지에 써지는 글자의 스타일은 어디서 수정을 해줘야 하는걸까요?찾아서 나름 해봤는데 전혀 변경이 안되어서요input에 넣은 글자가 이미지 위에 나올때 ...그 글자의 크기,색상,폰트 등의스타일은 어디서 바꾸어야 하는지...