묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
강의를 보며 작업한 코드를 개인 깃허브에 올려도 되나요?
강의를 보며 작업한 코드(실습코드, 일기장 등)를 깃허브 공개 레포에 올려도 되나요?
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
배열 생성의 세번째 네번째 방법 질문드립니다.
세번째 방법 String[] coffees = new String[] {"아메리카노", "카페모카", "라떼","카푸치노"}; 네번째 방법String[] coffees = {"아메리카노", "카페모카", "라떼","카푸치노"}; 강의에서 세번재 네번째 배열 선언의 방법이 같다고 하셨는데 new 를 이용하여 배열을 생성한다면 coffees라는 배열의 주소를 생성한다는 개념으로 알고있는데요.네번째 방법의 경우 new 를 사용하지 않아도 동일하게 객체의 주소가 생성되는것인지요. new의 정확한 이해도가 부족하여 생긴문제같은데 설명해주시면 감사하겠습니다.
-
해결됨실전! Querydsl
dto로 만들어 바로 조회
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 프로젝션을 보고 있던와중에 궁금증이 생겨서 질문남깁니다. dto로 반환해주고 싶은데 dto가 private final 일 경우 기본 생성자를 만들지 못하는데 이럴땐 final을 풀고 기본생성자를 사용해주는 방법으로 가는게 맞을까요 ? 다른방법이 있으면 추천 부탁드립니다
-
미해결바닥부터 시작하는 STM32 드론 개발의 모든 것
혹시 st link 및 mcu의 프로그래밍 회로쪽이 고장났는지 확인 가능할지 문의 드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요st link v2가 인식되지 않아서, 옆에 있는 분꺼 빌려서 연결해보았지만, 프로그램을 업로드 할 수 가 없습니다. 제 부주의로 망가트린것 같은데, 혹시 택배로 보내드리면 검사 해 주실수 있는지 문의 드립니다. (FCC리셋과 Uart통신은 되지만, 제가 본드를 뭍혀서 쇼트 된것으로 의심됩니다)
-
미해결15일간의 빅데이터 파일럿 프로젝트
실습하면서 문득 궁금해진점
안녕하세요.강의를 들으며 jar 프로그램(자바 기반 프로그램)들이 플럼에 의존되는것을 확인할 수 있었는데,이것을 파이썬 코드로 바꿔서 conf를 변경해도 동작이 되는걸까요?
-
해결됨Verilog FPGA Program 1 (Arty A7-35T)
UART, SPI구현
안녕하세요 강의 잘 보고 있습니다!다름이 아니라 저는 zybo 보드를 사용하고 있기 때문에 PS영역에서 PC와 시리얼 통신을 하고 AXI 통신으로 PL영역에서 data를 보내는 방식으로 사용하고 있습니다.제가 궁금한 것은 uart나 SPI 모듈을 따로 구현을 하면 해당 data를 바로 PL영역으로 보낼 수 있는지 궁금합니다!
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
JdbcTemplate 생성자 만드는데 에러나요. JdbcTemplate 타입의 bean을 찾을 수 없다고 하는데 어떻게 해결해야 하나요?
JdbcTemplate 생성자 만드는데 에러나요. JdbcTemplate 타입의 bean을 찾을 수 없다고 하는데 어떻게 해결해야 하나요?강의를 더 보니까 19강에서 설명해주고 계신 build.gradle 때문인거 같은데요.저는 해당 파일이 비활성화 되어 있는 것 같아요.위 캡쳐처럼 코드가 알록달록(주황, 보라, 노랑..) 하지 않고, 모두 회색으로 보이는데 그래서 일까요?
-
미해결워드프레스(WordPress) 완전정복
프로젝트4-마이그레이션 플러그인이 없어요..
안녕하세요 선생님! 열심히 수강하고 있는데 질문이 있어서요.프로젝트4에서 라이브이전 및 런칭하는 과정에서 보여주신 플러그인(아래 사진첨부드립니다)이 없어서요.작성자분이 내린건지 알수는 없지만, 해당플러그인이 없어서 phpMyAdmin에 대한 진도를 못나가고 있었어요... 프로젝트3에서 보여주신 All-IN-ONE플러그인 방법으로 홈페이지를 운영 및 외주작업을 해도 문제는 없을까요...?
-
미해결
tailwindcss 3.2v
안녕하세요.최근 tailwindcss 3.2 버전이 나와서 어떤 부분이 업데이트 된건지 살펴보는중인데요.이해가 잘 안되는 부분이 있어서 글 남깁니다.아래 사진은 공식 문서에 나와있는 글인데요.별도로 프로젝트 폴더에 config 파일을 만들지 않아도@config "./tailwind.admin.config.js"; 라고 선언하면 손쉽게 사용 가능하다는 의미일까요..?
-
미해결바닥부터 시작하는 STM32 드론 개발의 모든 것
cubeIDE에서 stlink를 인식하지 못합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.갑자기 ST link 인식이 안됩니다. 어떻게 해결해야 할까요 ? locahost 61234 connection time out 에러 메세지가 나옵니다.
-
미해결스프링 핵심 원리 - 기본편
스프링의 도움없이 싱글톤을 구현하면서 di해주는법
"스프링의 도움없이 싱글톤을 구현할 경우엔개방폐쇄원칙과 의존관계역전원칙을 위배하게 됩니다" << 이 말에 대해 궁금한점이 있습니다왜 스프링의 도움없인 싱글톤을 구현하면서 di를 해줄수없는건가요?위 사진과 같은 코드를 자바코드로 작성해주면 되는거아닌가요??..
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
one to many 지연로딩
@Entity @Table(name = "orders") @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Order { @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>();일대다 관계에서는 기본 설정이 지연 로딩이 맞나요 ??orderItems.stream().forEach(o -> o.getItem().getName()); //Lazy 강제초기화@OneToMany 어노테이션에서 fetch = Fetch.Lazy가 없어서 기본설정으로 들어가는지 궁금합니다 !
-
해결됨Slack 클론 코딩[실시간 채팅 with React]
router.js:954 No routes matched location 에러가 발생합니다.
안녕하세요 제로초님, 현재 react-router-dom v6.6.2로 강의를 수강하고 있습니다. 앞부분에서 잘 따라하다가 어느 부분에서 잘못된 것인지 로그인을 했을 때 흰 화면과 함께 아래 첨부한 사진과 같은 에러가 발생하했습니다.API를 받아올 때 사용하는 params에 문제가 있나 싶었지만, http://localhost:3095/api/workspaces/sleact/channels 이 주소로 들어갔을 때 아래와 같은 데이터를 받아오는 것을 확인할 수 있었습니다.[ { "id": 1, "name": "일반", "private": false, "createdAt": "2023-01-26T08:07:33.000Z", "updatedAt": "2023-01-26T08:07:33.000Z", "WorkspaceId": 1, "Members": [ { "id": 2, "ChannelMembers": { "UserId": 2 } } ] } ] 데이터가 문제인가 싶어서 테이블도 삭제했다가 다시 만들어봤지만 해결할 수 없었습니다ㅠㅠ 어떻게 해결할 수 있을까요?? 혹시 몰라 코드는 모두 첨부하겠습니다! // App/index.tsx import React from 'react'; import loadable from '@loadable/component'; import { Routes, Route, Navigate } from 'react-router-dom'; const Login = loadable(() => import('@pages/Login')); const SignUp = loadable(() => import('@pages/SignUp')); const Workspace = loadable(() => import('@layouts/Workspace')); const App = () => { return ( <Routes> <Route path="/" element={<Navigate to="/login" />} /> <Route path="/login" element={<Login />} /> <Route path="/signup" element={<SignUp />} /> <Route path="/workspace/:workspace" element={<Workspace />} /> </Routes> ); }; export default App;// Workspace/index.tsx import React, { useCallback, useEffect, useState } from 'react'; import useSWR from 'swr'; import axios from 'axios'; import fetcher from '@utils/fetcher'; import gravatar from 'gravatar'; import { Navigate, Route, Routes } from 'react-router'; import { AddButton, Channels, Chats, Header, LogOutButton, MenuScroll, ProfileImg, ProfileModal, RightMenu, WorkspaceButton, WorkspaceModal, WorkspaceName, Workspaces, WorkspaceWrapper, } from './styles'; import loadable from '@loadable/component'; import Menu from '@components/Menu'; import { Link } from 'react-router-dom'; import { IChannel, IUser } from '@typings/db'; import Modal from '@components/Modal'; import { Button, Input, Label } from '@pages/SignUp/styles'; import useInput from '@hooks/useInput'; import { toast } from 'react-toastify'; import CreateChannelModal from '@components/CreateChannelModal'; import { useParams } from 'react-router'; const Channel = loadable(() => import('@pages/Channel')); const DirectMessage = loadable(() => import('@pages/DirectMessage')); const Workspace = () => { const [showUserMenu, setShowUserMenu] = useState(false); const [showCreateWorkspaceModal, setShowCreateWorkspaceModal] = useState(false); const [showWorkspaceModal, setShowWorkspaceModal] = useState(false); const [showCreateChannelModal, setShowCreateChannelModal] = useState(false); const [newWorkspace, onChangeNewWorkspace, setNewWorkspace] = useInput(''); const [newUrl, onChangeNewUrl, setNewUrl] = useInput(''); const params = useParams<{ workspace?: string }>(); const { workspace } = params; const { data: userData, error, mutate } = useSWR<IUser | false>('http://localhost:3095/api/users', fetcher); const { data: channelData } = useSWR<IChannel[]>( userData ? `http://localhost:3095/api/workspaces/${workspace}/channels` : null, fetcher, ); const onLogout = useCallback(() => { axios .post('http://localhost:3095/api/users/logout', null, { withCredentials: true, }) .then(() => { mutate(false, false); }); }, []); const onClickUserProfile = useCallback(() => { setShowUserMenu((prev) => !prev); }, []); const onCloseUserProfile = useCallback((e: React.MouseEvent) => { e.stopPropagation(); setShowUserMenu(false); }, []); const onClickCreateWorkspace = useCallback(() => { setShowCreateWorkspaceModal((prev) => !prev); }, []); const onCreateWorkspace = useCallback( (e: React.FormEvent) => { e.preventDefault(); // 필수 값이 들어있는지 검사 if (!newWorkspace || !newWorkspace.trim()) return; if (!newUrl || !newUrl.trim()) return; axios .post( 'http://localhost:3095/api/workspaces', { workspace: newWorkspace, url: newUrl, }, { withCredentials: true }, ) .then(() => { mutate(); setShowCreateWorkspaceModal(false); setNewWorkspace(''); setNewUrl(''); }) .catch((error) => { console.dir(error); toast.error(error.response?.data, { position: 'bottom-center' }); }); }, [newWorkspace, newUrl], ); const onCloseModal = useCallback(() => { setShowCreateWorkspaceModal(false); setShowCreateChannelModal(false); }, []); const onClickAddChannel = useCallback(() => { setShowCreateChannelModal(true); }, []); const toggleWorkspaceModal = useCallback(() => { setShowWorkspaceModal((prev) => !prev); }, []); if (!userData) { return <Navigate to="/login" />; } return ( <div> <Header> <RightMenu> <span onClick={onClickUserProfile}> <ProfileImg src={gravatar.url(userData.email, { s: '28px', d: 'retro' })} alt={userData.email} /> <Menu style={{ right: 0, top: 38 }} show={showUserMenu} onCloseModal={onCloseUserProfile}> <ProfileModal> <img src={gravatar.url(userData.email, { s: '36px', d: 'retro' })} alt={userData.email} /> <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) => { return ( <Link key={ws.id} to={`${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 style={{ top: 95, left: 80 }} show={showWorkspaceModal} onCloseModal={toggleWorkspaceModal}> <WorkspaceModal> <h2>Sleact</h2> <button onClick={onClickAddChannel}>채널 만들기</button> <button onClick={onLogout}>로그아웃</button> </WorkspaceModal> </Menu> {channelData?.map((v) => ( <div>{v.name}</div> ))} </MenuScroll> </Channels> <Chats> <Routes> <Route path="/:workspace/channel/:channel" element={<Channel />} /> <Route path="/:workspace/dm/:id" element={<DirectMessage />} /> </Routes> </Chats> </WorkspaceWrapper> <Modal show={showCreateWorkspaceModal} onCloseModal={onCloseModal}> <form onSubmit={onCreateWorkspace}> <Label id="workspace-name"> <span>워크스페이스 이름</span> <Input id="workspace" value={newWorkspace} onChange={onChangeNewWorkspace} /> </Label> <Label id="workspace-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; // CreateChannel/index.tsx import 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 } from 'react'; import { useParams } from 'react-router'; import { toast } from 'react-toastify'; import useSWR from 'swr'; interface Props { show: boolean; onCloseModal: () => void; setShowCreateChannelModal: (flag: boolean) => void; } const CreateChannelModal: React.FC<Props> = ({ show, onCloseModal, setShowCreateChannelModal }) => { const [newChannel, onChangeNewChannel, setNewChannel] = useInput(''); const params = useParams<{ workspace?: string }>(); const { workspace } = params; const { data: userData, error, mutate } = useSWR<IUser | false>('http://localhost:3095/api/users', fetcher); const { mutate: mutateChannel } = useSWR<IChannel[]>( userData ? `http://localhost:3095/api/workspaces/${workspace}/channels` : null, fetcher, ); const onCreateChannel = useCallback( (e: React.FormEvent) => { e.preventDefault(); axios .post( `http://localhost:3095/api/workspaces/${workspace}/channels`, { name: newChannel, }, { withCredentials: true }, ) .then(() => { setShowCreateChannelModal(false); mutateChannel(); setNewChannel(''); }) .catch((error) => { console.dir(error); toast.error(error.response?.data, { position: 'bottom-center' }); }); }, [newChannel, workspace], ); return ( <Modal show={show} onCloseModal={onCloseModal}> <form onSubmit={onCreateChannel}> <Label id="channel-label"> <span>채널 이름</span> <Input id="workspace" value={newChannel} onChange={onChangeNewChannel} /> </Label> <Button type="submit">생성하기</Button> </form> </Modal> ); }; export default CreateChannelModal;
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
파라미터에 _ 처리
안녕하세요 강사님! 수업 잘 듣고 있습니다!로그인된 사람만 커뮤니티 생성 페이지 들어갈 수 있게 해 주기 강의에서 09:06 부분에Request 객체를 사용하지 않아 _처리 해주시는데 그렇다면 파라미터를 처음부터 받지 않으면 되는거 아닌가요?강의에서는 (_: Request, res: Response) 이렇게 처리해주셨는데 그냥 (res: Response) 이렇게 작성해도 기능에는 문제가 없을 것 같아 _처리를 해주시는 이유가 궁금합니다.늦었지만 새해 복 많이 받으시고 답변 미리 감사합니다~
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
<select>에 value속성을 만들지 않은 이유
addForm.html의 일부 코드입니다. <select th:field="*{deliveryCode}"> -> 렌더링한 결과: <select id="deliveryCode" name="deliveryCode">렌더링한 결과에 value 속성이 없는데, 타임리프가 <select>에는 value 속성이 필요없다고 판단하여 만들어주지 않은 것인가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
<option> value=""인 경우
item.html의 일부 코드입니다. <select th:field="${item.deliveryCode}"> <option value="">==배송 방식 선택==</option> <option th:each="deliveryCode : ${deliveryCodes}" th:value="${deliveryCode.code}"></option> </select>select에서 아무 것도 선택하지 않아서 '==배송 방식 선택=='이 선택된 경우, 'deliveryCode='로 서버에 전달됩니다. 그리고 Item 객체의 deliveryCode필드에 ""로 저장됩니다.이때, 소스코드 보기를 하면,'<option value="">==배송 방식 선택==</option>'으로 나옵니다. selected="selected" 속성이 없는 것입니다.th:field, th:value의 값이 같을 때, selected="selected"라는 속성을 추가해줍니다.두 값이 ""로 같은데도 selected 속성이 추가되지 않은 이유가 무엇일까요?th:value가 아닌 그냥 value이기 때문인가 싶어서 value="" -> th:value="${''}"로 작성해보았는데,여전히 소스코드 보기를 하면'<option value="">==배송 방식 선택==</option>'으로, selected 속성 없이 출력됩니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
_app.tsx 에러
_app.tsx 로 바꾸고나서 <Component/>에서 에러가 나는데 어떻게 해야하나요...?
-
미해결스프링 핵심 원리 - 고급편
newProxyInstance의 인자중 ClassLoader 질문
newProxyInstance(ClassLoader, Class<?>[] interfaces, InvocationHandler)newProxyInstance의 인자는 위와 같습니다.본 강의에서는 interfaces 배열에 하나의 interfaces만 들어있습니다. 그리고, interfaces배열에 딱 하나 들어있는 그 인터페이스 클래스에서 getClassLoader()로 클래스로더를 받아와서 이를 newProxyInstance를 호출할때 첫번째 인자로 사용하고 있습니다.Q1. 그렇다면 만약, interfaces에 하나가 아닌 여러개가 있다고 하면 클래스로더는 어디서 받아오나요? 임의의 인터페이스에서 골라서 받아오나요?Q2. 사실 클래스로더는 아무 클래스에서 받아와도 상관없는것이고. 관습적으로 interfaces 배열에 들어있는 임의의 인터페이스에서 받아오는것이다. 이런건가요?질문 읽어주셔서 감사합니다.
-
미해결웹플로우(Webflow) 시작하기 - 코딩 없이 자유도 높은 프로토타입 만들기
Upvote 구현하기 동영상 문제
Upvote 기능 구현 강의를 들으려고 하는데요 "동영상 준비중에 있습니다." 라고만 나오네요?강의가 아직 업로도 안된건가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
공부 방법에 대해서 질문이 있습니다
안녕하십니까 게임 프로그래머 취업 가이드 영상을 보고 클라이언트쪽만 공부하다가 서버 공부를 시작하려고 하는 대학교 2학년생입니다.유니티와 언리얼강의 전체를 한번씩 보면서 어떤 느낌인지 파악하고 이해 안되는 강의를 계속 돌려보는 식으로 공부하려고 했습니다. 근데 제가 유니티 c#, 알고리즘, 엔진을 들을때는 괜찮았는데 게임서버 강의를 이제 1번 완강했는데 거의 부분적인 이해만 한것같고 전체의5%정도밖에 이해를 못했습니다.. 이게 다음파트로 넘어가는게 맞을까요? 아니면 이해갈때까지 서버강의를 계속 들어야할까요?조금이라도 이해가 더 될까봐 한빛아카데미 데이터 통신과 컴퓨터 네트워크 박기현 지음 이 이론책을 같이 보면서 공부중인데 이 두꺼운 이론책을 봐도 이 강의와의 접점을 못찾겠고 봐도 이해가 잘 안가는데 보는게 맞을까요? 아니면 시간낭비일까요..?강의 듣는 순서도 고민이 됩니다 유니티 강의보다 c++ 강의와 c++ 서버 강의를 듣고 유니티 강의로 넘어오는게 나을까요 아니면 지금 하는대로 유니티먼저듣고 c++강의로 넘어가는게 맞을까요?중구난방하게 글을 적은 느낌이라 죄송합니다 ㅠㅠ