묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MVC 패턴에서 Model 의 정의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(http://bit.ly/3fX6ygx)을 먼저 확인해주세요. 3. 질문 잘하기 메뉴얼(http://bit.ly/2UfeqCG)을 먼저 읽어주세요. 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 항상 강의 너무 잘 듣고 있습니다. 강의를 듣고 Servlet -JSP를 이용한 MVC 패턴에서 Controller = Servlet View = JSP Model = Request(Attribute) 라고 이해했는데요, 이 때 Controller 와 View 가 서로 Model(Attribute) 을 통해 데이터를 주고받는다고 이해했습니다. 그리고 이 Controller 를 좀 더 객체지향적으로 만들기 위해 Service 와 Repository로 레이어를 나누어 역할을 분리한다고 이해했는데요. 그런데 최근 후배에게 MVC 개념을 설명해주다가 이상한 걸 발견했습니다. 저희 회사 신입사원 교재에 MVC 패턴의 정의가 이렇게 나와있는 겁니다. - Model : 비즈니스 로직(클라이언트 요청에 대한 업무 처리) 및 데이터 담당 >> 비즈니스 로직 = business service(biz) + data access object(dao) 이걸 보면 Service 와 Repository는 Model 에 해당하는 개념처럼 보입니다. 또한 해당 교재에서는 이처럼 비즈니스 로직을 Controller(Servlet)와 분리하는 것이 곧 MVC 패턴이라고 설명하고 있는데요, 제가 이해하는 "Controller(Servlet)와 View(Jsp) 를 분리하고 Model(Attribute)로 데이터를 전달하는 것이 곧 MVC 패턴이다" 라는 개념과 사뭇 다른 것 같습니다. 제가 뭔가 잘못 이해하고 있는 걸까요?
-
미해결타입스크립트 입문 - 기초부터 실전까지
index.ts 파일에 밑줄이 안뜨네요...
아래 마지막글 참고해서 setting.json파일에 문구 추가하고 했는데 index.ts파일에 밑줄이 뜨지 않는데 어떻게 해결해야 하나요?? ㅠㅠ
-
미해결Vue로 Nodebird SNS 만들기
nuxtServerInit 이후로 오류가 뜹니다 ㅜ
안녕하세요 제로초님 기존 질문 확인해봤는데 해결하는데 어려움이 있어 질문드립니다. store/index.js에 export const state = () => ({}); export const mutations = {} export const actions = { nuxtServerInit({commit, dispatch, state}, {req}) { return dispatch('users/loadUser') } } 이렇게 넉스트서버 인잇 한 이후에 이렇게 콘솔과 터미널에 에러가 뜸니다 ㅜ store/users.js async loadUser({state, commit}) { try { const res = await this.$axios.get('/user', { withCredentials: true, }) console.log(res.data); commit('setMe', res.data) console.log(state) } catch (err) { console.error(err) } }, 이 코드 보시면 loadUser 액션에서도 틀린 부분은 없는것 같은데 무슨 문제인지 해결하는데 어려워서 질문드립니다ㅜㅜ!! 근데 오류가 뜨긴 하지만 새로고침하면 로그인 상태 유지도 되고 이상은 없어 보이긴 합니다. 근데 그냥 내비 두는게 나중에 큰 문제를 발생시킬거 같아서 질문드려요!ㅜ
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
post 요청시 content-type 설정
다음 강의에서 추가 안내가 있었으면 합니다. 위치 : Node.js & Express를 활용한 REST API 만들기 / Express Middleware post 전송시 header 정보에 content-type=application/json 을 명시하지 않으면 데이터가 넘어가지 않습니다. 간단한 header 정보의 설명도 있었으면 합니다.
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
질문 7.pyplot의 subplots로 서브플롯 그리기
강의 잘 듣고 있습니다. 7번 코드 관련해서 질문이 있는데요, 왜 Plt.subplots(1, 2, figsize = (15,4)) 를 fig, axes 두 변수에 할당한 것인지 잘 이해가 안됩니다. 이 부분 설명 부탁드립니다. 감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
InputManager와 PointerEvent와의 관계에 대해 질문이 있습니다.
해당 강의를 보고 InputManager 를 통해 키입력, 마우스 포인터 입력에 대해 정의를 하고 사용했는데 UI로 넘어가면서 드래그 앤 드랍이나 더블클릭 같은 경우 PointerEvent를 사용하는 것이 더 편리하다는 생각이 들었습니다. 이럴 경우 계속 InputManager를 사용해 구현하는건지 아니면 UI 구현부에서는 EventHandler를 혼용해도 되는지 궁금합니다.
-
미해결Vue.js 제대로 배워볼래?(Vue.js 프로젝트 투입 일주일 전)
질문있습니다.
먼저 좋은 강의 만들어주셔서 감사하다는 말씀드립니다. 해당 강의 들으면서 커스텀 디렉티브를 사용하지 않고 포커스를 주려면 어떻게 해야하지? 라는 의문점이 들어서 해봤는데 options api를 사용할때 input 에 ref 속성을 추가해서 methosds 에 this.$refs.이름.focus() 이런식으로 접근하잖아요? 근데 compotions Api 를 사용할 경우에는 어떤식으로 해야하는지 궁금합니다. onMounted를 선언하고 그 안에 this.$refs 를 해도 this 자체를 참조하지 못하더라구요. 물론 vue를 사용하는 이상 직접적으로 돔을 참조해야하는 경우는 별로 없겠지만 다방면으로 공부하고 싶어서요 이런 경우에는 options api 의 방식으로만 가능한건지 다른 방법이 있는지 궁금합니다. (요점 : setup 함수에서 커스텀 디렉티브를 사용하지 않고 input 과 같은 돔에 직접 참조하여 focus 같은 이벤트를 주는 방법?)
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:field="*{item.itemType}" 정상 출력
안녕하세요. item.html은 객체가 넘어오지 않으니 th:field="${itemType}"에서 th:field="${item.itemType}"으로 변경해야 한다고 알려주셨는데요. 이 부분은 아주 잘 이해가 갔는데 제가 우연찮게 실수로 th:field="${item.itemType}"으로 변경해야 하는 것을 th:field="*{item.itemType}"으로 변경했는데 th:field="${item.itemType}" 변경한 것과 똑같은 값을 출력합니다. '*' 연산자는 object를 부모 태그에서 받았을 때, 해당 오브젝트의 프로퍼티 값에 접근하는 기능을 한다고 배웠는데. th:field="*{item.itemType}"을 해도 왜 되는 건가요?
-
미해결3dsmax 초급부터 전문가까지 - 한방에 끝내는 3dsmax 강좌
align 기능 질문
면에다가 한번에 오브젝트를 딱 붙이시는데 nomal align 기능을 쓰신건가요? 아니면 다른 align기능을 쓰신건가요?
-
미해결Vue.js + TypeScript 완벽 가이드
권한 요청합니다 깃헙: wlsgus5932 // 인프런: sjkim@humanf.co.kr
강의 너무 좋아요 빨리 보고싶어요 현기증나요
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
파이썬 문법
안녕하세요 강사님. 본 강의를 수강하기 위해서 Numpy에 관한 기본적인 내용은 숙지해야 한다고 해서 강사님의 파이썬 머신러닝 완벽 가이드의 numpy 강의를 같이 듣고 있습니다. 강의를 듣던 중 다음과 같은 print문이 있는데 잘 이해가 가지 않아 질문 드립니다. 제가 여태까지 공부한 바로는 print('array1: {0}차원, array2: {1}차원, array3: {2}차원'.format(array1.ndim, array2.ndum, array3.ndim))이 맞는 것으로 알고 있는데 {0}이 아닌 {:0}, {1}이 아닌 {:1}, {2}가 아닌 {:2}, 즉 강사님의 코드에 들어있는 colon은 무엇인가요? 여기저기 찾아보아도 관련 내용을 못 찾겠어서 질문 드립니다. 좋은 강의 감사합니다!
-
미해결15일간의 빅데이터 파일럿 프로젝트
실습환경 OS 버전문의
CentOS 버전은 꼭 6.x 대역으로 해야 하는건가요? 요새는 대부분 7.8 Or 7.9 라서 궁금해서 문의 드립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
일정 부분 강의를 마치고 올려주신 코드를 불러올 때 error가 생깁니다.
올려주신 파일들을 저렇게 3개 올려주셨는데요 제가 이 폴더들을 새로 만든 Project 안에 있는 Assets, Packages, ProjectSettings 세개의 폴더를 그대로 삭제하고 올려주신 폴더로 교체했습니다. 그랬더니 아래와 같은 에러가 발생하고 있습니다. 보면 패키지 버전?이 기존과 다르더라고요 강사님이 올려주신 폴더로 교체하면 자동적으로 Library\PackageCache\com.unity.collab-proxy@1.2.16\...으로 버전이 바뀌더라고요 (처음엔 1.3.9 입니다.) 오른쪽이 잘 돌아가는 버전, 왼쪽이 안 돌아가는 버전입니다. 어떻게 해결해야할까요? ...
-
미해결취미로 해킹#6(SquareCTF_RR)
알집으로 압축을 해제하니까 vmware에서 주소가 안나와요
취미로 해킹#6 파일을 알집으로 압축해제하고 Vmware pro로 실행한 후 Ifconfig를 쳤는데 Inet addr이 나오지 않습니다. 뭐가 문제일까요??
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
수업관련 질문드립니다.
안녕하세요 혹시 수업진행시 aws ec2(freetier)에 도커환경 세팅후 진행하여도 괜찮을까요?
-
미해결Vue.js 제대로 배워볼래?(Vue.js 프로젝트 투입 일주일 전)
페이지를 진입 할때 데이터를 불러 오고 싶습니다.
import ApiMixin from '../api.js'; export default { mixins:[ApiMixin], data(){ return { studyLists:[] }; }, mounted(){ getStudyList(); }, methods:{ async getStudyList(){ this.studyLists = await this.$callAPI( "/api/study", "get", {} ); console.log(this.studyLists); }, }, } 위와 같이 코드를 작성했는데 getStudyList is not define이라고 나오면서 오류가 발생하고 있습니다. 라이프사이클을 보면 생성 직전에 메소드를 작동하도록 해놓을 생각이였는데 보통 mounted를 먼서 실행하고 메소드를 불러 오나요? 또한 위에 사항에 대한 해결책은 어떤것들이 있을까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
eslint
저는 왜 제로초님처럼 didpatch가 없는 걸 잡아 주지않을까요?.. 느낌이 recommended 했던때랑 비슷한거 같아요.. 확장 프로그램으로는 Eslint, Prettier-eslint 깔려있어요 밑에는 제 파일들 입니다. <eslint> { "parser": "babel-eslint", "parserOptions": { "ecmaVersion": 2021, "sourceType": "module", "ecmaFeatures": { "jsx": true }, "env": { "browser": true, "node": true, "es6": true }, "extends": [ "airbnb", "plugin:prettier/recommended" ], "plugins" : [ "import", "react-hooks", "prettier" ], "rules": { "prettier/prettier": "error", "jsx-a11y/label-has-associated-control": "off", "jsx-a11y/anchor-is-valid": "off", "no-console": "off", "no-underscore-dangle": "off", "react/forbid-prop-types": "off", "react/jsx-filename-extension": "off", "react/jsx-one-expression-per-line": "off", "object-curly-newline": "off", "linebreak-style": "off", "no-param-reassign": "off" } } } <package.json> { "name": "react-nodebird-front", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "dev": "next" }, "author": "", "license": "MIT", "dependencies": { "@ant-design/icons": "^4.6.2", "antd": "^4.16.6", "axios": "^0.21.1", "next": "^10.2.3", "next-redux-wrapper": "^7.0.2", "prop-types": "^15.7.2", "react": "^17.0.2", "react-dom": "^17.0.2", "react-hook-form": "^7.11.0", "react-redux": "^7.2.4", "react-slick": "^0.28.1", "redux": "^4.1.0", "redux-devtools-extension": "^2.13.9", "redux-saga": "^1.1.3", "styled-components": "^5.3.0" }, "devDependencies": { "babel-eslint": "^10.1.0", "eslint": "^7.30.0", "eslint-config-airbnb": "^18.2.1", "eslint-config-prettier": "^8.3.0", "eslint-plugin-import": "^2.23.4", "eslint-plugin-jsx-a11y": "^6.4.1", "eslint-plugin-prettier": "^3.4.1", "eslint-plugin-react": "^7.24.0", "eslint-plugin-react-hooks": "^4.2.0", "prettier-eslint": "^13.0.0" } } <setting.json> { "javascript.updateImportsOnFileMove.enabled": "always", "editor.wordWrap": "on", "workbench.preferredLightColorTheme": "Dracula Soft", "workbench.iconTheme": "material-icon-theme", "javascript.preferences.quoteStyle": "single", "typescript.preferences.quoteStyle": "single", "liveServer.settings.donotShowInfoMsg": true, "editor.fontSize": 17, "files.autoSaveDelay": 500, "editor.mouseWheelZoom": true, "liveServer.settings.fullReload": true, "editor.tabSize": 2, "javascript.format.enable": false, "workbench.sideBar.location": "right", "explorer.confirmDelete": false, "explorer.confirmDragAndDrop": false, "terminal.integrated.tabs.enabled": true, "editor.accessibilitySupport": "off", "eslint.alwaysShowStatus": true, "eslint.workingDirectories": [ { "mode": "auto" } ], "window.zoomLevel": 1, "workbench.colorTheme": "Default Light+", "files.autoSave": "afterDelay", "[json]": { "editor.quickSuggestions": { "strings": true }, "editor.suggest.insertMode": "replace" } }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
스테이징 서버, 운영 서버
안녕하세요, 강의 정말 잘 듣고 있습니다!! 데이터베이스 스키마 자동 생성 부분에서 장비와 서버가 명확하게 이해가 되지 않아서 질문드립니다! 개발 장비 ==> 현재 내가 개발중인 로컬 장비(노트북) 운영 장비 ==> 실제 운영 중인 서버 로 이해하면 될까요? 그리고 테스트 서버는 말 그대로 테스트하는 서버고, 스테이징 서버는 실제 운영 서버와 비슷한 환경을 만들어놓고 테스트 하는 서버라고 이해하면 될까요?? (필요한 데이터를 다 넣어놓고 운영 서버로 옮기기 전에 테스트 하는 서버?)
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
navi 옆으로 서브메뉴할 때 left:100%
옆으로 서브메뉴 할때 사진처럼 menu에 부모 sub-menu에 자식요소 주고 left:100% 했는데 이렇게 사이에 공간이 생겨요.뭐 때문일까요?
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
안드로이드 환경에서 styles.purchaseButton -> position: absolute 적용시 onPress가 작동되지 안습니다.
제목과 같이 안드로이드 환경에서 styles.purchaseButton -> position: absolute 적용시 onPress가 작동되지 않습니다. 혹시 이유가 있을까요??