묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[deprecated] 인프랩 A to C : 콘텐츠 OJT
test
test
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-C 질문있습니다
안녕하세요! 강의영상과를 다르게 void형 dfs로 풀긴했는데 왜 어느부분이 문제인지 잘 모르겠습니다..https://www.acmicpc.net/source/share/b115b1f7228b4af78b7cb918eb678018
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
@JsonIgnore가 실무에서 쓰이는 경우가 있나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요. 주문 조회 (/api/v1/simple-orders와 /api/v1/orders) api 학습하면서 궁금한 점이 생겼습니다.강의를 들으며 postman으로 request 했을 때, v1 코드에서 쿼리를 날릴 시 양방향 연관관계에서 문제가 발생할 수 있다는 것을 배웠습니다. 예를 들어, order list를 return했을 때, member와 delivery에 대한 프록시 객체로부터 필드를 조회해서 영속 상태의 객체를 반환하도록 구성한다면 v1에서는 @JsonIgnore로 양방향 연관관계에 대한 처리 코드를 작성해주어야만 이 문제가 해결되는 것으로 이해했습니다. 그런데 Dto를 만들어 반환하게 되면 @JsonIgnore을 없애도 이러한 문제가 사라지니, 사실상 @JsonIgnore을 실무에서 사용하는 일은 없지 않을까라는 생각이 들었습니다. 또한, 실무에서 양방향 매핑보다는 단방향 매핑을 선호하는 것으로 알고 있어 질문드립니다. 실무에서 이런 코드(@JsonIgnore)를 작성할 일이 있다면, 어떠한 경우인 지 예시가 있을까요?
-
해결됨Flutter 응용 - 공공 API를 활용한 앱 만들기 (MVVM 패턴)
기존 코드 mvvm으로 역할 분리하는 기준이 궁금합니다
강의를 통해 학습에 정말 많은 도움을 받고 있습니다. 감사합니다. 처음부터 구조를 잘 잡아서 설계하면 좋겠지만, 역할이 제대로 명시되지 않은 함수들을 각각 repository, service, viewmodel로 역할을 명시해주는 것도 난이도가 있으면서 함수들의 역할을 더 명확히 파악하는 데 도움이 될 것 같아서 파일 하나에 함수를 몰아 놓고 분리해보고 있습니다.혹시 repository, service, viewmodel로 함수를 분리해서 작성할 때, 명확한 기준이 존재할까요??제가 학습한 바로는 repository는 데이터베이스/서버 통신 또는 데이터 불러오기 관련, service는 repository를 활용한 비즈니스 로직, Viewmodel은 service를 활용한 View와의 상호작용이라고 알고 있습니다.제가 아직 비즈니스 로직을 명확하게 구분하기기 어렵습니다..에를 들면 파일 탐색기 실행 > 파일 경로 받기 > 파일 디코딩 > JSON(map)형식 변환 > 데이터 필터링 의 과정이 있다고 가정하면, 여기서 어디까지의 함수를 어디로 분리할 지 감이 오지 않습니다.명확하게 구분할 수 있는 기준이나 팁이 존재한다면 알고 싶습니다!
-
해결됨AB 테스트 실무자 완벽 가이드
결과정리, 해석해주시는 부분에서 질문
안녕하세요, 좋은 강의 감사합니다.결과정리해서 해석해주시는 부분에서 질문이 있습니다.App상에서 Buy CVR 을 구할때 raw data는 어떻게 확보되는건가요? 보통의 케이스에서 클릭이력, 시간 등 database에 저장되게 하여 분석하게되는지 궁금합니다. 정렬 필터 변경이 구매전환율(Buy CVR)에 미치는 영향을 측정하기 위해 사용하시는 특정 분석 도구가 있나요? Google analytics와 같은 별도의 툴을 사용하게 되는지 궁금합니다.
-
미해결[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
TypeError: Cannot read property 'Never' of undefined 에러 문의
강사님 [2-5]Drawer Navigation 오류 관련으로 문의드립니다. 오류 관련으로 커뮤니티와 공식문서에 했고 답변내용으로 해결보려고 했는데 잘안되네요.. 확인 부탁드립니다. 1.npm i react-native-reanimated@3.3.0 변경2.'react-native-reanimated/plugin', 넣기 yarn start --reset-cache 3.node모듈 폴더 삭제후 재 설치 ERROR TypeError: Cannot read property 'Never' of undefinedThis error is located at: in Drawer (created by DrawerViewBase) in DrawerViewBase (created by DrawerView) in RNCSafeAreaProvider (created by SafeAreaProvider) in SafeAreaProvider (created by SafeAreaProviderCompat) in SafeAreaProviderCompat (created by DrawerView) in DrawerView (created by DrawerNavigator) in PreventRemoveProvider (created by NavigationContent) in NavigationContent in Unknown (created by DrawerNavigator) in DrawerNavigator (created by MainDrawerNavigator) in MainDrawerNavigator (created by RootNavigator) in RootNavigator (created by App) in ThemeProvider in EnsureSingleNavigator in BaseNavigationContainer in NavigationContainerInner (created by App) in App in RCTView (created by View) in View (created by AppContainer) in RCTView (created by View) in View (created by AppContainer) in AppContainer in MatzipApp(RootComponent), js engine: hermes ❗질문 작성시 꼭 참고해주세요현재 문제(또는 에러)와 코드(또는 github)를 첨부해주세요. 맥/윈도우, 안드로이드/iOS, ReactNative, Node 버전 등의 개발환경을 함께 적어주시면 도움이 됩니다. 에러메세지는 일부분이 아닌 전체 상황을 올려주세요. (일부만 자르거나 복사하지말아주세요.) 개발환경/코드에 대한 정보가 없을경우 답변이 어렵습니다.
-
미해결윤재성의 만들면서 배우는 Spring MVC 5
dependencies 셋팅 부분에서 에러가 발생하네요
안녕하세요 강 프로젝트 세팅부분에서 javax.servlet groupId dependencies 에서 에러가 발생하는데 <properties> <javax.servlet-version>4.0.1</javax.servlet-version> <javax.servlet.jsp-version>2.3.3</javax.servlet.jsp-version> <javax.servlet.jsp.jstl-version>1.2</javax.servlet.jsp.jstl-version> <org.springframework-version>5.2.2.RELEASE</org.springframework-version> </properties> <!-- 라이브러리 셋팅 --> <dependencies> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${javax.servlet-version}</version> <scope>provided</scope> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>${javax.servlet.jsp-version}</version> <scope>provided</scope> </dependency>에러 발생 Missing artifact javax.servlet:javax.servlet-api:jar:1.2 입니다 .
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
배열 for문 할때 질문입니다
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.package array; public class EnhancedFor1 { public static void main(String[] args) { int[] numbers = {1, 2, 3, 4, 5}; //일반 for문 for (int i = 0; i < numbers.length; i++){ int number = numbers[i]; System.out.println(number); }이 부분에서 int number = numbers[i]; 부분을 없애고밑에 줄을 System.out.println(numbers[i]); 로 바꿔도 결과값이 똑같이 나오던데 그렇게 하면 안되는 건가요?배열의 요소에서 값을 꺼내서 number라는 변수에 항상 담아두게 코드를 짜야하는건지 궁금합니다.
-
미해결
태블로 boxplot 그리기
안녕하세요. 태블로 관련해서 독학으로 공부하고 있는 학생입니다. ㅜㅜ 다름이 아니라 Boxplot 을 이용하여 그래프를 그려보는 중인데 파이썬으로 blox 그래프를 그리는 것과 태블로로 그리는 값이 다른데 어떻게 하면 똑같이 표현되는지 도저히 이해가 가지 않습니다. 데이터는 캐글에 있는 다이아몬드 관련된 csv 파일로 그려보는 중입니다. https://www.kaggle.com/datasets/shivam2503/diamonds파이썬에서는 위에서 그림과 같이 x축의 중앙 값이 약 5.7 정도 되는 것 같은데 태블로에서는 중앙값이 6.52라는 값이 나옵니다. 분명 같은 데이터를 사용하였는데 왜 다른지를 알 수가 없습니다 혹시 도움을 주실 수 있으신지요
-
해결됨진짜! 자바스크립트(Javascript) - 기초부터 고급까지
then 메서드에서 Promise 를 반환하는 코드에 대한 질문입니다.
const promise = new Promise((resolve, reject) => { setTimeout(() => { resolve(1); }, 1000); }); promise .then((value) => { console.log(`${value} 번째 Promise 의 then`); return new Promise((resolve, reject) => { setTimeout(() => { resolve(2); }, 1000); }); }) .then((value) => { console.log(`${value} 번째 Promise 의 then`); return new Promise((resolve, reject) => { setTimeout(() => { reject(new Error('강제 에러')); }, 1000); }); }) .catch((error) => { console.log(error); });이런 형태로 then 과 catch 를 메서드 체이닝할 수 있는 이유는 then 과 catch 메서드가 Promise 를 반환하기 때문이라고 이해를 했습니다. 그런데 then() 메서드에 전달하는 콜백 함수에서 return new Promise() 를 하여 Promise 를 반환하면 해당 Promise 가 반환된다고 이해를 했는데 어떻게 그것이 가능한 지 잘 이해가 안됩니다. then 은 동기적으로 실행되고 then 메서드에 전달된 콜백은 마이크로 태스크 큐에 등록된 후에 콜스택이 모두 비어졌을 때 호출된다고 이해를 했는데... 연결고리가 이어지지 않는 느낌입니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
ready신호와 valid신호가 handshake일어나는 부분
안녕하세요 🙂[1. 질문 챕터] : [HDL 22장] 모듈간의 정확한 Data 전달을 위한 Valid / Ready Handshake I/F - 실습편 1~5분 basic module에서 [2. 질문 내용] : Valid / Ready Handshake I/F란 valid신호와 ready신호가 동시에 1일때만 데이터가 전달이 되게 하는 인터페이스인테어떤 부분이 ready신호와 valid신호가 handshake일어나는 부분을 의미하는지 이해가 안갑니다. m_ready가 1이기만 하면 아래 플립플롭에서 S_data가 무조건 출력되서 valid신호와 관계없이 데이터가 전달되지 않나 싶습니다. [3. 시도했던 내용, 그렇게 생각하는 이유] : 동시에 1 이여야만 된다라는 내용이 있으려면 적어도 and gate가 하나는 있어야하지 않나요?
-
미해결React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
eslint를 추가하였지만 동작을 안합니다.
'react/self-closing-comp': 'warn' 해당 문구를 추가했음에도 동작하지 않습니다. 재부팅도 해보았습니다만 동작하지 않습니다.제가 잘못한 것이 있을까요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
s3와 ecr에 쌓이는 데이터에 대해서
s3에 압축된 실행파일 업로드ecr에 빌드된 이미지 업로드빌드할때마다 이 두과정을 거쳐서 각각 S3와 ECR에 파일과 이미지가 쌓여서, 만약 배포를 10번 하면 10개의 실행파일과 이미지가 불필요하게 저장됩니다.혹시 $GITHUB_SHA 같은 생성되는 변수를 사용하지 않고고정된 이름을 사용해서 덮어 씌워서 사용해도 문제는 없나요?
-
미해결만들면서 배우는 리액트 : 기초
vite로 리액트 빌드한 후 깃허브에 배포하는 방법
강사님 강의 보면서 저는 vite 를 이용해서 했는데요,그런 경우는 깃허브에 배포를 어떻게 해야 하나요?npm run buildnpm install gh-pages 그 다음에 package.json 파일도 아래처럼 수정을 했습니다."homepage": "깃허브주소 넣음", "deploy": "gh-pages -d dist" 그다음에 다시 npm run buildnpm run deploy 하면 깃허브에 gh-pages 가 생겨야 하는데 생기지를 않아서요....어디 부분을 잘못 한걸까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
404에러가 계속 뜹니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]404에러가 뜹니다. 폴더 경로라랑 빌드 그래들 등등 보여드리겠습니다.
-
미해결Axure RP 9,10 - 서비스 기획자를 위한 최적의 프로토타이핑 툴
date 위젯 날짜 표현형식 변경
date 위젯에 함수 [[Now.getFullYear()]]-[[Now.getMonth()]]를 넣어서 위와 같이 현재 연도와 월을 표현하도록 구현했는데, 표시형식이 '2024-12' 이런 형식으로 나오게 하고 싶습니다. 어떻게 하면 될까요?
-
해결됨빠른 취업을 위한 프론트엔드 로드맵
포트폴리오에 대해 질문있습니다.
안녕하세요 강의 영상 잘 보고 있습니다 다름이 아니라 포트폴리오에 대해 기능들도 확인을 했는데 어떤 포트폴리오를 만들어야 할지 생각이 잘 나지 않더라구요. 투두리스트는 뭔가 기본중에 기본인것 같아 포트폴리오로 사용하기엔 부적절한 것같고 다른 걸 생각해보고 있지만 어떠한 걸 만들어야 할지 생각이 나지 않습니다.
-
미해결만들면서 배우는 리액트 : 기초
빌드할때 dist 폴더가 만들어지는데요,
마지막에 빌드를 하려고 하는데요,저는 vite를 이용해서 했구요,깃허브에 페이지 올리고 pages까지 오픈을 했습니다. 그리고 나서 npm run build 를 하면 강사님하고 다르게 build 폴더가 아니고 dist폴더가 만들어지는데요,혹시 그럴경우엔 깃허브에 배포할때 명령어가 혹시 강의내용과 다르게 해야 하는 부분이 있는지요? npm install gh-pages package.json 파일에서 소스 추가할때"deploy": "gh-pages -d build" 위의 파일을 수정한 후 다시 npm run buildnpm run deploy여기까지 해도 깃허브 저장소에서 gitpages가 생기기 않습니다...
-
해결됨개발자라면 알아야 할 리눅스(linux-ubuntu) 기본
실행환경 질문
제가 시놀로지 나스를 사서.. 더 활용해보고자 강의를 들으려고 합니다. 비전공자라서 필요한 지식에 구멍난 부분이 많아서요. 나스에서 container manager(docker)로 ubuntu이미지를 받았는데, 이걸로 돌려봐도 될까요?? 혹시 추가적으로 고려해야 할 사항이 있을까요??
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
12.11) Home 페이지 구현하기 2. 기능
해당 챕터에서 강의대로 진행했고 몇번을 다시 확인해봐도차이점을 도통 찾지 못해서 문의드립니다.Home.jsx에서 데이터를 필터걸어도 걸리지않는 상황DiaryList.jsx에서 DiaryItem으로 데이터를 보내도 받는쪽에서 받지 못하는 상황(개발자도구에서는 워닝으로 hook.js:608 Warning: Each child in a list should have a unique "key" prop) 발생 이하 소스첨부 드립니다. App.jsximport './App.css' import { useReducer, useRef, createContext } from 'react'; import { Routes, Route } from 'react-router-dom'; import Home from './pages/Home'; import Diary from './pages/Diary'; import New from './pages/new'; import Edit from './pages/Edit'; import Notfound from './pages/Notfound'; const mockData =[ { id : 1, createdDate : new Date("2024-12-6").getTime(), emotionId : 1, content : "1번 일기내용", }, { id : 2, createdDate : new Date("2024-12-5").getTime(), emotionId : 2, content : "2번 일기내용", }, { id : 3, createdDate : new Date("2024-11-15").getTime(), emotionId : 3, content : "3번 일기내용", }, ] function reducer(state, action){ switch(action.type){ case 'CREATE' : return [action.data, ...state] case 'UPDATE' : return state.map((item)=> String(item.id) === String(action.data.id) ? action.data : item) case 'DELETE' : return state.filter((item) => String(item.id) !== String(action.id)); default : return state; } } export const DiaryStateContext = createContext(); export const DiaryDispatchContext = createContext(); function App() { const [data, dispatch] = useReducer(reducer, [mockData]); const idRef = useRef(3); const onCreate =(createdDate, emotionId, content) => { dispatch({ type:"CREATE", data : { id : idRef.current++, createdDate, emotionId, content, }, }) } const onUpdate = (id,createdDate , emotionId, content) => { dispatch( { type : "UPDATE", data : { id, createdDate, emotionId, content, }, } ) } const onDelete = (id) => { dispatch( { type : "DELTE", data : { id, } } ) } return ( <> <DiaryStateContext.Provider value={data}> <DiaryDispatchContext.Provider value={{ onCreate, onUpdate, onDelete, }} > <Routes> <Route path="/" element={<Home />}></Route> <Route path="/new" element={<New />}></Route> <Route path="/diary/:id" element={<Diary />}></Route> <Route path="/edit/:id" element={<Edit />}></Route> <Route path="*" element={<Notfound />}></Route> </Routes> </DiaryDispatchContext.Provider> </DiaryStateContext.Provider> </> ); }; export default App Home.jsximport { useState, useContext } from "react"; import { DiaryStateContext } from "../App"; import Button from "../components/button"; import Header from "../components/Header" import DiaryList from "../components/DiaryList"; const getMonthlyData = (pivotDate, data) =>{ const beginTime = new Date( pivotDate.getFullYear(), pivotDate.getMonth(), 1, 0, 0, 0 ).getTime(); const endTime = new Date( pivotDate.getFullYear(), pivotDate.getMonth() + 1, 0, 23, 59, 59 ).getTime(); console.log('필터시작일자 : ' + beginTime + '필터종료일자' + endTime) return data.filter((item)=> beginTime <= item.createdDate <= endTime); } const Home = () => { const data = useContext(DiaryStateContext); const [pivotDate,setPivotDate] = useState(new Date()); const monthlyData = getMonthlyData(pivotDate, data); console.log(monthlyData); const onIncreaseMonth = () => { setPivotDate(new Date(pivotDate.getFullYear(), pivotDate.getMonth() + 1) ); }; const onDecreaseMonth = () => { setPivotDate(new Date(pivotDate.getFullYear(), pivotDate.getMonth() - 1) ); }; return <div> <Header title = {`${pivotDate.getFullYear()} 년 ${ pivotDate.getMonth()+ 1 }월`} leftChild={<Button onClick={onDecreaseMonth} text="<" />} rightChild={<Button onClick={onIncreaseMonth} text=">" />} /> <DiaryList data={monthlyData} /> </div>; } export default Home;DiaryList.jsximport './DiaryList.css' import Button from "./button"; import DiaryItem from './DiaryItem'; import { useNavigate } from 'react-router-dom'; import { useState } from 'react'; const DiaryList = ({data}) => { const nav = useNavigate(); const [sortType, setSortType] = useState("latest"); const onChangeSortType = (e) => { setSortType(e.target.value); }; const getSortedDate = () => { return data.toSorted((a, b) => { if(sortType ==='oldest'){ return Number(a.createdDate) - Number(b.createdDate); } else { return Number(b.createdDate) - Number(a.createdDate); } }); } const sortedData = getSortedDate(); return ( <div className="DiaryList"> <div className="menu_bar"> <select> <option value={"latest"}>최신순</option> <option value={"oldest"}>오래된순</option> </select> <Button onClick = {() => nav("/new")} text={"새 일기 쓰기"} type={"POSITIVE"} /> </div> <div className="list_wrapper"> {sortedData.map((item)=><DiaryItem key={item.id} {...item}/>)} </div> </div> ); }; export default DiaryList;DiaryItem.jsximport getEmotionImage from "../util/get-emotion-image" import Button from "./button"; import "./DiaryItem.css"; import { useNavigate } from "react-router-dom"; const DiaryItem = ({id, emotionId, createdDate, content}) => { const nav = useNavigate(); return ( <div className="DiaryItem"> <div onClick={()=>nav(`/diary/${id}`)} className={`img_section img_section_${emotionId}`} > <img src={getEmotionImage(1)} /> </div> <div onClick={()=>nav(`/diary/${id}`)} className="info_section"> <div className="created_date"> {new Date(createdDate).toLocaleDateString()} </div> <div className="content">{content}</div> </div> <div className="button_section"> <Button onClick={()=>nav(`/edit/${id}`)} text={"수정하기"} /> </div> </div> ) }; export default DiaryItem;