묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨김영한의 실전 자바 - 기본편
부모(Item) 클래스의 생성자 및 메서드의 접근 제어자가 public인 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 강의 잘 듣고 있습니다.해당 강의에서 부모 클래스인 Item의 생성자 및 print(), getPrice()메서드에 대한 접근제어자를 public으로 설정하셨습니다.제 생각에는 ShopMain 클래스에서 부모 클래스에 접근할 때에는 모두 Item의 자식(book, album, movie)을 통해서만 접근하는 상황이고 이러한 접근 방식이 옳다고 판단되어서 부모 클래스의 생성자 및 메서드의 접근 제어자를 protected로 설정하였습니다(당연하게도 해당 예제에서 실행 결과는 public으로 했을 때와 동일합니다).이 경우에 언젠가는 자식 클래스를 통해 접근하지 않을 경우가 발생할 수 있기 때문에 public으로 설정을 하신 걸까요? 아니면 protected로 설정하는 것이 조금 더 논리에 맞는 걸까요?package extends1.ex; public class Item { private String name; private int price; protected Item(String name, int price) { this.name = name; this.price = price; } protected void print() { //이름과 가격은 모든 자식에서 동일하게 수행하는 기능이므로 부모에 구현 System.out.println("이름:" + name + ", 가격:" + price); } protected int getPrice() { return price; } }
-
해결됨실리콘밸리 엔지니어와 함께하는 아마존 웹서비스(Core)편
url path로 ALB에서 서로 다른 EC2로 분기하는 방법
ALB는 path별로 분기할 수 있다고 했습니다.예를 들어 request url path가 /v1 는 API1 EC2로,/v2 는 API2 EC2로 routing하려고 합니다.API1 EC2와 API2 EC2는 서로 다른 타겟 그룹으로 설정되어야 합니까?같은 타겟 그룹으로 설정되어야 합니까? 또한 규칙과 리스너는 어떻게 설정을 해야하는지 궁금합니다.리스너를 추가할 때 나오는 설정을 보니포트별로 수신을 다르게 하여 다른 타겟그룹으로 라우팅하는 방법은 알 것 같습니다만, 특정 URL을 수신하여 라우팅하는 방법은 잘 모르겠습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
PATH 에러입니다..
[질문 내용]여기에 질문 내용을 남겨주세요. openjdk 22버전을 다운받아서 programfiles에 있는데다운 받은거를 어떻게 연동 시켜야하나요..?!
-
해결됨취업/이직에 성공할 수 밖에 없는 포트폴리오 전략 강의
안녕하세요 성과 작성 관련해서 고민이 있어서 질문드립니다!
안녕하세요 키키님! 강의 정말 잘 듣고 도움이 많이 되었습니다. 강의 토대로 포트폴리오를 구성하고 있는 중에 궁금한 점이 생겨서 질문 드리려고 합니다. -> 비슷한 프로젝트 A,B를 진행한 경험이 있는데요. 가장 최근 프로젝트가 B입니다. 성과는 A<B 가 더 좋아서 과거 A 프로젝트를의 이런 점을 보완해서 B프로젝트를 만들었고 성과가 더 좋았다! 라는 식으로 풀어나가고 싶은데 B프로젝트를 진행하면서 세웠던 목표 보다는 성과가 나오지 않았거든요.. 이럴 경우엔 성과 작성을 어떤 식으로 하는게 좋을까요? A보다는 B가 더 성과가 좋았으나 이번에 세운 목표보다는 성과가 좋지 않았다.. 솔직하게 쓰는게 맞는건지, 아니면 B프로젝트 진행 시 세웠던 목표를 지우는게 나은건지 헷갈려서 질문 드립니다 ㅠㅠ
-
해결됨[C#/.NET 7.0]어서와, WPF는 처음이지?
'DB CRUD 설계는 하고가야지' DI 오류
'DB CRUD 설계는 하고가야지' 에서 제일 마지막에 컴파일 할 때 services.AddSingleton<IDatabase<GangnamguPopulation>, GangnameguPopulationService>(); services.AddDbContext<WpfProjectDatabaseContext>(); App.xaml.cs에 등록이 안되어 있으니까 의존성 오류가 나더라구요. System.InvalidOperationException: 'Unable to resolve service for type 'UiDesktopAppTest.Interfaces.IDatabase`1[UiDesktopAppTest.Models.GangnamguPopulation]' while attempting to activate 'UiDesktopAppTest.ViewModels.Pages.DashboardViewModel'.'
-
미해결김영한의 실전 자바 - 기본편
오버라이딩의 조건
왜 오버라이딩하는 메서드의 접근 제어자는 부모 클래스의 메서드보다 더 제한적이면 안되는 건가요??
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
Ec2로 안하시는 이유가 있을까요?
Ec2로 안하시는 이유가 있을까요?
-
해결됨[C#/.NET 7.0]어서와, WPF는 처음이지?
Dependency Injection 커리큘럼 수강 중 문의 드립니다.
아래의 생성자가 호출이 되던데, 어떤 원리에 의해서 아래의 생성자가 호출이 되는 걸까요?dateTime을 매개변수로 하여 호출하는 곳이 없는 것 같은데...원리가 궁금합니다.. public DashboardViewModel(IDateTime dateTime){ this._idateTime = dateTime;}
-
미해결Practical Testing: 실용적인 테스트 가이드
PK값으로 테스트 할 때 질문입니다.
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 우선, 덕분에 테스트 코드를 작성하는데 많은 도움이 됐습니다! 현재 토이프로젝트 진행 중에 PK 값을 Long 타입으로 두고 @GeneratedValue(strategy = GenerationType.IDENTITY) 이 전략을 사용하니, tearDown을 해도, 전체 테스트에서는 create하고 삭제를 하니, PK인 Long이 1L인 것을 보장을 못하더라구요.그래서 create하는 메서드의 반환을 void로 했다가 Long 타입으로 반환하는데, 이렇게 하는 것도 좋은 코드인가요..?@DisplayName("사용자를 조회하면 사용자의 이름, 직업, 전화번호, 성별을 조회한다.") @Test void getUserInfo() { //given Register register = Register.builder() .name("name") .job(Jobs.STUDENT) .phone("010-0000-0000") .man(true) .build(); Long id = usersService.registerUser(register); //when UserResponse userInfo = usersService.getUserInfo(id); // then assertThat(userInfo.name()).isEqualTo("name"); assertThat(userInfo.job()).isEqualTo(Jobs.STUDENT); assertThat(userInfo.phone()).isEqualTo("010-0000-0000"); assertThat(userInfo.man()).isEqualTo(true); } // 단건 조회 public UserResponse getUserInfo (Long id){ Users user = usersRepository.findById(id). orElseThrow(IllegalArgumentException::new); return UserResponse.of(user); } 입니다!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
SpringConfig required a single bean, but 2 were found:
[질문 내용]여기에 질문 내용을 남겨주세요. Parameter 0 of constructor in hello.hellospring.SpringConfig required a single bean, but 2 were found: - memoryMemberRepository: defined in file [C:\Users\Han\IdeaProjects\hello-spring\out\production\classes\hello\hellospring\repository\MemoryMemberRepository.class] - springDataJpaMemberRepository: defined in hello.hellospring.repository.SpringDataJpaMemberRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfigurationspringconfig에 빈이 2개있어서 그런거 같은데어느 파일을 수정해야할까요 @Configuration public class SpringConfig { private MemberRepository memberRepository; private EntityManager em; @Autowired public SpringConfig(MemberRepository memberRepository) { this.memberRepository = memberRepository; } // @Autowired // public SpringConfig(DataSource dataSource) { // this.dataSource = dataSource; // } @Bean public MemberService memberService() { return new MemberService(memberRepository); } // @Bean // public MemberRepository memberRepository() { // return new MemoryMemberRepository(); // return new JdbcMemberRepository(dataSource); // return new JpaMemberRepository(em); // } } 생성자 주입을 못받고 있다고 합니다.@Autowired public SpringConfig(MemberRepository memberRepository) { this.memberRepository = memberRepository; }
-
미해결(2025 최신 업데이트)리액트 : 프론트엔드 개발자로 가는 마지막 단계
5.리덕스 유용한 툴 소개
npm install --save redux-devtools-extension설치명령어 실행시 에러가 난다면 터미널에서npm install --save @redux-devtools/extension 설치 후 store.js에서 import 하기import { composeWithDevTools } from '@redux-devtools/extension' 출처 누나슬랙 학생분께서 찾으신 자료
-
미해결스프링 핵심 원리 - 기본편
PrototypeBean 클래스는 Static 영역과 Heap 영역 모두에 존재하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]너무 기초 질문인가 싶지만 제가 맞게 이해하고 있는지 확신이 안 돼서 질문드립니다. 제가 이해하고 있는 내용들을 적었습니다. 아래 코드에서 static class PrototypeBean으로 되어 있는 PrototypeBean 클래스는 클래스 로더가 클래스들을 로딩할 때 Method Area(Static Area)에 적재되며, 이 Method 영역에선 인스턴스 객체들처럼 여러 개로 존재하는 것이 아니다. getBean(PrototypeBean.class)을 통해 조회할 때마다 생성되는 프로토타입 빈들은 Heap 영역에 생성되는 객체들이다.(마치 PrototypeBean이 static 클래스가 아닌 것처럼)결론적으로 PrototypeBean은 static임에도 불구하고 Heap 영역에 객체 형태로도 여러 개 존재한다.(조회되는 만큼) 혹시 위 내용들 중에 제가 잘못 이해하고 있는 부분이 있을까요? 자바 기본 문법을 배웠을 땐 static으로 지정하는 것들은 Method Area에만 있고, 객체별로 관리되는 게 아니기 때문에 Heap 영역엔 없는 거로 이해하고 있었는데, PrototypeBean의 경우엔 static임에도 Heap 영역에도 있어서 좀 생소하긴 합니다. 그래도 이 강의를 들으면서 프로토타입 스코프에 대해 이해한 대로면 위에 정리한 1, 2, 3처럼 생각되기는 하는데 제가 혹시 이해를 잘못한 부분이 있나 해서 확인받고 싶습니다. public class PrototypeTest { @Test public void prototypeBeanFind() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(PrototypeBean.class); System.out.println("find prototypeBean1"); PrototypeBean prototypeBean1 = ac.getBean(PrototypeBean.class); System.out.println("find prototypeBean2"); PrototypeBean prototypeBean2 = ac.getBean(PrototypeBean.class); System.out.println("prototypeBean1 = " + prototypeBean1); System.out.println("prototypeBean2 = " + prototypeBean2); assertThat(prototypeBean1).isNotSameAs(prototypeBean2); prototypeBean1.destroy(); prototypeBean2.destroy(); ac.close(); } @Scope("prototype") static class PrototypeBean { @PostConstruct public void init() { System.out.println("PrototypeBean.init"); } @PreDestroy public void destroy() { System.out.println("PrototypeBean.destroy"); } } }
-
해결됨배달앱 클론코딩 [with React Native]
keyboardavoidingView 관련 질문 입니다.
안녕하세요 아래 코드의 bottomSheet 내부에 채팅 창을 넣고자 합니다.. 그리고 카톡에서 키보드가 올라오면 보던 내용이 키보드를 피해 올라가는 것을 구현하고자 하고 있습니다. 아래 코드에서 BottomSheet 내부를 KeyboardAvodingView로 감싸주었을 떄는 내부 scroll이 동작을 안 하였습니다.. FlatList만 KeyboardAvoidingView를 사용하였을 때는 .. FlatList의 내용이 가린채로 키보드가 올라왔습니다..KeyboardAwareScrollview또한 내부 스크롤이 동작안하고 있었습니다.. 혹시 아래처럼 bottomSheet를 사용해 내부 요소들을 보여줄 때 보던 내용이 키보드가 올라와도 보여질 수 있도록 자동으로 밀려올라가는(스크롤되는,,) 방법이 없을까요?감사합니다.. import React, { useCallback, useRef, useMemo } from "react"; import { StyleSheet, View, Text, Button, KeyboardAvoidingView } from "react-native"; import BottomSheet, { BottomSheetFlatList } from "@gorhom/bottom-sheet"; import { FlatList, ScrollView, TextInput } from "react-native-gesture-handler"; import { KeyboardAwareFlatList, KeyboardAwareScrollView } from "react-native-keyboard-aware-scroll-view"; const BottomExample = () => { // hooks const sheetRef = useRef<BottomSheet>(null); // variables const data = useMemo( () => Array(50) .fill(0) .map((_, index) => `index-${index}`), [] ); const snapPoints = useMemo(() => ["25%", "50%", "100%"], []); // callbacks const handleSheetChange = useCallback((index: any) => { console.log("handleSheetChange", index); }, []); const handleSnapPress = useCallback((index: any) => { sheetRef.current?.snapToIndex(index); }, []); const handleClosePress = useCallback(() => { sheetRef.current?.close(); }, []); // render const renderItem = useCallback( ( {item} : { item : string } ) => ( <View style={styles.itemContainer}> <Text>{item}</Text> </View> ), [] ); return ( <View style={styles.container}> <Button title="Snap To 90%" onPress={() => handleSnapPress(2)} /> <Button title="Snap To 50%" onPress={() => handleSnapPress(1)} /> <Button title="Snap To 25%" onPress={() => handleSnapPress(0)} /> <Button title="Close" onPress={() => handleClosePress()} /> <BottomSheet ref={sheetRef} snapPoints={snapPoints} onChange={handleSheetChange} > <FlatList data={data} keyExtractor={(i) => i} renderItem={renderItem} contentContainerStyle={styles.contentContainer} /> < style ={{ backgroundColor : "blue"}}>all good all fine</TextInput> </BottomSheet> </View> ); }; const styles = StyleSheet.create({ container: { flex: 1, paddingTop: 200, }, contentContainer: { backgroundColor: "white", }, itemContainer: { padding: 6, margin: 6, backgroundColor: "#eee", }, }); export default BottomExample;
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
jdbc 연결 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.https://drive.google.com/file/d/13B3t74Z3Xy8CyY0XTSTYjosfFZOhgOMB/view?usp=sharing위는 프로젝트 파일입니다.db연결 까지 완료 했고 테이블까지 생성 했습니다.하지만, 홈 화면에서 회원 목록을 조회 하려고 하면,인텔리제이 콘솔창에 이와 같은 오류가 발생합니다.select * from member [42104-224]] with root causeorg.h2.jdbc.JdbcSQLSyntaxErrorException: Table "MEMBER" not found (this database is empty); SQL statement:select * from member [42104-224]db까지 연결을 잘 했다고 생각하는데, 대체 어디가 잘 못 되어 member테이블을 찾지 못하는지 모르겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO 선언할 때 @AllArgsConstructor 붙여준 이유
DTO 선언 시 @AllArgsConstructor를 붙여주셨는데 그 이유가 궁금합니다.Jackson 라이브러리가 정상적으로 JSON 데이터를 객체에 바인딩 해주기 위해 모든 인스턴스 변수를 포함한 생성자가 필요해서 그런 것인가요?혹은 단순히 컨트롤러 메서드에서 DTO 데이터를 전체적으로 초기화하기 위함인가요?
-
미해결유니티 AR로 만드는 FPS 게임
자동완성 기능은 어떻게 추가 하나요 ?
C# 스크립트 작성시 오타가 많이 나는데 자동완성 기능은 어떻게 추가하나요 ?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
수동으로 클래스 만들어도 되는건가요?
retrofit을 쓰다가@Get(path)Future<레스토랑디테일모델> get레스토랑디테일…요롷게 쓰셨는데 선생님께서 말씀해주시길 클래스 타입과 json타입이 딱 맞아야 한다고 해주셨잖아요 여기서 반환되는 클래스 타입을 json 시리얼라이즈 로 편하게 만들고 있는데 , json 시리얼라이데이션 안쓰고 수동으로 클래스를 만들어도 사실 되는거죠??!
-
미해결[리뉴얼] 처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화 전과정 익히기) [데이터분석/과학 Part1]
IOPub data rate exceeded. 영구 설정 방법, 디렉토리 경로 변경 문의
USvideos.csv 2.8메가 파일 open 하는 과정에서 대용량의 ? 파일이라 열 수 없는 에러가 나왔습니다IOPub data rate exceeded. The Jupyter server will temporarily stop sending output to the client in order to avoid crashing it. To change this limit, set the config variable `--ServerApp.iopub_data_rate_limit`. Current values: ServerApp.iopub_data_rate_limit=1000000.0 (bytes/sec) ServerApp.rate_limit_window=3.0 (secs)찾아보니 jupyter notebook 커맨드에서 jupyter notebook --NotebookApp.iopub_data_rate_limit=1.0e10 해당 명령어를 치니 재실행과 함께 일시적으로 동작이 되다 다시 파일을 끄니 동일한 에러가 발생 하였습니다. 해당 명령어를 영구적으로 열어주는 방법명령어 이후 디렉토리 위치가 "/Document"가 디폴트로 지정 되었습니다 원래 작업 하던 경로로 옮기는 방법이 궁금합니다
-
미해결[핵집] 2025 빅데이터 분석기사(필기)_과목 1~2
수업자료
안녕하세요,수업자료 통합본 요청드립니다.wjustdoit15@gmail.com 으로 부탁드립니다.감사합니다.
-
미해결Next + React Query로 SNS 서비스 만들기
회원가입 리다이렉트 오류
현재 상태는 201로 불러와도 redirect가 되지 않습니다.console.log()로 찍어보니 await signIn 이후로는 console.log()가 찍히지가 않았습니다.axios로 바꿔봐도 그대로이고 버전도 @auth/core 버전도 바꿔보았는데 꿈쩍 않습니다 ㅠ 물론 DB에도 정상적으로 데이터가 저장되고요.. 시간만 날리다가 도저히 안되겠기에 질문 남깁니다..signup.ts"use server"; import { signIn } from "@/auth"; import { redirect } from "next/navigation"; // import axios from "axios"; export default async (prevState: any,formData: FormData) => { // 입력값이 없거나 || 빈칸이 존재하지않을때 if (!formData.get("id") || !(formData.get("id") as string)?.trim()) { return { message: "no_id" }; } if (!formData.get("name") || !(formData.get("name") as string)?.trim()) { return { message: "no_name" }; } if (!formData.get("password") || !(formData.get("password") as string)?.trim()) { return { message: "no_password" }; } if (!formData.get("image")) { return { message: "no_image" }; } formData.set("nickname", formData.get("name") as string); let shouldRedirect = false; try { const response = await fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/api/users`,{ method : 'post', body: formData, credentials: "include", // 쿠기 전달 가능캐 함 }); console.log("회원가입상태 : ",response.status); // 회원가입시 이미 가입되어있을때 if (response.status === 403) { return { message: "user_exists" }; } shouldRedirect = true; await signIn("credentials", { username: formData.get('id'), password: formData.get('password'), redirect: false, }) } catch (err) { console.error(err); return {message : null}; } console.log("11") if (shouldRedirect) { console.log("리다이랙트"); redirect("/home"); } return { message: null}; };