묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Swift로 iOS 2D 아케이드 게임 만들기
안녕하세요 asset 이미지 관련 질문이 있씁니다
제가 배운것들을 바탕으로 완성된 게임에기능을 더 추가하고 싶은데이미지같은건 어디서 구하는건가요?스토어에 런칭할 목적도 아니여서 저작권 있는 사진도 상관이 없는데ios 게임개발할때 넣은 이미지들 구하는 사이트가 있을까요?
-
미해결뉴욕 프로덕트 디자이너가 알려주는, 입문자를 위한 UX디자인 개론
안녕하세요 에릭님 !! 공부한 강의 내용 정리하고 공부 한 내용을 제 개인 블로그에 올려도 괜찮을까요??
안녕하세요!! 웹디 공부를 이번에 시작했습니다 !! 찾아 보다가 블로그에 공부한 것들을 정리해서 올리면 나중에 면접을 볼 때 도움이 된다고 들었습니다 ㅜㅜ제가 에릭님 강의 듣고 너무 좋아서 커리큘럼 대로 구매해서 보고 있습니다,, 강의 공부가 끝나면 정리한 내용들을 블로그에 올려도 괜찮을까요..?! 안된다면 올리지 않겠습니다 죄송합니다 ㅠㅠ
-
미해결
데브툴 소스맵 오류 확인 좀 부탁드립니다 ㅠ
browser-polyfill.js 파일이 없다는거같은데맞나요? 혹시 맞다면 해결방법 좀 알려주시면 감사하겠습니다
-
미해결스프링 기반 REST API 개발
maven으로 생성한 docs파일(index.html)에서의 not found 오류 질문
안녕하세요. 백기선님 강의 덕분에 성장 중입니다. 강의 항상 감사합니다. 다름이 아니라, 인텔리제이의 maven 메뉴에 있는 package로 생성된 index.html 에 있는 내용들이not found operator:: 라면서 오류가 납니다.pom.xml, test에 있는 createEvent(), EventController 에서 틀린 부분이 있는지 찾아봤는데도 분명 소스는 같은데 왜 틀리는지 잘 모르겠습니다.제가 아직 not found operator:: 이 부분이 무슨 뜻인지 몰라서일까요...테스트는 일단 잘 돌아갑니다(?)현재 사용 중인 버전은아파치 메이븐 3.8.1 (약 2018년 버전으로 예상)스프링 부트 2.6.13입니다. 도와주시면 감사드리겠습니다🙇♂️소스는 링크로 걸어놓겠습니다. (pom.xml 외 다른 소스들은 실습 중이라 달라질 수 있습니다)EventControllerhttps://github.com/intrager/Spring-STUDY2/blob/main/restfulHan/src/main/java/me/brucehan/restfulhan/events/EventController.java RestDocsConfigurationhttps://github.com/intrager/Spring-STUDY2/blob/main/restfulHan/src/test/java/me/brucehan/restfulhan/common/RestDocsConfiguration.java EventControllerTestshttps://github.com/intrager/Spring-STUDY2/blob/main/restfulHan/src/test/java/me/brucehan/restfulhan/events/EventControllerTests.java pom.xmlhttps://github.com/intrager/Spring-STUDY2/blob/main/restfulHan/pom.xml index.adochttps://github.com/intrager/Spring-STUDY2/blob/main/restfulHan/src/main/asciidoc/index.adoc
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@controller 인식이 안돼요
섹션 1 view 환경설정 코드 그대로 폴더만들고 따라치다가 @controller를 인식못하는 것같아서 이것저것 다 구글링해서 시도해봣는데 해결이 안됩니다 ㅠㅠ왜 @controller하면 인식못하는지 어떻게 해결해야하는지 알고 싶습니다
-
해결됨[개정판] 파이썬 머신러닝 완벽 가이드
예측정확도가 아닌 예측결과를 알 수 있나요?
머신러닝을 통해 하나의 데이터 값이 어느 값을 가질지 예측하는 결과를 알 수는 없나요?예를 들어 여러 붓꽃데이터를 학습시킨 다음에 하나의 붓꽃데이터를 준 후 기계가 이 붓꽃데이터가 어디에 들어가는지 판별하는것을 알 수 있나요?
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
ssh-copy-id 에러 문의
저도 밑에 있는 분과 같은 증상인데요ansible-server에서 ssh-copy-id 명령어 입력 후윈도우 .ssh 폴더에 가서 authorized_key를 열어보면ECHO가 설정되어 있습니다라는 글이 한줄 추가 되어있습니다.같은걸 반복해서 실행 할 경우 동일하게 같은 글이 한줄더 추가가 됩니다(수동으로 직접 값을 넣어봐도 ping 오류는 납니다)혹시 관련 사항 해결방법이 있을까요??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티나 임베디드 타입 개발
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 자료에 JPA 스펙상 엔티티나 임베디드타입은 자바 기본 생성자를 public 또는 protected로 설정해야 한다고 나와있습니다. 그리고 protected로 설정하는 것을 추천해주셨는데요. 쉽게 말해서 모든 엔티티나 임베디드타입을 개발할때 @NoArgumentConstructor를 넣어주면 괜찮을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
코드를 혹시 받을 수 있을까요?
파란색 말이 움직이지를 않아서요. 혹시 예제코드가 있다면 받고 싶어요
-
미해결Slack 클론 코딩[실시간 채팅 with React]
Chats안에 Route된 페이지가 화면에 출력 되지 않는 현상
import { AddButton, Channels, Chats, Header, LogOutButton, MenuScroll, ProfileImg, ProfileModal, RightMenu, WorkspaceButton, WorkspaceModal, WorkspaceName, Workspaces, WorkspaceWrapper } from '@layouts/Workspace/styles' import fetcher from '@utils/fetcher'; import React, { useCallback, useState } from 'react'; import useSWR from 'swr'; import axios from 'axios' import gravatar from 'gravatar' import loadable from '@loadable/component'; import { Navigate, Route, Routes } from 'react-router'; import { useParams } from 'react-router'; import { toast } from 'react-toastify'; import Menu from '@components/Menu'; import useInput from '@hooks/useInput'; import Modal from '@components/Modal'; import CreateChannelModal from '@components/CreateChannelModal'; import { IChannel, IUser } from '@typings/db'; import { Link } from 'react-router-dom'; import { Button, Input, Label } from '@pages/SignUp/styles'; import InviteWorkspaceModal from '@components/InviteWorkspaceModal'; import InviteChannelModal from '@components/InviteChannelModal'; import ChannelList from '@components/ChannelList'; import DMList from '@components/DMList'; const Channel = loadable(() => import('@pages/Ch')); const DirectMessage = loadable(() => import('@pages/DirectMessage')); const Workspace = () => { // const Workspace: React.FC<Props> = ({ children }) => { // const { data: userData, mutate: revalidateUser } = useSWR<IUser | false>('http://localhost:3095/api/users', fetcher); const [showUserMenu, setShowUserMenu] = useState(false); const [showCreateWorkspaceModal, setShowCreateWorkspaceModal] = useState(false); const [showInviteWorkspaceModal, setShowInviteWorkspaceModal] = useState(false); const [showInviteChannelModal, setShowInviteChannelModal] = useState(false); const [showWorkspaceModal, setShowWorkspaceModal] = useState(false); const [showCreateChannelModal, setShowCreateChannelModal] = useState(false); const [newWorkspace, onChangeNewWorkspace, setNewWorkpsace] = useInput(''); const [newUrl, onChangeNewUrl, setNewUrl] = useInput(''); const { workspace } = useParams<{ workspace: string }>(); const { data: userData, error, mutate: revalidateUser } = useSWR<IUser | false>('/api/users', fetcher, { dedupingInterval: 2000, }); const { data: channelData } = useSWR<IChannel[]>( userData ? `/api/workspaces/${workspace}/channels` : null, fetcher); const onLogout = useCallback(() => { console.log(userData) axios.post( '/api/users/logout', null, { withCredentials: true, }) .then(() => { revalidateUser(false, false); }) .catch((err) => { console.log(err) }) }, []) const onClickUserProfile = useCallback(() => { setShowUserMenu((prev) => !prev); }, []) const onCloseUserProfile = useCallback((e: React.MouseEvent<HTMLInputElement>) => { // console.trace('click') e.stopPropagation(); setShowUserMenu((prev) => !prev); }, []) const onClickCreateWorkspace = useCallback(() => { setShowCreateWorkspaceModal(true); }, []) // 메뉴창에 채널생성 const onCreateWorkspace = useCallback((e: React.FormEvent<HTMLFormElement>) => { e.preventDefault(); if (!newWorkspace || !newWorkspace.trim()) return; if (!newUrl || !newUrl.trim()) return; axios.post('/api/workspaces', { workspace: newWorkspace, url: newUrl, }, { // 내가 로그인 된 상태라는걸 쿠키를 전달해서 안다 withCredentials: true, }).then(() => { revalidateUser(); // 초기화 setShowCreateWorkspaceModal(false); setNewWorkpsace(''); setNewUrl(''); }).catch((error) => { console.dir(error); // toastify npm으로 에러 메세지 toast.error(error.response?.data, { position: 'bottom-center' }) }) }, [newWorkspace, newUrl]) // 모달닫기 const onCloseModal = useCallback(() => { setShowCreateWorkspaceModal(false); setShowCreateChannelModal(false); setShowInviteWorkspaceModal(false); setShowInviteChannelModal(false); }, []) const toggleWorkspaceModal = useCallback(() => { setShowWorkspaceModal((prev) => !prev); }, []) const onClickAddChannel = useCallback(() => { setShowCreateChannelModal(true); }, []) const onClickInviteWorkspace = useCallback(() => { setShowInviteWorkspaceModal(true); }, []); // return 아래에 hooks가 있으면 Invalid hook call 에러가 뜬다 if (userData === undefined) return null; if (userData === false) { return <Routes><Route path="/*" element={<Navigate replace to="/login" />} /></Routes> } 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 }} show={showUserMenu} onCloseModal={onCloseUserProfile}> <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 && userData?.Workspaces.map((ws: any) => { return ( <Link key={ws.id} to={`/workspace/${ws.url}/channel/일반`}> <WorkspaceButton>{ws.name.slice(0, 1).toUpperCase()}</WorkspaceButton> </Link> ); })} <AddButton onClick={onClickCreateWorkspace}>+</AddButton> </Workspaces> <Channels> <WorkspaceName onClick={toggleWorkspaceModal}>Sleact</WorkspaceName> <MenuScroll> {/* Menu에서 div옆에 style을 받았기 때문에 style사용가능 */} <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> <ChannelList /> <DMList /> </MenuScroll> </Channels> <Chats> <Routes> <Route path='/workspace/:workspace/channel/:channel/*' element={<><Channel /></>} /> <Route path='/workspace/:workspace/dm/:id/*' element={<><DirectMessage /></>} /> </Routes> </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} /> <InviteWorkspaceModal show={showInviteWorkspaceModal} onCloseModal={onCloseModal} setShowInviteWorkspaceModal={setShowInviteWorkspaceModal} /> <InviteChannelModal show={showInviteChannelModal} onCloseModal={onCloseModal} setShowInviteChannelModal={setShowInviteChannelModal} /> </div> ) } export default Workspace;Workspace import React from 'react'; import gravatar from 'gravatar'; import { Container, Header } from './styles'; import { useParams } from 'react-router'; import useSWR from 'swr'; import fetcher from '@utils/fetcher'; import ChatBox from '@components/ChatBox'; import ChatList from '@components/ChatList'; const DirectMessage = () => { const { workspace, id } = useParams<{ workspace: string; id: string }>(); const { data: userData } = useSWR(`/api/workspaces/${workspace}/users/${id}`, fetcher); const { data: myData } = useSWR('/api/users', fetcher); if (!userData || !myData) { return null } return ( <Container> <Header> <img src={gravatar.url(userData.email, { s: '24px', d: 'retro' })} alt={userData.nickname} /> <span>{userData.nickname}</span> </Header> <ChatList /> <ChatBox chat="" /> </Container> ) } export default DirectMessage;DirectionMessage import React, { useCallback } from 'react' import { Form } from 'react-router-dom'; import { ChatArea, MentionsTextarea, SendButton, Toolbox } from './styles'; interface Props { chat: string; } const ChatBox: React.FC<Props> = ({ chat }) => { const onSubmitForm = useCallback(() => { }, []); return ( <ChatArea> <Form onSubmit={onSubmitForm}> <MentionsTextarea> <textarea /> </MentionsTextarea> <Toolbox> <SendButton className={ 'c-button-unstyled c-icon_button c-icon_button--light c-icon_button--size_medium c-texty_input__button c-texty_input__button--send' + (chat?.trim() ? '' : ' c-texty_input__button--disabled') } data-qa="texty_send_button" aria-label="Send message" data-sk="tooltip_parent" type="submit" disabled={!chat?.trim()} > <i className="c-icon c-icon--paperplane-filled" aria-hidden="true" /> </SendButton> </Toolbox> </Form> </ChatArea> ) } export default ChatBox;ChatBoximport styled from '@emotion/styled'; export const Container = styled.div` display: flex; flex-wrap: wrap; height: calc(100vh - 38px); flex-flow: column; position: relative; `; export const Header = styled.header` height: 64px; display: flex; width: 100%; --saf-0: rgba(var(--sk_foreground_low, 29, 28, 29), 0.13); box-shadow: 0 1px 0 var(--saf-0); padding: 20px 16px 20px 20px; font-weight: bold; align-items: center; & img { margin-right: 5px; } `; export const DragOver = styled.div` position: absolute; top: 64px; left: 0; width: 100%; height: calc(100% - 64px); background: white; opacity: 0.7; display: flex; align-items: center; justify-content: center; font-size: 40px; `;DirectMessage stylesimport styled from '@emotion/styled'; import { MentionsInput } from 'react-mentions'; export const ChatArea = styled.div` display: flex; width: 100%; padding: 20px; padding-top: 0; `; export const Form = styled.form` color: rgb(29, 28, 29); font-size: 15px; width: 100%; border-radius: 4px; border: 1px solid rgb(29, 28, 29); `; export const MentionsTextarea = styled(MentionsInput)` font-family: Slack-Lato, appleLogo, sans-serif; font-size: 15px; padding: 8px 9px; width: 100%; & strong { background: skyblue; } & textarea { height: 44px; padding: 9px 10px !important; outline: none !important; border-radius: 4px !important; resize: none !important; line-height: 22px; border: none; } & ul { border: 1px solid lightgray; max-height: 200px; overflow-y: auto; padding: 9px 10px; background: white; border-radius: 4px; width: 150px; } `; export const Toolbox = styled.div` position: relative; background: rgb(248, 248, 248); height: 41px; display: flex; border-top: 1px solid rgb(221, 221, 221); align-items: center; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; `; export const SendButton = styled.button` position: absolute; right: 5px; top: 5px; `; export const EachMention = styled.button<{ focus: boolean }>` padding: 4px 20px; background: transparent; border: none; display: flex; align-items: center; color: rgb(28, 29, 28); width: 100%; & img { margin-right: 5px; } ${({ focus }) => focus && ` background: #1264a3; color: white; `}; `;ChatBox stylesimport styled from '@emotion/styled'; export const RightMenu = styled.div` float: right; `; export const Header = styled.header` height: 38px; background: #350d36; color: #ffffff; box-shadow: 0 1px 0 0 rgba(255, 255, 255, 0.1); padding: 5px; text-align: center; `; export const ProfileImg = styled.img` width: 28px; height: 28px; position: absolute; top: 5px; right: 16px; `; export const ProfileModal = styled.div` display: flex; padding: 20px; & img { display: flex; } & > div { display: flex; flex-direction: column; margin-left: 10px; } & #profile-name { font-weight: bold; display: inline-flex; } & #profile-active { font-size: 13px; display: inline-flex; } `; export const LogOutButton = styled.button` border: none; width: 100%; border-top: 1px solid rgb(29, 28, 29); background: transparent; display: block; height: 33px; padding: 5px 20px 5px; outline: none; cursor: pointer; `; export const WorkspaceWrapper = styled.div` display: flex; flex: 1; `; export const Workspaces = styled.div` width: 65px; display: inline-flex; flex-direction: column; align-items: center; background: #3f0e40; border-top: 1px solid rgb(82, 38, 83); border-right: 1px solid rgb(82, 38, 83); vertical-align: top; text-align: center; padding: 15px 0 0; `; export const Channels = styled.nav` width: 260px; display: inline-flex; flex-direction: column; background: #3f0e40; color: rgb(188, 171, 188); vertical-align: top; & a { padding-left: 36px; color: inherit; text-decoration: none; height: 28px; line-height: 28px; display: flex; align-items: center; &.selected { color: white; } } & .bold { color: white; font-weight: bold; } & .count { margin-left: auto; background: #cd2553; border-radius: 16px; display: inline-block; font-size: 12px; font-weight: 700; height: 18px; line-height: 18px; padding: 0 9px; color: white; margin-right: 16px; } & h2 { height: 36px; line-height: 36px; margin: 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size: 15px; } `; export const WorkspaceName = styled.button` height: 64px; line-height: 64px; border: none; width: 100%; text-align: left; border-top: 1px solid rgb(82, 38, 83); border-bottom: 1px solid rgb(82, 38, 83); font-weight: 900; font-size: 24px; background: transparent; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding: 0; padding-left: 16px; margin: 0; color: white; cursor: pointer; `; export const MenuScroll = styled.div` height: calc(100vh - 102px); overflow-y: auto; `; export const WorkspaceModal = styled.div` padding: 10px 0 0; & h2 { padding-left: 20px; } & > button { width: 100%; height: 28px; padding: 4px; border: none; background: transparent; border-top: 1px solid rgb(28, 29, 28); cursor: pointer; &:last-of-type { border-bottom: 1px solid rgb(28, 29, 28); } } `; export const Chats = styled.div` flex: 1; `; export const AddButton = styled.button` color: white; font-size: 24px; display: inline-block; width: 40px; height: 40px; background: transparent; border: none; cursor: pointer; `; export const WorkspaceButton = styled.button` display: inline-block; width: 40px; height: 40px; border-radius: 10px; background: white; border: 3px solid #3f0e40; margin-bottom: 15px; font-size: 18px; font-weight: 700; color: black; cursor: pointer; `;Workspace Styles (혹시나 해서 스타일까지 올렸습니다)저기 흰색 부분 (Chats) 부분에 아무것도 출력이 되지 않습니다. 아예 DirectMessage 페이지 자체를 못 받아오는 것 같은데 route를 App으로 옮겨서 <div>TEST</div>만 출력 시킬 땐 작동이 됩니다..그래서 <Channel />이랑 <DirectMessage />이렇게 Route바깥으로 빼서 출력해보면const { data: userData } = useSWR(`/api/workspaces/${workspace}/users/${id}`, fetcher);저 ${id} 부분이 undefined가 나옵니다.. 메세지 클릭시 url 주소는 제대로 다 바뀌고 있습니다
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
강사님 2-7 점수계산 문의드립니다.
안녕하세요 선생님덕분에 코딩테스트 열심히 준비하고 있는 학생입니다. 다름이 아니라 궁금한 점이 있어 이렇게 문의 드립니다. 강의와 같은 코드를 구현 후 로컬에서 실행 시켰을 경우에는 답이 정확하게 나오는데 채점 사이트에 올리면 오답이라고 답이 계속 나오는데 혹시 제가 잘못한 부분인건지, 아니면 채점 사이트에서 요구하는 것이 잘못된 것인지 여쭤보고 싶습니다. import java.util.*; class Main { public int solution(int number, int[] numArray) { int answer = 0; int cnt = 0; for (int i = 0; i < number - 1; i++) { if (numArray[i] == 1) { cnt++; answer += cnt; } else { cnt = 0; } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); Integer number = kb.nextInt(); int[] numArray = new int[number]; for (int i = 0; i < number; i++) { numArray[i] = kb.nextInt(); } System.out.print(T.solution(number, numArray)); } }
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
findById의 최적화
findByAll처럼 컬렉션을 반환하는 쿼리는 fetchJoin을 사용하면 된다고 배웠습니다.그러면 findById처럼 하나의 객체를 가져올 때는 최저화가 어떻게 하는 지 궁금합니다.하나의 객체를 가져와도 lazy로딩이 되어있음으로 프록시 객체가 들어있어서findById로 가져온 객체가 다른 곳에서 사용될 시에 계속 쿼리가 날라가는데 이 부분도 최적화가 가능한지 궁금합니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
미니 RPG 이동part/ Bake후 Raycast 부분 질문드립니다.
안녕하십니까 교수님 다름이 아니라 실습하는 과정에서 terrain처럼 평지가 아닌 울퉁 불퉁한 바닥을 대상으로 실습을 해보았습니다. 그결과 특정 위치에서는 계속해서 UnityChan이 계속해서 가고자 달리거나 도착했다는 것을 인지하고 멈추었습니다. 이러한 문제점을 해결하고자 Max Slope의 수치 혹은 Agent Radius 를 바꿔보았으나 변함이 없어 질문드립니다.울퉁불퉁한 길이라서 현재 PlayerCode의 dir.magnitude 값이 정확하게 판별이 안되는거 같은데 이럴때에는 어떻게 수정해야할까요?
-
미해결[애플 공식 교재] iOS 앱 만들기 Part2
ToDoTableController에 저는 선생님처럼 뜨지 않아요
이렇게 자동으로 떠있어야 하는데전 아무것도 뜨지 않거든요? 버전 차이인건가요? 어떻게 해야 할까요ㅠㅠ
-
해결됨스프링 핵심 원리 - 기본편
getBeansOfType 자동완성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]스프링 빈 조회 - 상속관계에서 코딩 따라하는 중에,getBeansOfType 을 치고 안에 ~.class 를 입력하면 Map<String, ~> ... 와 같은 부분이 자동 입력되는 것을 보았습니다. 하지만 제가 동일하게 작업하면 아무리해도 자동입력이 되지 않아 계속 일일이 손으로 코딩하고 있습니다. 혹시 방법이 있는건지 알고싶습니다.
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
개인 홈페이지에 정리
강사님 혹시 내용이 너무 좋아서 개인적으로 공부하기위한 블로그에 내용을 정리해서 포스팅 해도 될까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
memberRepository과 itemRepository의 차이
관련질문을 봐도 이해가 안가 질문드립니다.itemRepository.getid를 하는데 어떻게 null값이 들어있을 수 있는지 궁금합니다.
-
미해결Nuxt.js 시작하기
pages경로 밑으로 한글로된 폴더나 파일이름
정상적으로 동작하지 않는 것 같은데 혹시 해결방법이 있을까요?url을 한글로 구성해보고 싶었는데 일단 한글로 폴더를 만들어서 하니까 동작하지 않고, 폴더명으로 urlencode된 문자열을 넣으니 되긴 되는데 무언가 오류메시지를 자꾸 뿜어내네요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
spring data jpa를 사용할 시 의존성 주입 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]개인 프로젝트를 만들어보면서 spring을 이해해보려고 강의를 처음부터 다시 보고있는중에 현재 강의에서 질문이 생겼습니다.구현체를 쓰지 않기 위해 이때까지 인터페이스를 기반으로 구현하고 구현체를 인터페이스에 주입하는 방식으로 사용했는데spring data jpa의 경우 구현체가 없기때문에 인터페이스를 인터페이스로 상속하는 방식이 되고 있어서 현재 강의에선 JpaRepository가 제공해주지 않는 finByName만 오버라이드해서 사용하고 있습니다.근데 만약 구조가 찾기, 삽입 등의 기본기능만 필요한 상태라면 public interface TestRepository { }public interface TestJpaRepository extends JpaRepository<Test,Integer>,TestRepository { } 이렇게 아무것도 없는 인터페이스를 상속받는 인터페이스가 되는 상황이 만들어 질거같은데 후에 무슨 로직이 추가될지 모르니 이런 방식으로 사용하는게 옳을까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
비동기 통신 했을때 로딩 관련 질문
안녕하세요 ?잘 듣고 잘 마무리 중입니다. 작업중 하나 궁금한게 생겼는데코멘트의 경우 하나의 포스트에서 입력이 되는건데 addCommentLoading 같은 상태를 redux를 이용해 전역으로 관리 하면1 이라는 포스트에 댓글을 달게 되면2 라는 포스트의 댓글 입력 버튼도 로딩으로 변하게 되는게 당연한 거라고 생각하는데요 (2 포스트 뿐만이 아니라 모든 댓글 입력버튼이 로딩이 되겠죠)이를 각 포스트 댓글 버튼만 로딩으로 변경하고 싶으면 useState를 사용해서 로딩을 각각 잡아주는게 최선일까요 ?