묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
PostForm에서 Input이 초기화가 되지않습니다.
짹짹 버튼을 눌렀을 때, 처음 클릭 시에만 해당 Input이 초기화 되고, 그 뒤로는 초기화 되지 않는 오류입니다.useEffect가 addPostDone이 바뀔 때 마다 작동이 되어야 하는데, Redux Devtool에서는 분명 변경이 되었음에도 , PostForm에서 변경이 없는걸로 감지가 됩니다. PostAction export const ADD_POST_REQUEST = 'ADD_POST_REQUEST'; export const ADD_POST_SUCCESS = 'ADD_POST_SUCCESS'; export const ADD_POST_FAILURE = 'ADD_POST_FAILURE'; const addPostRequestAction = (data) => ({ type: ADD_POST_REQUEST, data, }); export { addPostRequestAction, }; post.js (reducer)import shortId from 'shortid'; const dummyPost = (data) => ({ id: shortId.generate(), content: data, User: { id: 1, nickname: 'admin', }, Images: [], Comments: [], }); const reducer = (state = initialState, action) => { switch (action.type) { case ADD_POST_REQUEST: console.log('ADD_POST_REDUCER'); return { ...state, addPostLoading: true, addPostDone: false, addPostError: null, }; case ADD_POST_SUCCESS: return { ...state, mainPosts: [dummyPost(action.data), ...state.mainPosts], addPostLoading: false, addPostDone: true, }; case ADD_POST_FAILURE: return { ...state, addPostLoading: false, addPostError: action.error, }; default: return state; } };==Redux-Saga===index.js(rootSaga)import { all, fork } from 'redux-saga/effects'; import postSaga from './post'; import userSaga from './user'; export default function* rootSaga() { yield all([ fork(postSaga), fork(userSaga), ]); }postSagaimport { all, fork, takeLatest, put, delay } from 'redux-saga/effects'; import axios from 'axios'; import { ADD_POST_REQUEST, ADD_POST_SUCCESS, ADD_POST_FAILURE, } from '../reducers/Actions/post'; function* addPostRequest(action) { try { // const result = yield call(addPostAPI,action.data) delay(1000); yield put({ type: ADD_POST_SUCCESS, data: action.data, }); } catch (err) { yield put({ type: ADD_POST_FAILURE, error: err.response.data, }); } } function* watchAddPost() { yield takeLatest(ADD_POST_REQUEST, addPostRequest); } export default function* postSaga() { yield all([ fork(watchAddPost), ]); } ==Component==PostForm.jsimport { useCallback, useRef, useEffect, useState } from 'react'; import { Form, Input, Button } from 'antd'; import { useDispatch, useSelector } from 'react-redux'; import { addPostRequestAction } from '../reducers/Actions/post'; const PostForm = () => { const { imagePaths, addPostLoading, addPostDone } = useSelector((state) => state.post); const [text, setText] = useState(''); const dispatch = useDispatch(); useEffect(() => { if (addPostDone) { setText(''); } }, [addPostDone]); const onSubmit = useCallback(() => { dispatch(addPostRequestAction(text)); }, [text]); const onChangeText = useCallback((e) => setText(e.target.value), []); return ( <Form style={{ margin: '10px 0 20px' }} encType="multipart/form-data" onFinish={onSubmit}> <Input.TextArea value={text} onChange={onChangeText} maxLength={140} placeholder="어떤 신기한 일이 있었나요?" /> <div> {imagePaths.map((v) => ( <div key={v} style={{ display: 'inline-block' }}> <img src={v} style={{ width: '200px' }} alt={v} /> <div> <Button>제거</Button> </div> </div> ))} </div> </Form> ); }; export default PostForm;
-
미해결실습으로 배우는 AWS 핵심 서비스
RDS 수직확장 강의
안녕하세요 좋은 강의 감사합니다!. 강의 내용 중 RDS 수직 확장을 했다고 말씀하셨는데, 수직 확장을 실습한 내용은 어디에 있는걸까요?? 간단하게 DB에서 수정 후 스펙 변경하면 되는 부분이라 강의 내용에서 빼신 걸까요? 그리고 읽기 복제본을 생성 한 것 만으로도 자동으로 Replication이 형성 된거구, 원본에 CUD 작업 시 주기 적으로 복제본으로 데이터를 동기화 하는 작업을 하는거라고 보면 될까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
CQS
관련 질문에 대한 답변을 읽어봤는데도 이해가 가지 않아서 질문드립니다.커맨드와 쿼리를 분리해야한다는 CQS를 설명하신 말이었어요. 내부변경이 일어나는것은 커맨드, 명령어라고 부른다커맨드는 결과값을 그대로 반환하면안된다내부변경이 일어나지않는 것은 쿼리라고 부른다.쿼리는 결과값을 반환한다-> 1. 커맨드에서 결과값을 반환하면 안되는 이유가 뭘까요?update 메서드 안에서도 결국은 update하는것(커맨드)과 findOne(쿼리)하는 코드가 모두 들어가있는거잖아요? 근데 이게 왜 cqs를 지킨 사례인거죠?@Transactinalpublic vodi update(Long id, String name){ memberService.update(id,name); Member member = memberService.findOne(id); rreturn ~~~;}
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
임베디드 모드 테스트 시 sql 스크립트
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.영한 님의 강의를 수강한 뒤 간단한 게시판 프로젝트를 작업해보고 있습니다.말씀해주신 임베디드 모드를 테스트에 적용하기 위해 다음과 같이 설정해봤습니다.test의 resources/application.properties에는 단순히 로그와 관련된 것만 입력해두었습니다.logging.level.org.springframework.jdbc=debug # Can check SQL which Hibernate run and create logging.level.org.hibernate.SQL=DEBUG # Can check parameters which binding in SQL logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE멤버 엔티티입니다.package com.devholic22.board.entity; import jakarta.persistence.*; import lombok.Data; @Data @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "user_name", length = 10) private String name; @Column(length = 10) private String password; public Member() { } public Member(String name, String password) { this.name = name; this.password = password; } } 멤버 리포지토리입니다.package com.devholic22.board.repository; import com.devholic22.board.entity.Member; import org.springframework.data.jpa.repository.JpaRepository; public interface MemberRepository extends JpaRepository<Member, Long> { } 테스트 코드입니다.package com.devholic22.board.repository; import com.devholic22.board.entity.Member; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @Slf4j @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository repository; @Test void save() { Member member = new Member("testerA", "1234"); Member savedMember = repository.save(member); log.info(savedMember.toString()); } } 그런데 강의에서 이야기하셨던 SQL 스크립트를 만들어두지 않았는데도, 테스트가 제대로 실행되었습니다.원래 예상했던 결과는 Table "MEMBER" not found와 같은 부분인데, 왜 이런 에러가 발생하지 않았는지 궁금합니다.테스트 코드 결과입니다.2022-12-11T13:15:08.008+09:00 INFO 65418 --- [ main] c.d.b.repository.MemberRepositoryTest : Started MemberRepositoryTest in 7.134 seconds (process running for 9.374) 2022-12-11T13:15:08.427+09:00 DEBUG 65418 --- [ main] org.hibernate.SQL : insert into member (id, user_name, password) values (default, ?, ?) 2022-12-11T13:15:08.501+09:00 INFO 65418 --- [ main] c.d.b.repository.MemberRepositoryTest : Member(id=1, name=testerA, password=1234) 2022-12-11T13:15:08.547+09:00 INFO 65418 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2022-12-11T13:15:08.549+09:00 INFO 65418 --- [ionShutdownHook] .SchemaDropperImpl$DelayedDropActionImpl : HHH000477: Starting delayed evictData of schema as part of SessionFactory shut-down' 2022-12-11T13:15:08.550+09:00 DEBUG 65418 --- [ionShutdownHook] org.hibernate.SQL : drop table if exists member cascade 2022-12-11T13:15:08.555+09:00 INFO 65418 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2022-12-11T13:15:08.560+09:00 INFO 65418 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
Member entity 질문드립니다.
안녕하세요 선생님. 43분 강의 16분 경에 등록을 누르면 오류가 발생하는데 이게 나이에 아무것도 입력을 안하면 null이 들어가서 Member entity에 int memAge와 충돌이 나는 거잖아요? 그런데 만약 Member entity에 Integer memAge로 해주면 어떤가요? Integer 타입은 값이 없을 때 null이 기본값으로 알고 있어서 될 것 같아서 해봤는데 정상적으로 모달창이 나오더라구요.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이무료버전 톰캣 관련질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 안녕하세요. 선생님! 스프링을 막 입문하기 시작한 코린이 입니다. 다름이 아니라 기존에 이클립스를 사용하다 인텔리제이를 처음 접했는데 유료버전은 배우는 입장에서 금액이 상당하여 무료버전을 사용하고 있는 중입니다. 강의 6:50 초 쯤에서 Gradle에 라이브러리?를 알려주시는 장면에서 저는 boot-start-? 버전.RELEASE 라는 항목이 존재하지 않는데 강의를 따라가는데 있어 크게 상관없을까요?강사님 강의영상 6:40에서 화면을 보면 이런식으로 톰캣, 제이슨, 등 릴리스된 항목들이 존재하는데 제가 사용하는 인텔리제이에서는 없어가지고 질문을 남겨봅니다. 구글링 해보니 무료버전은 지원을 안한다 해서 그러는데 위에서 똑같은 질문이지만 1번 사진 처럼 크게 플러그인 추가 없이 강의 내용 따라가도 괜찮을지 여쭤봅니다 ㅠㅠ (스프링 부트 파일 생성할때 버전은 3.0.0은 오류 나길래 2.7.6 버전을 사용했습니다. 자바는 11이고요. 로컬8080 접속은 문제 없이 잘됩니다.)
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
memberUpdateDto가 필요한 이유
강의도중에 설명해주시긴 했는데 그래도 이해가 덜 가서 질문드립니다membersaveDto만있으면 memberupdatedto를 만들지 않아도돼요둘다 만들게 되면 코드의 중복이 발생하는것아닌가요?save와 update는 아예다른것이기때문에 중복이 발생해도 상관이 없는걸까요?아예다른것이라기엔 update에도 있고 save에도 있는 필드에 변화가 생겼을때 둘다 수정을 해주어야해요그럼 수정해야할 포인트가 늘어나는건데도 updateDto를 생성해주는게 맞는걸까요?
-
미해결스파크 머신러닝 완벽 가이드 - Part 1
sparkdl library 설치 관련 질문
안녕하세요 강사님,강의 잘 보고 있는 데이터 분석가 입니다.현재 저는 이전에 문의드린대로 Mac local 환경에서 spark를 구동해서 실습을 진행해왔고 현재 Sparkdl xgboost 패키지 강의 또한 로컬 환경에서 구동하고자 시도하고 있습니다. 다만 sparkdl의 경우 로컬환경에서 구동하는것 조금 까다로운데 혹시 참고할 만한 레퍼런스가 있을까요?SynapseML도 로컬에서 진행할 수 있을것 같은데 같은 문의드리고자 합니다, 감사합니다.
-
미해결생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현
Member에 refreshToken 질문 드립니다.
Member에 refreshToken 값이 칼럼으로 생성되어 있는데요. DB에 refreshToken이 최초 저장되는 시점이 언제인가요?@Column(length = 250) private String refreshToken; updateRefreshToken을 하게 되면 DB에는 따로 저장하지 않나요?public void updateRefreshToken(JwtTokenDto jwtTokenDto) { this.refreshToken = jwtTokenDto.getRefreshToken(); this.tokenExpirationTime = DateTimeUtils.convertToLocalDateTime(jwtTokenDto.getRefreshTokenExpireTime()); }Member에 tokenExpirationTime은 refresh token의 만료시간을 의미하는건가요?private LocalDateTime tokenExpirationTime;
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
해당 강의 중 readOnly 관련 질문입니다!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요.리드온리 옵션 관련해서 강의를 듣다가 궁금해진건데서비스에서 Select문 만을 호출하는 메서드가 @Transaction(readOnly = true)를 달고 있는 것과 트랜잭셔널 어노테이션을 아예 안달고 있는 것 중에 후자가 성능상 이점이 있나요?아니면 해당 설명은 타입 수준에서 트랜잭션을 걸고 읽기 전용 트랜잭션 메서드를 따로 정의하기 위한 것인가요?
-
미해결핸즈온 머신러닝 2
슬라이드 링크
슬라이드 링크가 깨진 것 같습니다.확인부탁드립니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
.utc, .toUtc 차이
.utc, .toUtc 차이가`.utc` 생성자(Class) 단에서 utc 시간을 생성하기위한 생성자`.toUtc` 생성된 인스턴스를 utc 시간으로 변화시키는 메소드로 이해하면 될까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-A 강의 내용 질문입니다.
안녕하세요 선생님!강의를 듣다가 잘 이해가 되지 않는 부분이 있어 질문드립니다.이 문제에서 0번 노드에서 출발해서 0번 노드로 돌아오는 경우만 dp로 구하면 되는 건가요?만약에 그렇다면 어떻게 정답을 보장하는지 알고 싶습니다. 저는 i번 노드에서 출발해서 i번 노드에 도착하는 경우를 모두 확인해야 한다고 생각했었거든요..
-
미해결
김영한 강사님의 스프링 핵심원리 - 기본편 configurationTest 결과에 대해 질문합니다!!
김영한 강사님의 스프링 핵심원리 - 기본편 강의 38강 configurationTest 내용입니다.수업과 관계없는 질문입니다 ㅠㅠ. AppConfig 클래스에서 memberRepository를 반환하는 메서드에 public만 붙였을때는 정상적으로 싱글톤 빈으로 등록되어 정상 작동하다가 public static이라 붙였더니 싱글톤이 깨져버렸습니다. AppConfig는 CGLIB 라이브러리를 사용해 만든 것인데 AppConfig@CGLIB의 실제 구체적인 코드에서 싱글톤 빈으로 등록하지 못하고 AppConfig 기존 자바 로직을 호출함으로 발생하는 것인가요??
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
새로운 강의 일정이 궁금합니다
이번 강의가 너무 도움이 되고 좋았어서 다음 강의가 많이 기대가 되는데 언제쯤 수강할 수 있을까요?
-
미해결OpenCV 를 활용한 명함인식 기능 구현 강좌
질문 및 버전에러
프로젝트 oxford ai 홈페이지와 서비스가 더이상 유효하지 않습니다.->강의 및 주소 업데이트가 필요합니다. 버전 업데이트로 인한 에러?=> 웹캠을 이용한 인식에서 하기와 같이 오류가 계속 나는데, 솔루션을 알 수 있을까요? Traceback (most recent call last): File "C:\Users\lcw07\PycharmProjects\test_cv2\main.py", line 181, in <module> auto_scan_image_via_webcam() File "C:\Users\lcw07\PycharmProjects\test_cv2\main.py", line 135, in auto_scan_image_via_webcam warped = cv2.warpPerspective(frame, M, (maxWidth, maxHeight))cv2.error: OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function 'warpPerspective'> Overload resolution failed:> - Can't parse 'dsize'. Sequence item with index 0 has a wrong type> - Can't parse 'dsize'. Sequence item with index 0 has a wrong type
-
미해결스프링 핵심 원리 - 기본편
어느 부분이 업데이트 되었을까요?
[질문 내용]강의 게시일 : 2020년 09월 21일(마지막 업데이트일 : 2022년 11월 28일) 오랫만에 기본편 복습하려고 보니"강의소개 > 커리큘럼 > 강의 게시일" 부분이 위와 같이 표기되어 있는데,어느 부분이 업데이트 되었을까요?
-
미해결시스템엔지니어가 알려주는 리눅스 실전편 Bash Shell Script
공지사항에 올리는대로 했는데도 가상환경 실행이 안됩니다.
VBOX 버전도 같고 [사용안함] -> [사용]으로 했는데도 가상 서버가 실행이 되지 않습니다.어떻게 해결해야할지 감이 잡히지가 않아 질문 등록드립니다. The VM session was closed before any attempt to power it on. 결과 코드:E_FAIL (0x80004005)구성 요소:SessionMachine인터페이스:ISession {c0447716-ff5a-4795-b57a-ecd5fffa18a4}
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
onTap 에 단순한 void 타입의 함수를 생성시 에러가 나는 이유가 무엇인가요?
typedef ColorIdSetter = void Function(int id); onTap 에 단순한 void 타입의 함수를 생성시 에러가 나는 이유가 무엇인가요?다시말해, typedef 로 타입을 선언후 적용하면 오류가 안나고 작동되는 이유를 알고 싶습니다.
-
미해결실전! Querydsl
강사님 "프로젝션과 결과 반환 - DTO 조회" 질문 있습니다.
안녕하세요. 강사님. "프로젝션과 결과 반환 - DTO 조회" 강의에서 궁금한 게 생겼습니다.querydsl는 클래스 안에 있는 클래스를 처리할 수 있는 방법이 있나요?예를 들어서 아래 두 개의 클래스가 있으면 Member.class 형태로 값을 가져올 수 있는 방법이 있나요?감사합니다. class Member { private Team team; private String username;} class Team { private String teamname; private int count;}