묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전 연습으로 익히는 고급 타입스크립트 기술
오 !!! 좋은 강의를 계속 보니 실력이 늘었나 봅니다
강사님 덕분에 처음에 문제보고 여러울것 같았는데,생각보다 쉽게 금방 풀었습니다. 감사합니다!!interface Attributes { firstName: string; lastName: string; age: number; } type AttributeGetters = { [key in keyof Attributes]: () => Attributes[key]; }; type tests = [ Expect< Equal< AttributeGetters, { firstName: () => string; lastName: () => string; age: () => number; } > > ];
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
reduxjs/toolkit 적용하여 코드를 작성해보았는데 맞는지 확인 부탁드립니다. 감사합니다.
안녕하세요 선생님 상황) 리덕스 실제 구현하기 부분을 따라하던 도중 configureStore.js에서 createStore 단어 가운데에 취소선이 생기면서 @reduxjs/toolkit의 configureStore로 대체를 권장한다고 뜨는 상황입니다.import {createStore} from 'redux'; import reducer from '../reducers'; const configureStore = () => { const store = createStore(reducer); store.dispatch({ type:'CHANGE_NICKNAME', data:'luckyhaejin' }); return store; }; 사용 중인 OS, 버전)저는 맥 OS사용자이며, 사용하고 있는 버전은 아래와 같습니다.{ "name": "react-nodebird-front", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "dev": "next", "build": "next build" }, "author": "luckyhaejin", "license": "ISC", "dependencies": { "@ant-design/icons": "^4.2.1", "antd": "^4.2.1", "next": "^9.5.5", "next-redux-wrapper": "^6.0.2", "prop-types": "^15.8.1", "react": "^16.14.0", "react-dom": "^16.14.0", "react-redux": "^7.2.9", "redux": "^4.2.1", "styled-components": "^6.1.1" }, "devDependencies": { "eslint": "^8.56.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0" } } 상황) 그래서 @reduxjs/toolkit과 관련한 문제 같아 react, react-dom 버전을 최신버전인 18로 바꾸고 next도 최신 버전인 14버전으로 바꾼 뒤 @reduxjs/toolkit을 설치하고 @reduxjs/toolkit 방식으로 대체하라는 메세지 안의 redux 링크를 참고하여 코드를 수정해보았습니다. https://redux.js.org/introduction/why-rtk-is-redux-today 하지만 제가 맞게 작성한건지 잘 모르겠고, 이렇게 제가 짠 코드로 변경을 하게되면 강의를 보며 따라하기가 어려워질 것 같아서 다시 원래 에러가 난 상태로 되돌린 상태입니다. 질문)reduxjs/toolkit을 적용하여 작성한 아래 코드가 맞게 작성된건지 궁금합니다. 질문)깃에서 reduxjs/toolkit을 사용한 코드를 강의 순서대로 적용하고 싶어서 찾아보았으나, 섹션2 코드가 순서대로 적용된게 아니라 한번에 올라온것 같아서, 혹시 강의 순서대로 @reduxjs/toolkit을 적용한 코드가 있다면 어떻게 해야 그 코드를 순서대로 볼 수 있는지 궁금합니다. 만약 강의 순서대로 적용한 코드가 없고 섹션별로 나눠져 있다면 섹션 순서대로 코드를 보는 방법이 궁금합니다. 수정 전)reducers/index.jsconst initialState = { user: { isLoggedIn:false, user:null, signUpData:{}, loginData:{} }, post: { mainPosts:[] } }; export const loginAction = (data) => { return { type: 'LOG_IN', data } } export const logoutAction = () => { return { type: 'LOG_OUT' } } // 이전 상태, 액션 => 다음상태 const rootReducer = (state = initialState, action) => { switch(action.type) { case 'LOG_IN': return { ...state, user: { ...state.user, isLoggedIn: true, user:action.data } }; case 'LOG_OUT': return { ...state, user: { ...state.user, isLoggedIn: false, user:null } }; default: return state; } }; export default rootReducer; 수정 후)reducers/userSliceimport {createSlice} from '@reduxjs/toolkit' const userSlice = createSlice({ name: 'user', initialState: { isLoggedIn: false, user:null }, reducers: { login(state, action) { isLoggedIn: true, user:action.payload; }, logout(state) { isLoggedIn: false, user:null } } }) export const {login, logout} = userSlice.actions; export default userSlice.reducer;reducers/postSliceimport {createSlice} from '@reduxjs/toolkit' const postSlice = createSlice({ name: 'post', initialState: { mainPosts:[] }, reducers: { } }); export default postSlice.reducer; 수정 전)store/configureStore.jsimport {createWrapper} from 'next-redux-wrapper'; import {createStore} from 'redux'; import reducer from '../reducers'; const configureStore = () => { const store = createStore(reducer); store.dispatch({ type:'CHANGE_NICKNAME', data:'luckyhaejin' }); return store; }; const wrapper = createWrapper(configureStore, { debug: process.env.NODE_ENV === 'development', }); export default wrapper;수정 후)store/configureStore.jsimport { createWrapper } from 'next-redux-wrapper'; import { configureStore } from '@reduxjs/toolkit'; import userReducer from '../reducers/userSlice'; import postReducer from '../reducers/postSlice' const makeStore = () => { const store = configureStore({ reducer: { user: userReducer, post: postReducer } }); return store; }; const wrapper = createWrapper(makeStore, { debug: process.env.NODE_ENV === 'development', }); export default wrapper;
-
해결됨실전 연습으로 익히는 고급 타입스크립트 기술
생각나는게 맵드 타입스라 이걸로 풀어봤습니다!
감사합니다.type Route = "/" | "/about" | "/admin" | "/admin/users"; type RoutesObject = { [key in Route]: key; }; type tests = [ Expect< Equal< RoutesObject, { "/": "/"; "/about": "/about"; "/admin": "/admin"; "/admin/users": "/admin/users"; } > > ];
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
시큐리티 프로젝트..
부트말고 스프링프레임워크에서 시큐리티 기능을 이용한 회원별 권한 부여된 게시판 기능을 만들려고 하는데 SPRING MVC02와 03, 04 를 한 프로젝트 안에 다 작업해도될까요??필요한 기능이 관리자 - 글쓰기(사진 멀티업로드) 이용자 - 조회, 찜기능 비회원- 조회이런것들입니다.시큐리티 기능을 활용해서 사이트를 만들어보려고 하는데 어떤 챕터를 활용하면 좋을지 의견 부탁드립니다..!기존 세팅은 되어 있어서 MVC01 은 제외하고 작업하면 될 것 같은데이렇게 되면 MVC02부터 실행해도 괜찮은지도 말씀 부탁드립니다..!감사합니다.
-
해결됨실전 연습으로 익히는 고급 타입스크립트 기술
Uppercase 유틸 타입에 대해 알게 되었네요
강의 제목을 보고 찾아보니 Uppercase 유틸 타입이 있네요그걸 활용해서 풀었습니다type Event = `log_in` | "log_out" | "sign_up"; type ObjectOfKeys = Record<Uppercase<Event>,string>; type tests = [ Expect< Equal< ObjectOfKeys, { LOG_IN: string; LOG_OUT: string; SIGN_UP: string; } > >, ];
-
해결됨실전 연습으로 익히는 고급 타입스크립트 기술
이번껀 좀 어렵네요. ㅠㅠ 고민 많이 했는데 못 풀었네요
type ObjectOfKeys = { [`${string}`]:string; }뭔가 이런 안되는 방법들로 계속 시도 했지만, 못풀었네요 해설을 보니 Record와 프로퍼티의 규칙적인 단어들을 캐치 했어야 했네요!
-
미해결자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
병렬성은 동시성의 하위 개념에 대한 질문
병렬성과 동시성은 동시에 실행된다는 내용만 같고 구체적인 처리 방식은 달라보이는데 '병렬성은 동시성의 하위 개념'이다 라는 내용이 이해가 안갑니다.만약 동시성이 여러 일이나 사건이 동시에 발생하거나 진행되는 상태를 말한 개념을 말한거라면 '병렬성은 동시성의 하위 개념'이다 라는 내용이 이해가 가는데강사님께서 설명한 특정한 순서 없이 겹치는 기간에 시작, 실행 및 완료 되는 여러 작업에 관한 동시성에 대한 개념으로 '병렬성은 동시성의 하위 개념'이다 라는 내용을 이해해볼려 하면 이해가 안되는 것같습니다.만약 해당 동시성이 후자라면 어떻게 '병렬성은 동시성의 하위 개념'이 되는지 궁금합니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
disassembly 창
dissasembly 창을 띄우고 싶은데, 이처럼 설정을 해줘도 창이 띄워지지 않습니다. 이런 경우, 어떻게 해야 하는지 문의드립니다.
-
미해결
부산 출장 마사지 서비스 소개 및 특별 혜택
안녕하세요, 인프런 커뮤니티 여러분!이번에는 특별한 출장 마사지 서비스를 소개해 드립니다! 💆♀💆♂🌈 OPAYA 출장 마사지 서비스 🌈 서비스 소개: OPAYA 출장 마사지는 부산출장마사지 고품격이며 전문적인 마사지 서비스를 제공하는 업체입니다. 피로와 스트레스에 시달리는 여러분을 위해 특별한 마사지로 몸과 마음을 풀어보세요.서비스 특전:자격 있는 전문 마사지사들: 특히 교육을 받은 자격 있는 마사지사들이 여러분을 최상의 서비스로 맞이합니다.편안한 공간: OPAYA는 편안하고 안락한 분위기에서 마사지를 즐길 수 있는 공간을 제공합니다.다양한 마사지 옵션: 여러분의 상태와 선호에 맞게 다양한 마사지 옵션을 선택할 수 있습니다.특별 혜택: 인프런 커뮤니티 회원들을 위해 특별한 할인 혜택이 제공됩니다! 예약 시 코드 INFLRN20을 사용하여 20% 할인을 받아보세요.📅 예약 및 문의:홈페이지: https://www.opayaanma.com/ 부산에서 최고의 출장 마사지 서비스를 경험하고 싶다면, 지금 OPAYA 출장 마사지를 만나보세요! 💖이 글을 보시는 분들께: 만약 OPAYA 출장 마사지를 경험한 적이 있다면, 여러분의 소중한 후기를 남겨주세요. 다른 분들에게도 좋은 정보가 될 것입니다. 함께 건강하고 행복한 삶을 즐겨봐요! 🌟감사합니다! 💙
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
intellij 콩모양 질문
따로 마우스를 올려도 콩모양은 보지지 않는데, ultimate 버전에서 지원되는 기능일까요?
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
에러는 안나는데 그림이 안뜹니다
그랩마켓 자바스크립트 적용하기 -2 편에서 다 되는데 농구공 그림이 안떠요 <html> <head> <title>그랩마켓</title> <link href="index.css" type="text/css" rel="stylesheet" /> </head> <body> <div id="header"> <div id="header-area"> <img src="images/icons/logo.png" /> </div> </div> <div id="body"> <div id="banner"> <img src="images/banners/banner1.png"> </div> <h1>판매되는 상품들</h1> <div id="product-list"> </div> </div> <div id="footer"></div> </body> <script> var product = [{ name : '농구공', price : 10000, seller : '조던', imagUrl : '/images/products/basketball1.jpeg' },{ name : '축구공', price : 50000, seller : '메시', ImageUrl : '/images/prodocts/soccerball1.jpg' },{ name : '키보드', price : 10000, seller :'그랩', ImageUrl : '/images/prodocts/keyboard.jpg' }]; document.querySelector("#product-list").innerHTML = '<div class="product-card>'+ "<div>" + '<img class="product-img" src="images/products/basketball1.jpeg" />' + "</div>" + '<div class="product-contents">' + '<span class="product-name">농구공 1호</span>' + '<span class="product-price">50000원</span>' + '<div class="product-seller">' + '<img class="product-avatar" src="images/icons/avatar.png" />'+ "<span>그랩</span>" + "</div>" + "</div>" + "</div>" </script> </html>
-
해결됨실전 연습으로 익히는 고급 타입스크립트 기술
문제를 맞추긴 했는데, 궁금한게 있습니다.
import { Equal, Expect } from "./helper"; type Top = "t-shirt" | "shirts" | "jacket"; type Bottom = "jeans" | "skirt" | "slacks"; type Outfit = `${Top} with ${Bottom}`;type tests = [ Expect< Equal< Outfit, | "t-shirt with jeans" | "t-shirt with skirt" | "t-shirt with slacks" | "shirts with jeans" | "shirts with skirt" | "shirts with slacks" | "jacket with jeans" | "jacket with skirt" | "jacket with slacks" > > ];typescript 특징인건지 신기하게 문자열 리터럴 타입들이 마치 수학 분배법칙처럼 되는 이유가 무엇일까요?
-
해결됨Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
혹시 이 강의도 업데이트 예정에 있을까요?
로드맵 따라서 공부하고 있는데, 첫번째 강의처럼 이번 강의도 스프링 부트 3.x대로 업데이트 예정이 있는지 궁금합니다! 언제쯤 업데이트가 될지 알고싶어요..!
-
해결됨실전 연습으로 익히는 고급 타입스크립트 기술
제 방식대로 풀고 정답을 보니 확실히 더 이해가 잘되는것 같습니다
type Routes = "/users" | "/users/:id" | "/products" | "/products/:id"; type DynamicRoutes = Extract<Routes, `/${string}/:id`>; type tests = [Expect<Equal<DynamicRoutes, "/users/:id" | "/products/:id">>];먼저 풀어보고 이렇게 정답을 확인하니 이해가 잘되네요!
-
해결됨독하게 시작하는 C 프로그래밍
메모리 할당 해제 방법에 대한 질문
안녕하세요 수업 잘 듣고 있습니다.malloc함수로 운영체제한테 메모리 공간을 받아온다고 배웠습니다. 이 때는 내가 사용할 메모리 크기을 명시하는데free로 메모리를 해제할 땐 내가 받아온 메모리 크기를 명시하지 않는데 어떻게 컴퓨터는 할당해준 메모리를 정확하게 해제해줄 수 있나요? 따로 어디에 할당해준 메모리 크기를 저장해두는 건가요?
-
해결됨실전 연습으로 익히는 고급 타입스크립트 기술
Template literals와 extract를 활용해서 풀어보았습니다
정답은 맞췄지만, 좋은 방법인지는 모르겠습니다import { Equal, Expect } from "./helper"; type Routes = "/users" | "/users/:id" | "/products" | "/products/:id"; type DynamicRoutes = `${Extract<Routes, "/users/:id"> | "/products/:id"}`; type tests = [Expect<Equal<DynamicRoutes, "/users/:id" | "/products/:id">>]; 다음 영상을 보면 알게 되겠지요!
-
해결됨실전 연습으로 익히는 고급 타입스크립트 기술
영상을 멈추고 풀었습니다!
감사합니다.type Path = `/${string}`;export function makeUrl(path: Path) { return `https://mywebsite.com${path}`; } makeUrl("/users"); makeUrl("users/1")
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
반복문 *출력
안녕하세요 복습차원으로 처음부터 다시 듣고 있습니다. 중첩for문을 활용할 *찍기를 본 뒤여러 모양으로 시도해보고 싶은 생각이 들었습니다.******************************해당 모양에 대한 별찍기는 오와열이 알맞게 출력되었습니다. 다만 이것을 뒤집은 것은 상단부와 하단이 같은 조건인데도 오와열이 맞지 않았습니다.상단부 조건 범위를 -1을 하니 딱 맞게 나오는데 왜그런지 알고싶습니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
RemoveItem 함수에서 아이템 포인터를 nullptr로 바꾸기 전에 delete를 하지 않는 이유가 있나요?
강의에 나온 예제 에서는 Clear 함수로 모든 아이템을 delete하는데 이때 RemoveItem 함수에서 이미 nullptr로 지정된 아이템은 따로 delete 연산을 하지 않아서 Clear 이후에 배열의 포인터는 nullptr인데 힙 메모리에는 데이터가 남는 게 아닌가 싶어서 질문 드립니다.실제로 RemoveItem을 실행하는 아니템들을 따로 배열에 모아 Clear 함수 이후에 데이터를 확인해 보니 아이템들이 존제하는 것을 확인 했습니다.bool Inventory::RemoveItem(Item* _item){ if (_item == nullptr) return false; int slot = FindItemSlot(_item); if (slot < 0) return false; //delete mItem[slot]; // 제거되는 아이템 모음 mRemove[mRemoveIndex] = mItem[slot]; mRemoveIndex++; mItem[slot] = nullptr; mItemCount--; return true;}위에 mRemove에 아이템을 모아 Clear 이후에 중단점을 걸어 데이터를 확인해 보니 아이템의 데이터가 남아있는 것을 확인했습니다.혹시 의도적의로 delete연산을 하지 않은 것 인지 궁금하여 질문 드립니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
화이트 리스트 경우 인증체크 메서드 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.requestURI와 whitelist에 있는 값이 매칭이 된다면 인증체크를 하고, 매칭되는 값이 없다면 인증체크를 하지않는 함수인거는 이해했습니다.리턴값 코드 이해가 잘 안되는거같아서 질문 남깁니다.위 아래 코드가 같은건가요 ? 강사님이 알려주신 코드는 이해가 잘 안가서 다시한번 짜봤습니다 ㅠㅠprivate boolean isLoginCheckPath(String requestURI){ if(PatternMatchUtils.simpleMatch(whitelist,requestURI)){ return false; } return true; }private boolean isLoginCheckPath(String requestURI){ return !PatternMatchUtils.simpleMatch(whitelist,requestURI);