묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
안녕하세요! 페치 조인의 특징과 한계 강의 중 질문이 있습니다.
안녕하세요, 페치 조인의 특징과 한계 강의 중 질문이 있습니다. 갑자기 콜렉션에 대해 이야기를 하다가 batch Size로 넘어가게 되어... 제가 정확히 어떤 목적으로 batch Size를 사용하는지 이해를 못했습니다. 이렇게 이해를 하면 될지 여쭤볼 수 있을까요? 세 가지를 여쭤보고 싶습니다. 첫번째. Batch Size를 쓰는 내용이 아래가 맞는지 궁금합니다! 1. Collection은 Fetch join은 가능하지만, 페이징 API는 불가능하다. 2. Collection을 불러왔을 때, 페이징 API를 가능하게 하면서 N+1 문제를 해결 하기 위해 Batch Size를 쓴다. 3. BatchSize = 100를 사용하면 Team을 조회했을 때, Team이 1000개가 있다고 하면 100개씩 10번 불러온다. 4. 이 때는 Fetch Join으로 불러오지 않았기 때문에 페이징이 가능하다. 두번째, Batch Size를 쓰게 되면 정확히 컨텍스트 관점에서는 어떻게 되는지 궁금합니다! 1. TEAM 1000개는 일단 전부 영속화된다. 2. TEAM과 연결된 MEMBER들은 BATCH_SIZE = 100이면, 100개씩 나눠서 불러오고, 멤버가 1000명이라면 100개가 전부 차례차례 영속화 된다. 세번째, 두번째가 맞다면... 왜 한번에 가져오지 않는 건가요? 어찌됐건 여러번에 나눠서 다 가져온다면, 한번에 다 가져오는게 빠르지 않나요? 구글링을 해봐도 관련 내용이 잘 없어서 ㅠㅠ.. 설명 부탁드리겠습니다! 감사합니다...!
-
해결됨홍정모의 따라하며 배우는 C++
이것도 선택정렬 이라고 볼 수 있나요?
안녕하세요, 이제 뭔가 뚝딱뚝딱 해야 할것들이 늘어나는 것 같아서 점점 재밌어지네요. 머리도 복잡한건 덤 :) 교수님이 먼저 진행 하시기 전 먼저 구현을 해보라고 했을때 코드 짜본건데 결과적으로는 잘 정렬이 되었습니다. 혹시나 해서 배열 크기를 10으로 잡고 했는데도 결과는 1~10까지 오름차순 으로 잘 되었는데요, 교수님이 하신거랑 제가 한거랑 비교했을 때 차이가 크더라구요. 혹시 이것도 제대로 선택 정렬을 한 것이라 봐도 될까요? 디버깅으로 찍어봐도 제가 지금 헷갈려서 그런건지 이해가 좀 어려운것 같아요. 아래쪽 코드는 내림차순으로 나온건데 같이 첨부해 봅니다. 감사합니다. const int length = 5; int array[length] = { 3, 5, 2, 1, 4 }; cout << "current array: "; printArray(array, length); int swap = 0; for (int i = 0; i < length; i++) { for (int j = 0; j < length; j++) { if (array[i] < array[j]) { swap = array[i]; array[i] = array[j]; array[j] = swap; } //cout << array[j] << " "; } printArray(array, length); } // 5 4 3 2 1 /*for (int i = 0; i < length; i++) { for (int j = 0; j < length; j++) { if (array[i] > array[j]) { swap = array[j]; array[j] = array[i]; array[i] = swap; } cout << array[j] << " "; } cout << endl; }*/
-
미해결[React 1부] 만들고 비교하며 학습하는 React
input에 있는 x를 눌렀을 때, reset 버튼도 사라지도록 하려면?
SearchFormView.js에 있는 handleReset() 함수를 다음과 같이 변경해보았습니다. handleReset() { this.emit("@reset") this.show() }
-
미해결모의해킹 실무자가 알려주는, XSS 공격 기법
MySQL 파일
MySQL 파일이 있어야 할 자리에 Mariadb가 있는데 이름만 바뀐건가요? 버전은 8.0.13-0입니다.
-
미해결스프링 핵심 원리 - 기본편
JPA 강의와 책의 관계에 대해 질문드립니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. '자바ORM표준 JPA프로그래밍' 도서 내용을 기반으로 JPA 로드맵이 구성되있는건지 궁금합니다. 예를 들며 챕터 몇부터 몇까지는 JPA기본편, 몇부터 몇까지는 활용1 이런식으로요...
-
해결됨처음 배우는 리액트 네이티브
Task 컴포넌트의 기능구현하기 삭제에서
Task 컴포넌트의 기능구현하기 삭제에서 삭제아이콘을 누르면 전부 지워집니다 또한 이런 에러메세지가 뜨네요 Warning: Each child in a list should have a unique "key" prop. 또 님의 깃헙에서 질문을 올리려면 어떻게 하는지 잘 모르오니 갈켜주시와요 소스파일 App.jsty import {StatusBar, Dimensions} from 'react-native'; import React, {useState} from 'react'; import {Text, View, LogBox} from 'react-native'; import styled, {ThemeProvider} from 'styled-components/native'; import {theme} from './src/theme'; import Input from './src/input'; import Task from './src/Task'; const Container = styled.SafeAreaView` flex: 1; background-color: ${({theme}) => theme.background}; align-items: center; justify-content: flex-start; padding: 30px; `; const Title = styled.Text` font-size: 30px; font-weight: 600; color: ${({theme}) => theme.main}; width: 100%; align-items: flex-end; padding: 0 20px; `; // 목록의 스크롤바를 스타일링 const List = styled.ScrollView` flex: 1; width: ${({width}) => width - 40}px; //목록화면의 좌우마진을 20으로 줌 `; LogBox.ignoreLogs(['Remote debugger']); export default function App() { const width = Dimensions.get('window').width; const tempData = { // Task list 1: {id: '1', text: '리액트네이티브', completed: false}, 2: {id: '2', text: 'Expo', completed: true}, 3: {id: '3', text: '자바', completed: false}, }; const [tasks, setTasks] = useState(tempData); const [newTask, setNewTask] = useState(''); // Task 목록추가하기 const addTask = () => { if (newTask.length < 1) { // 공백인 자료입력시 추가가 않되게 함 return; } const ID = Date.now().toString(); // 현재시간의 타임스탬프 const newTaskObject = { [ID]: {id: ID, text: newTask, completed: false}, }; // alert(newTaskObject); setNewTask(''); setTasks({...tasks, ...newTaskObject}); }; // 선택된 Task 삭제 const deleteTask = (id) => { console.log(id); // 현재 Task항목들의 객체와 동일한 변수를 생성 const currentTasks = Object.assign({}, tasks); // 해당되는 값을 가진 항목만 삭제 delete currentTasks[id]; // 선택된 항목만 삭제된 객체를 currentTask 에 대입ㄴ setTasks({currentTasks}); }; return ( <ThemeProvider theme={theme}> <Container> <Title>To Do List</Title> <StatusBar barStyle="light-content" backgroundColor={theme.background} /> <Input placeholder="작업추가하기" value={newTask} onChangeText={(text) => setNewTask(text)} onSubmitEditing={addTask} /> <List width={width}> {Object.values(tasks) .reverse() .map((item) => ( <Task key={item.id} item={item} deleteTask={deleteTask} /> ))} {/* reverse().map >>> 최근입력자료가 먼저나오게 함 */} </List> </Container> </ThemeProvider> ); } Task.js import React from 'react'; import styled from 'styled-components/native'; import PropTypes from 'prop-types'; import IconButton from '../components/iconButton'; import {icons} from '../components/icons'; import {Text} from 'react-native'; import Input from './input'; const Container = styled.View` flex-direction: row; align-items: center; background-color: ${({theme}) => theme.itemBackGround}; border-radius: 10px; padding: 5px; margin: 3px 0; `; const Contents = styled.Text` flex: 1; font-size: 16px; color: ${({theme}) => theme.text}; `; const Task = ({item, deleteTask}) => { return ( <Container> <IconButton icon={icons.uncheck} /> <Contents>{item.text}</Contents> <IconButton icon={icons.edit} /> <IconButton icon={icons.delete} item={item} onPress={deleteTask} /> </Container> ); }; Task.propTypes = { item: PropTypes.object.isRequired, deleteTask: PropTypes.func.isRequired, }; export default Task; IconButton.js import React from 'react'; import {TouchableOpacity, View} from 'react-native'; import styled from 'styled-components/native'; import PropTypes from 'prop-types'; import {icons} from './icons'; const Icon = styled.Image` width: 30px; height: 30px; margin: 10px; tint-color: ${({theme}) => theme.text}; `; const IconButton = ({icon, onPress, item}) => { const _onPress = () => { onPress(item.id); }; return ( <TouchableOpacity onPress={_onPress}> <View> <Icon source={icon} /> </View> </TouchableOpacity> ); }; IconButton.propTypes = { icon: PropTypes.oneOf(Object.values(icons)).isRequired, onPress: PropTypes.func, item: PropTypes.object, }; export default IconButton;
-
미해결Google 공인! 텐서플로(TensorFlow) 개발자 자격증 취득
tf.keras.backend 역할 문의
중간에 있는 tf.keras.backend는 현재 이미지 분류에서 어떤 역할을 하나요? tf.keras.backend.set_floatx('float64')
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
이런 걸 만드는 사고능력?
안녕하세요 루키스님! 항상 강의 잘 듣고 있습니다! 인벤토리도 벌써 몇번이나 돌려보고 있는데요. 좀 근본적인 궁금증이 있어서 질문을 드립니다.. 나름 공부는 열심히 하는거 같은데.. 만약 '인벤토리 시스템을 만들어 봐라!' 라는 문제가 나와서 만들라고 하면 어떻게 해야할지 생각도 안되고 감도 잡히지 않더라구요. 인벤토리 말고도 뭐 데이터 테이블을 만들어라..세이브로드 시스템을 만들어라 , 이런 것들.. 사고력이라고 해야할까요? 이런게 스스로가 느끼기에 많이 부족한 느낌입니다.. 물론 근본적으로는 공부가 부족해서 그런거같지만... 어떻게해야 이런 사고력이 늘거나 할까요? 그저 막무가내식으로 게임을 많이 만들어봐야할지.. 아니면 알고리즘을 많이 공부해야하는지.. 아니면 기초를 잡고 심도있게 파고들어야 하는지.. 아니면 자료구조를 파야하는지.. 지금 같은 상황에선 뭔가 남의 코드를 복붙 하는 느낌이고 이걸 응용해서 제걸로 만들지 못 하는 느낌입니다.. 강의와는 조금 먼 질문이라서 죄송합니다 ㅠㅠ
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
컴포넌트 라이프사이클 함수와 라우터 beforeEnter 시점차이 질문
안녕하세요 판교님.. 제가 강의를 따라가면서 의문점이 생겼습니다. 라우터 네비게이션 가드 beforeEnter 로직을 만들고 나서 페이지에 스피너가 남아있는 현상이 갑자기 생기더라구요. 저는 아래 이미지처럼 Root 인스턴스에 스피너를 켜고 끄는 것을 하나의 함수로 만들어 이벤트버스에 하나의 이벤트만 등록을 하여 사용하고 있었습니다. 다른 부분은 HOC, Mixin으로 페이지 컴포넌트의 created() 에서 데이터 패칭을 하면서 스피너를 켜고 끄는것이 정상적으로 작동했었는데 이번에 라우터 가드 부분에 해당 로직을 추가했던 NewsView에서만 스피너가 남아있는 현상이 생겼습니다. 왜 그런지 이해가 안가서 하나하나 로그를 찍어보면서 디버깅을 하던 와중에 라우터 가드부분과 Root App의 created, action부분에 로그를 찍어보니 라우터 가드 함수가 Root App의 created보다 먼저 로그가 찍히는 것을 발견했습니다. 결국 이 의미는 루트 컴포넌트에서 이벤트 버스 인스턴스에 이벤트를 바인딩하기전에 라우터의 beforeEnter가 실행되어 맨처음의 이벤트 emit이 발생했음에도 이벤트 바인딩이 되어 있지 않아 스피너가 켜지지 않았고, 데이터 패칭 중에 루트 컴포넌트에서 이벤트버스 인스턴스에 이벤트가 바인딩 된 후에, 마지막 이벤트 emit에 의해 스피너가 켜져있는 상태로 남았다는 결론이 되는데요.. 애초에 NewsView 페이지가 첫 페이지로 리다이렉트 되었기 때문에 루트 인스턴스가 생성되기 전에 네비게이션 가드가 실행된거기도 하고... 결국에 저 스피너 로직을 setTImeout과 같은 약간의 지연시간을 주면 잘 돌아가긴 하더라구요 그게 아니라면 토글식으로 스피너를 작동시키는 것이 아닌 판교님 강의해서 하신 것처럼 start시에는 true, end시에는 false를 각각 주는 방법으로 하면 티가 나진 않을텐데 이 현상을 잘 해결할 수 있는 방법은 어떻게 될까요? 글을 적다보니 길어진 것 같아 글이 잘 이해가 되실지 모르겠네요.. 죄송합니다
-
미해결빅데이터분석기사 실기대비 (R 활용)
training set, test set 나누는 문제
안녕하세요. 지난번 답변에 감사드립니다. 이번에는 trainning set과 test set을 나누는 것에 대한 질문입니다. 작업형 2유형 문제의 예시에는 이미 train데이터(X_train, y_train)와 test(X_test)데이터가 나누어져 있습니다. 그리고 train데이터를 이용하여 모형을 만들어 test데이터에 적용하여 분류를 하라고 되어 있습니다. 이경우에도 train set을 학습용과 검증용으로 나누어 모델링하고 모델별 성능을 검증해야 하는지요? 강의내용에는 glm과 rpart를 이용한 모델의 결과를 평균하는 것으로 정해져 있기에, 굳이 train데이터의 70퍼센트를 학습용으로 뽑고 나머지 30%를 검증용으로 나누어 학습모델(glm+rpart)의 성능검증을 하는 이유를 잘 모르겠습니다. 다른 모델들은 선택에서 배제되어 있기에 이와 같은 검증이 필요한지 의문입니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
강사님 질문입니다!!!
현재 loginService에서 DB에 있는 값 체크할 때 if(member.getPassword().equals(password)) { return member; } else { return null; } 이런식으로 비밀번호만 체크하잖아요? 근데 아이디가 틀릴 수도 있으니 아이디도 체크해줄려고 if(member.getLoginId().equals(loginId)) 이런식으로 조건을 더 추가를 해주면 비밀번호만 체크하고 아이디가 다를땐 500에러를 내거든요? java.util.NoSuchElementException: No value present 이런 에러인데요,.,. 아이디랑 비밀번호가 모두 일치해야 성공로직을 돌고 아이디가 없으면 아이디가 없다고 비밀번호가 다르면 비밀번호가 다르다고 이렇게 구성하려면 어떻게 해야할까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
컨트롤+c해도 서버 종료가 안되고 복사만 됩니다...
서버는 실행중이고 cmd에서 ctrl + c하면 아래처럼 복사만 됩니다 어떻게 하면 서버가 종료될까요??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
다른 서버에 있는 자료를 가져올때도 JPA를 사용할 수 있나요?
뜬금없는 질문이기는 한데.. 1. 가정 : - A, B, C라는 3개의 서버가 있습니다. - A : DB서버(보안상 중요) - B : A서버를 보호하기 위해 존재하는 서버 - C : 웹서버를 개발하는데 B를 통해 모든 정보를 조회/업데이트 하고 업데이트 결과가 A에 반영됨 - C 는 직접 A에 접근이 불가능하고 반드시 B를 통해서 모든 작업이 이루어져야 함. - C는 웹서버를 개발하는 서버 이런 가정일 경우에도 C에서 RESTFUL API로 개발을 하고, JPA를 사용해서 개발을 할 수 있을까요? 만약 가능하다면 엔티티를 DB 설정에 맞게 작업을 해 줘야 하는지, 아니면 엔티티 작업 없이 Controller/Service만 작업을 해서 Service에서 B를 접근해서 자료를 조회하고 업데이트 해도 되는건지 궁금합니다. 단순하게 생각해보면 굳이 엔티티 작업을 하지 않더라도 Service에서 모든 처리가 가능할 것 같은데.. 어떤식으로 작업을 하는것이 가장 좋을까요?
-
미해결스프링 핵심 원리 - 고급편
안녕하세요! 질문이 있습니다.
안녕하세요! 영한님, 언제나 좋은 강의 감사드립니다. 해당 수업을 들으면서 궁금한 사항이 생겨 질문 드립니다. 제가 해당 수업을 듣기 이전에는 그냥 막연하게 스프링 AOP에서는 프록시 객체를 런타임 시점에 바이트 코드를 조작해서 만들어 준다라고 알고 있었는데요. 런타임 시점에 바이트코드를 조작한다는 말은 잘못된 표현이라고 생각할 수 있을까요?? 해당 수업을 듣고 나니, 바이트 코드 자체를 조작하는 위빙은 컴파일 타임 위빙이나 로드 타임 위빙에서 바이트 코드를 조작하는 것이지 런타임 시점에서는 바이트 코드를 조작하는 게 아니라는 생각이 들어서요.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
저장 테스트 코드를 이렇게 작성하면 될까요?
@Testpublic void 저장() { //given Book book = new Book(); book.setName("hong"); book.setPrice(100); //when itemService.saveItem(book); List<Item> items = itemService.findItems(); //then System.out.println(itemService.findItems().toString());} //then 부분은 어떤식으로 작성을 해야할지 떠오르지가 않아서 items에 @ToString을 추가해서 system로그로 출력하게 테스트를 했는데 더 좋은 방법이 있을까요?
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
깃 권한 요청 드립니다!
인프런 아이디: glgl4454@naver.com 깃헙 아이디: ruret@naver.com 깃헙 username: slamdunk11 제가 gist에도 남기고 승인허가 메일도 받았는데막상 레포지토리 주소에 들어가니 404 에러가 떠서요ㅠ여기 한번 더 승인 부탁드리고자 글 남깁니다!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
eureka login portal
Load Balancer 실습을 위해 아래와 같이 세팅 후 테스트를 하였습니다. 정상적으로 eureka 서버에 client 등록이 잘 되었는데, first-service client를 들어가보니 아래와 같은 login 페이지가 나옵니다. 이런 경우는 어떤 경우에서 나오고, 해결을 어떻게 할 수 있나요?
-
미해결비전공자를 위한 개발자 취업 올인원 가이드 [통합편]
프로그램 언어 버전에 따른 서적구매
강의 유익하게 잘 듣고 있습니다. 그러는 와중에 서적 구매에 대해서 궁금한 점이 있어서 글을 남기게 되었는데 자바스크립트로 예를 들면 가장 최근에 나온 es2021과 es6같은 표준의 차이도 있고 다른 프로그램의 경우 버전의 차이도 있을 수 있을 것 같은데 3,4년 전에 나와서 이런 내용에 차이가 있어도 공부하는데에 별로 큰 영향은 없을까요? 특히 프론트 엔드를 방향으로 잡고 있는데 해당 부분은 최근에 발전한게 많다고 하셔서 궁금하네요
-
미해결빅데이터분석기사 실기대비 (R 활용)
작업형 제2유형
제가 비전공자에다가 관련 지식이 부족해 직접 작업을 수행하는데 있어 어려움이 있습니다. 문제는 이번에 수제비에서 낸 문제집에서 따왔습니다. 문제: 다음은 mtcars데이터 세트로 32개 자동차들의 디자인과 성능을 비교한 데이터이다. 훈련 데이터와 평가데이터를 7:3으로 분할한 후 연비(mpg)를 예측하는 최적모델을 만들고 RMSE로 평가 결과를 구하시오. 이 문제를 선생님이 알려주신 방법인 glm과 rpart를 활용한 방법으로 풀려고 하는데 계속 오류가 나거나 숫자가 이상하게 나옵니다. 혹시 이 문제에 대한 답을 스크립트로 적어주실 수 있으신가요? 데이터는 유명한 데이터 세트인 mtcars가 맞습니다. 제가 워낙 부족하다보니까 최대한 자세하게 R 스크립트로 보여주시면 감사하겠습니다. ㅠㅠ
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
15라인 for문에서
for(j=1;j<=is[i];j++){ } 이 부분에서요 처음에 i = 8 이라서 is[i]= 0 이 잖아요 근데 for(j=1; j<=0; j++) { } 이부분이 될수있나요?? 선생님꼐서는 예시를 5로 설명해주셨는데 5는 이해가되는데 i가 8일때 is[8] 이떄는 is[8]는 0이죠 이해가 가질않습니다..