묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
@RequiredArgsConstructor
@RequiredArgsConstructor 사용할 때, 추가 생성자를 작성하면, @RequiredArgsConstructor에 의해 자동으로 만들어진 생성자에는 @Autowired를 따로 추가해줘야하나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
11655 문제 결과값 변수 할당
안녕하세요.11655 번 문제 풀이에서 큰돌님은 입력 받은 변수 s 의 값을 덮어써서 결과를 출력하셨는데, 저는 아래처럼 새로운 변수에 담에서 출력했습니다. 이때, 공간 복잡도가 늘어나게 되는건가요?string s, res; int main() { getline(cin, s); for (char c: s) { if (c >= 97 && c <= 122) { if (c + 13 > 122) res += c + 13 - 26; else res += c + 13; } else if (c >= 65 && c <= 90) { if (c + 13 > 90) res += c + 13 - 26; else res += c + 13; } else { res += c; } } cout << res; return 0; }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 빈(Bean) 개념 관련 질문
스프링 bean 관련 공부를 하던중 구글링을 통해 정리를 해보려 했지만 헷갈려서 질문드립니다.spring container가 빈을 생성하고 생성자가 여러차례 호출되어도 실제로 생성되는 객체는 하나이며 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 가르킨다고 알고있는 상태입니다.제가 알고 있는 부분이 맞는지 그러면 test class에서 @beforeEach에 객체를 테스트 실행전 매번 새로 생성하는데 이것은 사실 결국은 하나의 최초객체를 가르킨다는 얘기인가요???
-
해결됨그림으로 쉽게 배우는 운영체제
부모 프로세스는 프로그램을 실행하지 않아도 생기는 건가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.인터넷 검색해도 정확히 써져있지 않거나, 좀 애매모호하거나 제가 이해한 것이 맞는 지 궁금해서 여쭤봅니다.1) 부모프로세스는 부팅후에 운영체제에서 바로 만드는 프로세스인가요?2) 아니면 첫 프로그램을 실행했을 때, 프로세스가 되면서 그 프로세스가 부모 프로세스가 되는 건가요?!3) 둘 다 아니면, 부모 프로세스는 fork()함수가 불러지면서 만들어지는걸까요?? 1번 경우에는 그럼, 자식프로세스보다 먼저 죽는 경우는 왜 생기는 건가요??!
-
미해결습관부터 바꿔주는 Node.js & Express 기초
swagger No operations defined in spec
/swagger.json은 잘 뜨는데/api-docs로 들어가면 'swagger No operations defined in spec!' 이라고 계속 못불러오네요..!수업때 코드 잘 따라친것 같은데, 깃헙에 코드올려주시면 감사하겠습니다..!
-
미해결Slack 클론 코딩[실시간 채팅 with React]
DMList - NavLink 태그
NavLink 사용시, onClick에서 에러가 발생합니다(property) onClick?: React.MouseEventHandler<HTMLAnchorElement> | undefinedType 'void' is not assignable to type 'MouseEventHandler<HTMLAnchorElement> | undefined'.ts(2322)index.d.ts(1448, 9): The expected type comes from property 'onClick' which is declared here on type 'IntrinsicAttributes & NavLinkProps<unknown> & RefAttributes<HTMLAnchorElement>'이런 에러가 발생하였습니다.그래서 인터넷에 검색하니까onClick={()=>resetCount(member.id)}이렇게 바꿔주면 된다고 해서 바꿔줬더니 오류가 사라졌습니다.제로초님께서는 에러가 없었는데 저만 이 오류가 나타나는 이유가 뭘까요??// import EachDM from '@components/EachDM'; // import useSocket from '@hooks/useSocket'; import { CollapseButton } from '@components/DMList/styles'; import { IDM, IUser, IUserWithOnline } from '@typings/db'; import fetcher from '@utils/fetcher'; import React, { FC, useCallback, useEffect, useState } from 'react'; import { useParams } from 'react-router'; import { NavLink } from 'react-router-dom'; import useSWR from 'swr'; interface Props { userData?: IUser; } const DMList: FC<Props> = ({ userData }) => { const { workspace } = useParams<{ workspace?: string }>(); const { data: memberData } = useSWR<IUserWithOnline[]>( userData ? `/api/workspaces/${workspace}/members` : null, fetcher, ); // const [socket] = useSocket(workspace); const [channelCollapse, setChannelCollapse] = useState(false); const [countList, setCountList] = useState<{ [key: string]: number }>({}); const [onlineList, setOnlineList] = useState<number[]>([]); const toggleChannelCollapse = useCallback(() => { setChannelCollapse((prev) => !prev); }, []); const resetCount = useCallback((id) => { setCountList((list) => { return { ...list, [id]: 0, }; }); }, []); const onMessage = (data: IDM) => { console.log('dm왔다', data); setCountList((list) => { return { ...list, [data.SenderId]: list[data.SenderId] ? list[data.SenderId] + 1 : 1, }; }); }; useEffect(() => { console.log('DMList: workspace 바꼈다', workspace); setOnlineList([]); }, [workspace]); // useEffect(() => { // socket?.on('onlineList', (data: number[]) => { // setOnlineList(data); // }); // console.log('socket on dm', socket?.hasListeners('dm'), socket); // return () => { // console.log('socket off dm', socket?.hasListeners('dm')); // socket?.off('onlineList'); // }; // }, [socket]); return ( <> <h2> <CollapseButton collapse={channelCollapse} onClick={toggleChannelCollapse}> <i className="c-icon p-channel_sidebar__section_heading_expand p-channel_sidebar__section_heading_expand--show_more_feature c-icon--caret-right c-icon--inherit c-icon--inline" data-qa="channel-section-collapse" aria-hidden="true" /> </CollapseButton> <span>Direct Messages</span> </h2> <div> {!channelCollapse && memberData?.map((member) => { const isOnline = onlineList.includes(member.id); const count = countList[member.id] || 0; return ( <NavLink key={member.id} activeClassName="selected" to={`/workspace/${workspace}/dm/${member.id}`} onClick={resetCount(member.id)} > <i className={`c-icon p-channel_sidebar__presence_icon p-channel_sidebar__presence_icon--dim_enabled c-presence ${ isOnline ? 'c-presence--active c-icon--presence-online' : 'c-icon--presence-offline' }`} aria-hidden="true" data-qa="presence_indicator" data-qa-presence-self="false" data-qa-presence-active="false" data-qa-presence-dnd="false" /> <span className={count > 0 ? 'bold' : undefined}>{member.nickname}</span> {member.id === userData?.id && <span> (나)</span>} {count > 0 && <span className="count">{count}</span>} </NavLink> ); // return <EachDM key={member.id} member={member} isOnline={isOnline} />; })} </div> </> ); }; export default DMList; +)그리고 강의 코드와 깃헙에 있는 코드가 부분적으로 다른 부분이 있는데 븥여넣을 때마다 동영상을 정지시키고 코드를 다시 작성해야해서 조금 번거로운 부분이 있는 것 같아요ㅜㅜ
-
해결됨[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Future / async - await
안녕하세요, 선생님.기초적인 것 같은데 이해되지 않는 부분이 있어 질문드립니다.다트 공식문서상에 있는 예제입니다. void main(){ print(createOrderMessage()); } String createOrderMessage() { var order = fetchUserOrder(); return 'Your order is $order'; } Future<String> fetchUserOrder() async { return await Future.delayed(const Duration(seconds: 2), () => 'Large Latte'); } 결과:Your order is Instance of 'Future<String>'로직적으로 해석를 시도해보았고 다른 예제들도 실행하면 잘 되는데..이 예제만 궂이 main함수에 Future를 집어 넣어주야 'Large Latte'를 받을 수 있다는게 ....기본 강의를 돌려보아도 이해가 되지 않는데...좀 상세히 설명 해 주실 수 있을까요?
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
시작하자마자 에러가 뜹니다.
새 파일을 만들고 실행해보려고 했는데 이런 에러가 뜹니다. 혹시 어떤거 문제인지 확인해 주실 수 있나요..?
-
미해결[개념은 호옹~, 실습 빡] 스프링 부트, 입문!
28강 application.properties 설정
안녕하세요 선생님강의에서 알려주신 설정들 중spring.datasource.data=classpath:/data.sql spring.datasource.initialization-mode=always두개가 Deprecated 라고 표시되면서 대체해서 사용할 수 있는 걸 알려주는데 이렇게 사용해도 될까요?변경 후 서버를 실행해보면 돌아갑니다.변경 전 ↓변경 후 ↓
-
해결됨만들면서 배우는 프론트엔드 DO IT 코딩 (Next.js, Typescript)
빌드 오류(babel-eslint -> @babel/eslint-parser)
안녕하세요 강사님. 명쾌한 강의 덕분에 많이 배우고 있습니다. 지금까지는 모르는 부분이나 오류를 직접 찾아보고 해결해왔는데 빌드 부분은 도저히 못 찾겠어서 질문글을 작성하였습니다ㅜㅜ... 수강 도중 빌드에 계속 오류가 생겨 질문 남깁니다.(강사님의 초기설정 .eslintrc.js 파일을 사용시 오류) 초반에 강사님의 깃에서 초기설정 버전 파일을 클론해서 시작할 때부터 ts, tsx 파일 맨 첫줄들이 다 빨간줄이 떴었는데 npm run dev는 실행되길래 무시해도 되는 오류인 줄 알고 진행했습니다.ㅜㅜ .. 빌드가 안되는걸 이제서야 알았어요...babel-eslint 가 @babel/eslint-parser로 버전이 바뀌어 오류가 난다 해서 변경시도도 해보았는데 node_modules에서 못찾는다는 오류가 발생해서 지금은 다시 babel-eslint로 커밋한 시점에 돌려놓은 상태입니다.원인이 너무 궁금한데 이틀째 아침부터 저녁까지 해결방법만 찾고있는데도 해결을 못했습니다ㅜㅜ...부끄럽지만 해결 방법에 대해 질문 남깁니다..eslintrc.js 파일에서 parser : '@typescript-eslint/parser'과 parser:'babel-eslint'를 같이 쓰면 안되는 것 같지만 둘 중 하나만 지워도 또 에러가 떠서 저 상태를 유지하고 있습니다. 깃 주소는 해결되어 지우겠습니다긴 글 읽어주셔서 감사합니다.> 현재 오류 //.eslintrc.js 파일 module.exports = { parser: '@typescript-eslint/parser', // Specifies the ESLint parser extends: [ 'airbnb', 'plugin:@typescript-eslint/recommended', 'plugin:import/typescript', 'plugin:prettier/recommended', 'babel-eslint', 'prettier', ], plugins: ['babel-eslint', '@typescript-eslint', 'prettier', 'react-hooks'], parserOptions: { ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features sourceType: 'module', // Allows for the use of imports ecmaFeatures: { jsx: true, }, project: './tsconfig.json', }, parser: 'babel-eslint', env: { browser: true, jest: true, es6: true, node: true, }, globals: { cy: true, Cypress: true, }, rules: { 'arrow-parens': [2, 'always'], '@typescript-eslint/no-unused-vars': [ 1, { argsIgnorePattern: 'res|next|stage|^err|on|config|e', }, ], 'arrow-body-style': ['error', 'as-needed', { requireReturnForObjectLiteral: false }], 'no-param-reassign': [ 2, { props: false, }, ], 'no-unused-expressions': [ 1, { allowTaggedTemplates: true, }, ], '@typescript-eslint/prefer-interface': 0, '@typescript-eslint/explicit-function-return-type': 0, '@typescript-eslint/no-use-before-define': 0, '@typescript-eslint/camelcase': 0, '@typescript-eslint/no-var-requires': 0, '@typescript-eslint/no-explicit-any': 0, '@typescript-eslint/no-non-null-assertion': 0, 'no-console': 0, 'spaced-comment': 0, 'no-use-before-define': 0, 'linebreak-style': 0, 'consistent-return': 0, import: 0, 'func-names': 0, 'import/no-extraneous-dependencies': 0, 'import/prefer-default-export': 0, 'import/no-cycle': 0, 'import/extensions': 0, 'import/no-unresolved': 0, 'space-before-function-paren': 0, 'react/jsx-one-expression-per-line': 0, 'react/no-danger': 0, 'react/display-name': 1, 'react/react-in-jsx-scope': 0, 'react/jsx-uses-react': 1, 'react/forbid-prop-types': 0, 'react/no-unescaped-entities': 0, 'react/prop-types': 0, 'react/jsx-filename-extension': [ 1, { extensions: ['.js', '.jsx', '.tsx'], }, ], 'react-hooks/rules-of-hooks': 'error', 'react-hooks/exhaustive-deps': 'warn', quotes: [ 2, 'single', { avoidEscape: true, }, ], 'prettier/prettier': 'error', 'jsx-a11y/href-no-hash': 'off', 'jsx-a11y/anchor-is-valid': [ 'warn', { aspects: ['invalidHref'], }, ], }, }; // package.json 파일 { "name": "blahx2", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "@chakra-ui/icons": "^2.0.17", "@chakra-ui/react": "^1.8.8", "@emotion/react": "^11.10.5", "@emotion/styled": "^11.10.5", "axios": "^1.2.3", "chrome-aws-lambda": "^6.0.0", "firebase": "^9.15.0", "firebase-admin": "^11.4.1", "framer-motion": "^6.5.1", "moment": "^2.29.4", "next": "12.0.7", "playwright-core": "^1.30.0", "react": "17.0.2", "react-dom": "17.0.2", "react-query": "^3.39.3", "react-textarea-autosize": "^8.4.0", "styled-components": "^5.3.3" }, "devDependencies": { "@types/node": "^16.11.13", "@types/react": "^17.0.37", "@types/styled-components": "^5.1.18", "@typescript-eslint/eslint-plugin": "^5.8.0", "@typescript-eslint/parser": "^5.8.0", "babel-eslint": "^10.1.0", "babel-plugin-styled-components": "^2.0.2", "eslint": "8.4.1", "eslint-config-airbnb": "^19.0.2", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^16.1.0", "eslint-config-next": "12.0.7", "eslint-config-prettier": "^8.3.0", "eslint-plugin-babel": "^5.3.1", "eslint-plugin-import": "^2.25.3", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-react": "^7.27.1", "eslint-plugin-react-hooks": "^4.3.0", "prettier": "^2.5.1", "typescript": "^4.5.4" } }
-
해결됨홍정모의 따라하며 배우는 C++
return *this에 관해 질문이 있습니다.
*this가 멤버변수를 참조한다는 것은 알겠는데 왜 그냥 this를 리턴하면 저 오류가 뜨는지 모르겠습니다.this도 인스턴스화된 객체를 가리키는 포인터니까 좌값이 맞지 않나요? 아니면 인스턴스의 주소가 우값에 속해있는 건가요??
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
QuestView 테스트시 착선이 그어지지 않는 현상
안녕하세요 선생님 QuestView.cs 작성을 완료하고 UI에 전부 부착하고 테스트를 하는도중,완료된 task의 description에 착선이 그어지지 않는 현상이 있어서요..isComplete가 true인 조건문이 발동되지 않아 착선이 그어지지 않는것 같은데제가 실력이 부족해 왜 발동이 안되는지 인지가 되지 않아 질문 남깁니다강의에서는 착선이 그어졌는지 확인하는 장면은 없는것같아원래 안그어지는 버그인지, 제 코드의 문제인지 확인이 어렵네요 ㅜ.ㅜ무엇이 원인인지 답변 주시면 감사하겠습니다! 완료된 퀘스트가 ??로 보이는 모습 // QuestDetailView.cs -> Show 메서드 중.. foreach (var taskGroup in quest.TaskGroups) { foreach (var task in taskGroup.Tasks) { var poolObject = taskDescriptorPool[taskIndex++]; poolObject.gameObject.SetActive(true); // 실행 안되는 부분 if (taskGroup.IsComplete) poolObject.UpdateTextUsingStrikeThrough(task); // else if (taskGroup == quest.CurrentTaskGroup) poolObject.UpdateText(task); else poolObject.UpdateText("● ??????????"); } }
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
파일들의 내용이 자꾸 과거로 돌아가는데 혹시 이런 현상 아시나요?
사용 환경은 맥, intellij입니다spring config 시작한 뒤로 이러는데yml파일이나 xml(메이븐)파일을 수정해놔도 어느 순간 이상해서 보면 수정 전으로 돌아가있습니다 ㅜㅜ인텔리제이 캐시도 초기화해봤고 git에도 올려서 커밋까지 했는데 왜이러는지 모르겠어요..강의랑은 무관한 질문인 것 같아서 망설이다가 이것 때문에 전혀 진도를 나가지 못하고 있는 상황이라 여쭤봅니다혹시 모르신다면 제가 알아서 잘 해결해보겠습니다! 불필요한 질문 드려 죄송합니다.
-
미해결코딩테스트 [ ALL IN ONE ]
제가 이해한게 맞는지 확인부탁드립니다. [동적배열 8: 16초]
Array배열의 경우시작주소+ 4*(n-1) 즉 아무리 긴 배열이더라도한번의 연산으로원하는 데이터에 접근할 수 있기 때문에배열 요소에 접근할 때의 시간복잡도는O(1)입니다. 여기까지는 이해가 갑니다.그런데 동적 배열 8:16초에서Dynamic Array의 선언 및 초기화의 시간복잡도가 왜 O(n)인지 이해가 가지 않았는데요 질문1.예를 들어 배열의 사이즈가 3인 경우 (자바로 예를 들어 보겠습니다.)int[ ] array = { 10, 20, 30 };이런 경우 배열의 요소가 3개이므로주소값에 3번을 접근해야 하고,int[ ] array = {1, 2, 3, 4, 5};배열의 요소가 5개 일때는주소값에 5번을 접근해야 하며,int[ ] array = { 1, 2, 3,... n};배열의 요소가 n개 일때는주소값에 n번을 접근해야 한다.따라서 배열의 선언 및 초기화의 시간 복잡도는 O(n)이다. 제가 이해한 게 맞는지 답변 부탁드립니다.<질문하는 의도>"강사님께서 배열에 n개의 데이터를 저장해야 하기 때문에 배열의 선언 및 초기화의 시간 복잡도는 O(n)이다."라고 말씀하셨는데,제가 중간이 이해가 가지 않아서요 질문2.추가적으로 덧붙이자면메모리의 해당 번지에 있는 값을 삭제하기 위해서도 그 번지(주소)에 접근해야 하고,메모리의 해당 번지에 값을 추가하거나 할당하기 위해서 그 번지(주소)에 접근해야 되잖아요.그러면 메모리주소에 "접근"이란 말은 삭제, 할당, 수정, 삽입, 모든 경우에 다 통용되는 단어인거죠??
-
미해결
float에 double자료형을 넣으면 손실가능성이 생기죠?
double a = 0xab2.1p2; (double에 해당하는 값)float b = a이렇게 했을 땐 float에 double을 넣었다면서 loss of data 경고가 나오는데, float b = 0xab2.1p2;그냥 이렇게만 하면 딱히 아무런 경고도 안 나오고 그냥 처리되는데 무슨 차이인 건가요...??커서를 숫자에 올리면 똑같이 숫자는 double자료형으로 처리됐더라고요ㅠㅠ
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
yarn generate 에러
Invalid Custom Plugin "typescript" 라면서 에러가 뜹니다 어떻게 해결해야 할까요?
-
미해결카프카 완벽 가이드 - 코어편
클러스터 환경구성시 replication factor 1일때 메시지전송 관련 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님 공부하다가 궁금한게 생겨서 질문드립니다. 현재 클러스터 구성으로 실습을 진행중인데 broker 3개의 cluster에서 replication factor를 1로설정하였습니다. 여기서3번 브로커에 test라는 토픽을 생성후에 bootstrap-server 에 1,2번 서버를 넣고 토픽조회시 test 토픽이 조회가 되던데 복제본이 존재하지않는 상황에서 어떻게 조회가 되는건가요? 클러스터 구성시 자동으로 토픽을 공유하는건가요?3번 브로커에 test라는 토픽을 생성하였고 복제본도 존재하지않고 리더파티션과 통신하는걸로 알고있는데 리더파티션이 3번에 존재함에도 불구하고 브로커 1번이나 2번을 기준으로 topic에 붙어서 producer에서 메시지가 보내지는 이유가 궁금합니다. 감사합니다.
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
Vuex 사용하여 {{ 데이터 }} 표시시 에러 발생합니다..
이렇게 에러가 발생합니다 ㅠㅠindex.js 파일입니다.main.js 파일입니다.폴더 경로입니다. 저와 동일현상이 있는분이 질문올린걸 봤는데 뷰엑스를 뷰인스턴스에 연결한다는게 어떤 설정이 빠진걸까요?
-
미해결화이트해커가 되기 위한 8가지 웹 해킹 기술
DVWA 파일 인클루젼 공격 high 단계 질문
이런식으로 대응 하셨던데 저거는 file이라는 디렉토리가 실제로 존재해야 성립하는 것 아닌가요...? 소스 코드에서 따로 file문자열을 지우는 부분이 없어서 헷갈립니다..ㅜㅜ
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
CursorPagination 캐시팅 관련 문의
paginate 함수에서, final pState = state as CursorPagination 하는 분에서요,state as CursorPagination 하면 state.data라고 자동완성이 안되던데 왜 그런가요?데이터타입을 CursorPaginationBase로만 인식하던데 as CursorPagination을하면 확실한 다운캐스팅에선 data가 인식 되어야 맞는거 아닌가요?