묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 스트림즈 에러 핸들링 질문 드립니다
카프카 스트림즈에서 에러 발생 시 commit이 어떻게 진행되는지 궁금합니다(카프카 스트림즈는 auto.commit 설정을 변경할 수 없는걸로 이해하고 있습니다혹시 잘못 이해하고 있다면 말씀 부탁드립니다~)에러 핸들링 클래스 리턴 타입이 각각 FAIL, CONTIUNE 일 때FAIL이면 커밋 X, CONTINUE이면 커밋 O맞을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
split_debug 질문입니다
안녕하세요 큰돌님 split_debug 를 보면서 궁금한 점이 생겼는데요while ((pos = input.find(delimiter)) != string::npos) { longlong pos = input.find(delimiter); cout << "POS : " << pos << '\n'; if (pos == string::npos)break; token = input.substr(0, pos); ret.push_back(token); input.erase(0, pos + delimiter.length()); } ret.push_back(input); return ret;while문의 조건으로(pos = input.find(delimiter)) != string::npos가 있는데 if(pos == string::npos) break 를 하는 이유가 궁금합니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ErrorPage를 참조하는 건 누군인가요?
[질문 내용]안녕하세요 강의를 보다가 ErrorPage객체를 참조하는 주체가 누구인 지 궁금해서 질문 올리게 되었습니다!예외가 발생했을 때 WAS까지 넘어오면 WAS가 ErrorPage 객체를 참조해서 에러페이지에 대한 재요청을 보내는 것인가요 아니면 WAS가 DispatcherType을 Error로 해서 재요청을 보내면 프론트 컨트롤러에서 ErrorPage를 참조해서 Controller를 호출하는 건가요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
미로탐색(DFS) 질문드립니다
미로탐색(DFS) 문제 풀이중DFS함수내에if(nx>=1 && nx<=7 && ny>=1 && ny<=7 && board[nx][ny]==0) 가 있는데if(board[nx][ny]==0 && nx>=1 && nx<=7 && ny>=1 && ny<=7) 로 변경하면범위오류가 발생합니다 앤드조건임에도 순서를 고려해야할까요..
-
해결됨HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
position 질문
선생님 안녕하세요. 햄버거 메뉴 만들 때label에 position: relativelabel span 에 position: absolute 이렇게 포지션값을 주었는데,사이드바 만들면서 label의 position: relative 를 absolute로 바꿔주게 되는데그럼 label span 의 position: absolute 의 relative는 무엇이 되는 건가요?? label의 포지션을 앱솔루트로 바꿨는데도, label span에는 영향이 없는 이유가 궁금합니다label[for=trigger] { /* border: 1px solid red; */ width: 30px; height: 20px; display: block; position: absolute; cursor: pointer; right: 10px; top: 50%; transform: translateY(-50%); transition: 0.5s; } label[for=trigger] span { position: absolute; height: 2px; background-color: #000; width: 100%; left: 0; transition: 0.3s; } /* sidebar */ .sidebar { background-color: #000; width: 300px; height: 100vh; position: fixed; right: -300px; transition: 0.5s; }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
타임리프 파싱 오류
https://drive.google.com/file/d/19kE1MqjQqEW--lxC_1x8EprFxsnAtWRB/view?usp=sharing 주문 목록까지는 나오는데 ORDER로 해놓고 검색을 하면 이렇게 파싱이 안됩니다. 경로도 맞는데 어디서 문제가 있는지 모르겠습니다.거의 다왔는데 마지막에 애먹네요 ㅠㅠ
-
미해결
mysql - ORDER BY FIELD / jpa에서 유사한 기능이 있나요 ?
MySQL IN 절 안에 있는 순서대로 정렬하기SELECT * FROM TABLE WHERE KEY IN (2, 1, 3) ORDER BY FIELD(KEY, 1, 2, 3) ORDER BY FIELD 이 기능이 jpa에도 있나요 ??
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
infinite scroll에서 scroll 위치 기억하는 법에 대해 질문드립니다.
infinite scroll을 하다가 게시글을 누르면 해당 게시글로 이동하고, 뒤로가기를 누르면 원래 보던 scroll 위치로 이동하도록 만들고 싶습니다.마치 인스타그램 게시글들을 보다가 프로필을 누르면 프로필 페이지로 이동하고 뒤로가기를 누르면 원래 보던 위치로 돌아가는 것처럼 구현하고 싶습니다. 시도한 방법scroll 위치는 localStorage를 이용해서 저장했습니다. 문제는 게시글들인데 게시물들은 아래와 같이 ssr을 이용해서 미리 불러왔습니다.export const getServerSideProps = wrapper.getServerSideProps( (store) => async ({ req, query, resolvedUrl, res }) => { // login const cookie = req.headers?.cookie; axios.defaults.headers.Cookie = ""; if (cookie) { axios.defaults.headers.Cookie = cookie; } store.dispatch({ type: CHECK_LOGIN_REQUEST, }); // board if ( store.getState().board.previousUrl === null || store.getState().board.previousUrlType !== query.type ) { store.dispatch({ type: SAVE_PREVIOUS_URL_TYPE, data: query.type, }); store.dispatch({ type: SAVED_POSTS_INITIALIZE, }); store.dispatch({ type: LOAD_BOARD_REQUEST, data: { type: resolvedUrl }, }); } store.dispatch(END); await store.sagaTask.toPromise(); } );게시글 페이지로 이동하면 지금까지 본 게시글들이 사라지고, 다시 돌아오면 load되면서 scrollHeight가 localStorage에 저장된 scroll 위치보다 작아지면서 이동하지 않는 현상이 발생합니다.어떻게 하면 되는지 조언 부탁드립니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
queue를 배우다가 궁금한게 생겨서 질문드립니다.
응급실 문제를 풀고 강의를 듣고 왔는데요큐에서는 왜 get 매서드를 지원하지 않나요?FIFO에 어긋나나요?stack의 경우 vector를 확장해서 쓰기때문에 lifo에 어긋난다라는 글을 본적이 있어서 검색해보니 lifo는 삽입과 삭제의 경우에 해당하는거 같아서요 조회에는 해당하지 않는거 같은데 해당하나요? 아 물론 그냥 얘네가 그렇게 제공을 했다!! 하는거면 그런거겠지만요. 뭔가 그 개념적인? 이유가 있는지 궁금합니다 왜 궁금하냐면!! 어떻게보면 api?에서 제공하지 않는 get을 class를 만들어 편법?적으로 접근하신거같아서 입니다!! 조금 무례한 질문 죄송합니다
-
해결됨실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
querydslConfig
안녕하세요 강사님. build.gradle을 build.gradle.kts로 변경하고 QuerydslConfig 를 확인해보니@Configuration data class QuerydslConfig( private val em: EntityManager ) { @Bean fun querydsl(): JPAQueryFactory { return JPAQueryFactory(em) } } -> em 부분에 빨간색 밑줄이 뜨고 Could not autowire. No beans of 'EntityManager' type found. 에러가 뜨더라구요. 어떤 부분을 변경해야 빨간 밑줄이 삭제될까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
코드 제공
익숙한 내용은 강의를 보면서 코드를 따라치기 번거로워서 그런데 강의하시는 코드를 깃허브로 제공받을 수 있을까요?
-
해결됨한 방에 끝! 빅데이터분석기사 실기 작업형
predict 와 predict_proba 차이
predict 와 predict_proba 차이 강의자료에 짧게 있지만 잘 이해가 안되서요 자세하게 차이를 알고 싶습니다!그리고 다중분류일때 사용하는법도 알고 싶습니다! 다중분류일때 predict_proba 를 사용해서 값이나오면 그값이 의미하는것이 무엇인지요~
-
해결됨CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
디자인 패턴 자바 문의
안녕하세요 좋은 강의 감사합니다!디자인 패턴은 JS로만 제공되는건가요?
-
미해결
공용계정 생성 문의
3명이서 하나의 계정으로 관리 및 강의결제 하려고 하는데 이용방법이 있을까요?
-
미해결Slack 클론 코딩[실시간 채팅 with React]
채널 생성시 channelData.map is not a function
채널생성 클릭하면 channeldata.map is not a function이라고 에러가 뜨는데channelData뿌려지는곳에 ?옵셔널도 줬고..아래처럼 잘 작성한것같은데 어딜 놓쳤는지 모르겠습니다.새로고침하면 추가된 채널명이 출력됩니다. workspaceimport fetcher from '@utils/fetcher'; import axios from 'axios'; import React, { FC, useCallback, useState } from 'react'; import { Navigate, useParams } from 'react-router-dom'; import useSWR from 'swr'; import { AddButton, Channels, Chats, Header, LogOutButton, MenuScroll, ProfileImg, ProfileModal, RightMenu, WorkspaceButton, WorkspaceModal, WorkspaceName, Workspaces, WorkspaceWrapper, } from './styles'; import gravatar from 'gravatar'; import Menu from '@components/menu'; import { Link } from 'react-router-dom'; import { IChannel, IUser, IWorkspace } from '@typings/db'; import { Button, Input, Label } from '@pages/signup/styles'; import useInput from '@hooks/useInput'; import Modal from '@components/modal'; import { toast } from 'react-toastify'; import CreateChannelModal from '@components/createChannelModal'; const Workspace: FC = ({ children }) => { const { workspace, channel } = useParams<{ workspace: string; channel: string }>(); const { data: userData, error, mutate } = useSWR<IUser | false>('/api/users', fetcher, { dedupingInterval: 2000 }); const { data: channelData } = useSWR<IChannel[]>(userData ? `/api/workspaces/${workspace}/channels` : null, fetcher); if (!userData) { return <Navigate to="/login" />; } const [showUserMenu, setShowUserMenu] = useState(false); const [newWorkspace, onChangeNewWorkspace, setNewWorkspace] = useInput(''); const [newUrl, onChangeNewUrl, setNewUrl] = useInput(''); const [showWorkspaceModal, setShowWorkspaceModal] = useState(false); const [showCreateChannelModal, setShowCreateChannelModal] = useState(false); const [showCreateWorkspaceModal, setShowCreateWorkspaceModal] = useState(false); //functions const onLogout = useCallback(() => { axios .post('/api/users/logout', null, { withCredentials: true, }) .then((res) => { mutate(res.data); }); }, []); const onClickUserProfile = useCallback(() => { setShowUserMenu(!showUserMenu); }, [showUserMenu]); const onClickCreateWorkspace = useCallback(() => { setShowCreateWorkspaceModal(true); }, []); const onCreateWorkspace = useCallback( (e) => { e.preventDefault(); if (!newWorkspace || !newWorkspace.trim()) return; if (!newUrl || !newUrl.trim()) return; //trim ->띄어쓰기 하나도 통과 돼버리는걸 막는다. axios .post( '/api/workspaces', { workspace: newWorkspace, url: newUrl, }, { withCredentials: true, }, ) .then((res) => { mutate(res.data); setShowCreateWorkspaceModal(false); setNewWorkspace(''), setNewUrl(''); }) .catch((err) => { console.dir(err); toast.error(error.response?.data, { position: 'bottom-center' }); }); }, [newWorkspace, newUrl], ); const onCloseModal = useCallback(() => { setShowCreateWorkspaceModal(false); setShowCreateChannelModal(false); }, []); const toggleWorkspaceModal = useCallback(() => { setShowWorkspaceModal(!showWorkspaceModal); }, [showWorkspaceModal]); const onClickAddChannel = useCallback(() => { setShowCreateChannelModal(true); }, []); return ( <div> <Header> <RightMenu> <span onClick={onClickUserProfile}> <ProfileImg src={gravatar.url(userData.email, { s: '28px', d: 'retro' })} alt={userData.nickname} /> {showUserMenu && ( <Menu style={{ right: 0, top: 38 }} onCloseModal={onClickUserProfile} show={showUserMenu}> <ProfileModal> <img src={gravatar.url(userData.email, { s: '28px', d: 'retro' })} alt={userData.nickname} /> <div> <span id="profile-name">{userData.nickname}</span> <span id="profile-active">Active</span> </div> </ProfileModal> <LogOutButton onClick={onLogout}>로그아웃</LogOutButton> </Menu> )} </span> </RightMenu> </Header> <WorkspaceWrapper> <Workspaces> {userData.Workspaces?.map((ws: IWorkspace) => { return ( <Link key={ws.id} to={`/workspace/${123}/channel/일반`}> <WorkspaceButton>{ws.name.slice(0, 1).toUpperCase()}</WorkspaceButton> </Link> ); })} <AddButton onClick={onClickCreateWorkspace}>+</AddButton> </Workspaces> <Channels> <WorkspaceName onClick={toggleWorkspaceModal}>Sleact</WorkspaceName> <MenuScroll> <Menu show={showWorkspaceModal} onCloseModal={toggleWorkspaceModal} style={{ top: 95, left: 80 }}> <WorkspaceModal> <h2>Sleact</h2> {/* <button onClick={onClickInviteWorkspace}>워크스페이스에 사용자 초대</button> */} <button onClick={onClickAddChannel}>채널 만들기</button> <button onClick={onLogout}>로그아웃</button> </WorkspaceModal> </Menu> {channelData?.map((v, idx) => ( <div key={idx}>{v.name}</div> ))} </MenuScroll> </Channels> <Chats> {children}</Chats> </WorkspaceWrapper> <Modal show={showCreateWorkspaceModal} onCloseModal={onCloseModal}> <form onSubmit={onCreateWorkspace}> <Label id="workspace-label"> <span>워크스페이스 이름</span> <Input id="workspace" value={newWorkspace} onChange={onChangeNewWorkspace} /> </Label> <Label id="workspace-url-label"> <span>워크스페이스 url</span> <Input id="workspace" value={newUrl} onChange={onChangeNewUrl} /> </Label> <Button type="submit">생성하기</Button> </form> </Modal> <CreateChannelModal show={showCreateChannelModal} onCloseModal={onCloseModal} setShowCreateChannelModal={setShowCreateChannelModal} /> </div> ); }; export default Workspace; createChannelModalimport Modal from '@components/modal'; import useInput from '@hooks/useInput'; import { Button, Input, Label } from '@pages/signup/styles'; import { IChannel, IUser } from '@typings/db'; import fetcher from '@utils/fetcher'; import axios from 'axios'; import React, { useCallback, VFC } from 'react'; import { useParams } from 'react-router-dom'; import { toast } from 'react-toastify'; import useSWR from 'swr'; interface Props { show: boolean; onCloseModal: () => void; setShowCreateChannelModal: (flag: boolean) => void; } const CreateChannelModal: VFC<Props> = ({ show, onCloseModal, setShowCreateChannelModal }) => { const [newChannel, onChangeNewChannel, setNewChannel] = useInput(''); const { workspace, channel } = useParams<{ workspace: string; channel: string }>(); const { data: userData } = useSWR<IUser | false>(`/api/users`, fetcher); const { data: channelData, mutate } = useSWR<IChannel[]>( userData ? `/api/workspaces/${workspace}/channels` : null, fetcher, ); const onCreateChannel = useCallback( (e) => { e.preventDefault(); axios .post( `/api/workspaces/${workspace}/channels`, { name: newChannel, }, { withCredentials: true }, ) .then((res) => { setShowCreateChannelModal(false); mutate(res.data); setNewChannel(''); }) .catch((err) => { console.dir(err); toast.error(err.response?.data, { position: 'bottom-center' }); }); }, [newChannel], ); return ( <Modal show={show} onCloseModal={onCloseModal}> <form onSubmit={onCreateChannel}> <Label id="channel-label"> <span>채널</span> <Input id="channel" value={newChannel} onChange={onChangeNewChannel} /> </Label> <Button type="submit">생성하기</Button> </form> </Modal> ); }; export default CreateChannelModal;
-
미해결HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌
가감속 테이블
안녕하세요 선생님PWM 주기 변경을 보고 가감속 테이블을 만들어서 테스트를 진행할려고 하는데 속도가 너무 빨라서 그런지 몰라서 점점 빨라지다가 동작이 멈춰버리는데 혹시 요령이나 방법을 알 수 있을까요?
-
해결됨비전공자를 위한 진짜 입문 올인원 개발 부트캠프
상품이 아래로 나열되요 ㅜ
똑같은 css파일인데 왜 다르게 나타날까요 ㅠㅠ위가 처음에 react없이 그냥 html로만 만든거구요아래가 react로 만든건데같은 index.css파일인데 왜 다르게 나타날까요 ㅠㅠ
-
미해결처음 만난 리액트(React)
작동이 안되네요....ㅠㅠ
Line 4:8: 'App' is defined but never used no-unused-vars이러한 내용으로 에러가 뜨고에러 라인 옆에 // eslint-disable-next-line << 주석도 달아봤는데 해결이 안됩니다..
-
미해결스프링 시큐리티 OAuth2
RSA 검증 기능 구현 - PublicKey.txt 에 의한 검증 46:20
/api/user get 요청시 JwtAuthorizationRsaPublicKeyFilter#doFilterInternal코드를 블록에서 에러가 발생합니다.Jwt jwt = jwtDecoder.decode(getToken(request)); String username = jwt.getClaimAsString("username");디버깅으로 따라가봤습니다.JwtAuthenticationFilter#getToken 리턴값으로(토큰값에서 Bearer를 없애고 리턴한 값)Jwt jwt = jwtDecoder.decode(getToken(request));위 코드를 실행했었어야 했는데 자꾸 프로그램이 종료가 됩니다?원인을 알 수 가없습니다.깃 클론 링크입니다. git@github.com:InSuChoe/spring-security-oauth2.git
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
WSASend
좋은 강의 감사드립니다.::WSASend(_socket, wsaBufs.data(), static_cast<DWORD>(wsaBufs.size()), OUT &numOfBytes, 0, &_sendEvent, nullptr))전체적인 소스에서 데이터가 일부만 보내진 경우에 대한 처리가 안되어 있는것 같은데요,일부만 보내지는 경우가 거의 희박하여 구현하지 않으신건지, 아니면 구현되어 있으나 제가 잘못 이해하고 있는건지 궁금합니다.