묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
수정강의부분에서 캐스팅이라는게 어떤건가요?
여기 book item 부분에서 반환되는게 아이템 타입이다 라고 하셨는데 이게 어떤 뜻인지 알수있나요? 그리고 캐스팅하는게 안좋다 하셧는데 캐스팅이 무얼말하나요? 마지막으로 (Book)이 어떤의미를 뜻하는지 모르겠습니다. public String updateItemForm(@PathVariable("itemId") Long itemId, Model model) { Book item = (Book) itemService.findOne(itemId);
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요. 코드 리뷰 부탁드립니다!
강의 듣기에 앞서 지난 시간 선생님께 배운 슬라이딩 윈도우로 풀어봤습니다. 어떠한지 리뷰 부탁드리겠습니다 :) function compareMaps(map1, map2){ for(let [key, val] of map1){ if(map1.get(key)!==map2.get(key)) return 0; } return 1; } function solution(s, t){ let answer = 0; let sL = s.length, tL = t.length; let tH = new Map(), sH = new Map(); for(let x of b){ if(tH.has(x)) tH.set(x, tH.get(x)+1); else tH.set(x, 1); } for(let i=0;i<tL;i++){ let x = s[i]; if(sH.has(x)) sH.set(x, sH.get(x)+1); else sH.set(x, 1); } answer += compareMaps(tH, sH); for(let i=tL;i<sL;i++){ let x = s[i], y = s[i-tL]; if(sH.has(x)) sH.set(x, sH.get(x)+1); else sH.set(x, 1); sH.set(y, sH.get(y)-1); answer += compareMaps(tH, sH); } return answer; }
-
미해결Slack 클론 코딩[실시간 채팅 with React]
혹시 db비밀번호
react nodebird 만들기에서 .env에 비밀번호1234 사용햇는데 여기서 create할때 비번입력할때 1234입력하면 게속 error 1045 (28000): access denied for user 'root'@'localhost' (using password: no) 이렇게뜨네요.. 찾아보니까 mysql 비밀번호가안맞아서 그렇다는데..하...초기화하고 싶어서 유형 2) ERROR 1045 (28000): Access denied for user 'root@'localhost' (using password: YES) - 사용자의 비밀번호가 틀렸을 경우 나타나는 오류 문구, 아래 해결 방법에 나와있는 명령어들을 입력. [해결 방법] mysql > use mysqlmysql > update user set password=password('비밀번호') where user='사용자'; // 비밀번호 변경mysql > flush privileges; // 변경사항 적용 C:\Program Files\MySQL\MySQL Server 8.0\bin입니다. 설치경로에서 mysql 접속하라길래 해당경로에서 접속하려는데 실행할수없는 명령어라고하고 기존에 노드버드연결했던 커넥트 삭제햇다가 다시연결하려고 1234입력하니까 이번엔또 같은에러뜨고.. 어찌해야할까요
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
CrossEntropyLoss 질문입니다.
좋은 강의 감사드립니다. 강의 중 궁금한 내용이 있어 질문 드려요! 강의 6분40초에서 loss 계산 부분이 궁금합니다 criterion = nn.CrossEntropyLoss() # CrossEntropyLoss는 softmax 계산까지 포함되어 있으므로 모델의 마지막 output node에 별도의 활성화 함수를 사용하지 않아도 된다. outputs = net(inputs) # 예측값 산출 loss = criterion(outputs, labels) criterion을 위와 같이 정의하고 loss를 계산을 하는데, outputs은 10개짜리 벡터가 되고, labels은 그냥 숫자 값인데 이게 CrossEntropyLoss()로 계산이 가능하다고 설명이 해주셨습니다. 같은 타입의 형식이어야 가능할것 같은데 왜 가능한건지 이해가 되질 않네요.
-
미해결C#과 유니티, 실전 게임으로 제대로 시작하기 (저자 직강)
Class Human 관련_ConstructorExample
안녕하세요. 2.6 생성자 강의를 듣던도중 이전시간에서 배웠던 class Human 에 대해 오류가 떠서 질문 드립니다. ClassExample에서 class Human을 배우고 ConstructorExample이나 ObjectExample에서 Human 클래스를 이용하고 저장 후, 유니티에서 디버그로그를 보기위해 실행시키면 빨간색 글씨로 접근할수 없다면서 오류가 뜨며 실행이 되지않습니다! 그래서 class Human 을 public class Human 으로 바꿔주니 오류는 해결 되고 게임실행은 되는데, 이제는 디버그로그가 뜨질않습니다... (오류는 캡쳐를 못했네여...) 이후에 다시 처음부터 똑같이 따라해서 class Human 그대로 하고, ConstructorExample 작성후에 Debug.Log 해보았는데 아무것도 뜨질않습니다!!! 선생님 강의 그대로 따라했는데 왜 저는 안될까요! 궁금합니다. 항상 재밌게 듣고있습니다. 감사합니다. P.S 전에 있던 Human 관련 질문도 읽어봤지만 해당 내용이 아니여서 질문드립니다...
-
미해결하루만에 만드는 깃허브 블로그
2강에서 다운받은 폴더들도 강사님과 똑같이 했었는데.. 2강 마지막 부분 주소 링크가 안떠요???ㅜㅜㅜ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결하루만에 만드는 깃허브 블로그
안녕하세요 5시간째 2강을 못 나가고 있어요
아래 캡쳐 한 것처럼 url 주소가 나오지 않습니다.. 아.. 몇 시간째 하는지 모르겠습니다 ㅜㅜㅜ 자세한 설명 부탁드립니다.
-
해결됨객체 지향 프로그래밍 입문
캡슐화 연습4 질문 있습니다.
개선 후 예제에서 mem.verifyEmail() 시도 후 수정사항을 DB에 반영하고 있습니다. 궁금한 점은 DB 반영 완료 후 verifyEmail() 내부의 this.verificationEmailStatus = 2를 하는 게 맞지 않는가 궁금합니다.이유는 DB 반영 전에 this.verificationEmailStatus = 2를 진행 후 DB 반영을 한다면, 만약 DB 반영 실패 시 다시 verificationEmailStatus를 2가 아닌 값으로 바꿔주는 작업이 필요로 해 보입니다. 만약 DB 반영 실패를 검출하지 못한 경우 this.verificationEmailStatus를 이전 값으로 바꿔주지 못하고 DB 혹은 서버가 죽은 경우, 다음 verifyEmail을 시도 시 this.verificationEmailStatus는 2가 된 상태인데 DB에는 반영이 되지 않은 상태가 존재할 수 있다고 생각이 듭니다.혹시 이 경우 좋은 해답이 존재하는 지 궁금합니다.이상입니다.감사합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
다대다 관계가 안좋은 이유
음... 안녕하세요! 선생님! '다대 다관계에서 왜 안좋아요?' 라는 질문을 받으면 뭔가 그 탁! '아 진짜 그렇겠네요!?' 라는 대답을 할수가없습니다. 이 러한 질문을 듣고 선생님이 생각이났는데요. 혹시 선생님께서는 저런 질문을 받으면 후배한테 어떤 답변을 내려주실건가요? 감사합니다.!
-
미해결제대로 파는 Git & GitHub - by 얄코(Yalco)
[맥북사용자] 예제를 다운받은 시점의 uncommitted changes가 자동 생성되는 것 같습니다.
main 3rd commit 시점으로 main 브랜치를 reset 한 후 영상 [01:00]처럼 branch간 switch가 가능했습니다. uncommitted changes가 발생하는 이유가 궁금해 질문 남기게 되었습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 종료하는 방법
빌드 종료하는 법강의에서 skExecutor' 를 입력하는 것을 보고 따라하려 했으나 제 터미널에는 입력이 안되서 여쭤봅니다! 혹시 다른 방법이 있을까요?
-
미해결마인크래프트 게임을 활용한 파이썬 프로그래밍 완벽 이해
ModuleNotFoundError: No module named 'mcpi
인스톨이 완료되었는데 모듈 런하면 에러 발생합니다 ㅠ_ㅠ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
만약 백엔드 개발자가 서버 사이드 렌더링을 할줄 알면
만약 백엔드 개발자가 서버 사이드 렌더링을 할줄 알면 프론트엔드 개발자가 필요 없어지나요? 만약 백엔드 개발자가 SSR까지 하면 프론트엔드 개발자가 해야할 일은 무엇인가요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
강의 소스 코드 제공 부탁드립니다.
강의 소스 코드 제공 부탁드립니다. 수강 진행하다 에러가 나는 부분이 있는데 못찾겠네요.
-
미해결만들면서 배우는 리액트 : 기초
추가 기능
완강 후에 혼자 추가 기능을 구현해보고 있는데 질문 드려도 될까요?! 하트를 클릭하고 재클릭했을 때, favorites에서 해당 이미지를 제외시키는 기능을 구현하려고 합니다.(하트 누를 때마다 추가되었다가 삭제되었다가 ..) 그래서 저는 handleHeartClick()에 if(alreadyFavorite)의 경우를 추가해서 favorites 목록에서 해당 이미지를 제외하고, 로컬스토리지에서도 데이터를 삭제하려고 했습니다. 그런데 실행시켜보니 favorites 목록에서는 지워졌는데 로컬스토리지 데이터는 삭제가 안됩니다ㅠ 어떻게 구현해야 할지 모르겠어서 질문 드립니다..!! 밑에는 제가 짠 코드입니다. function handleHeartClick() { if (alreadyFavorite) { const nextFavorites = favorites.filter(favorite => favorite != mainCat); setFavorites(nextFavorites); jsonLocalStorage.removeItem(mainCat); return; } const nextFavorites = [...favorites, mainCat]; setFavorites(nextFavorites); jsonLocalStorage.setItem('favorites', nextFavorites) };
-
미해결Do it! 자바 프로그래밍 입문 with 은종쌤
증감연사자
int num = 10; int val = num++; System.out.println(val); 의 경우 실행시켜 보니까 출력이 10이 나오더라구요. 그 이유가 대입연산자가 증감연산자보다 우선순위가 높아서 대입만 이루어지기 때문에 이러한 결과가 나오는 건가요?
-
미해결Slack 클론 코딩[실시간 채팅 with React]
Cannot read properties of undefined (reading 'map') 관련 질문드립니다.
안녕하세요. Cannot read properties of undefined (reading 'map') 하여 질문을 드리고자합니다. 문제는 해결 했으나 타입스크립트가 미숙하여 이런 현상이 발생한거 같은데 왜 이런 문제가 발생했는지 잘 몰라서 질문 드립니다. 오류가 발생 된 flow는 login 시 /workspace/sleact/channel/일반 으로 접을 했을 경우 그림과 같은 에러가 발생하였습니다. map 관련해서 초기 값이 안들어오는 부분의 에러인것을 확인하고 userData 옵셔널 체이닝을 에 해당 하는 값에 앞부분만 주었는데 에러가 발생한거 같습니다. 자세한 코드는 이렇습니다. <Workspaces> {/* 해당 워크 스페이스 이동 */} {userData?.Workspaces.map((ws) => { return ( <Link key={ws.id} to={`/workspace/${123}/channel/일반`}> <WorkspaceButton>{ws.name.slice(0, 1).toUpperCase()} </WorkspaceButton> </Link> ); })} <AddButton onClick={onClickCreateWorkspace}> +</AddButton> </Workspaces> 여기서 Workspaces에도 옵셔널 체이닝을 걸어줘야 에러가 풀렸는데요. userData?Workspaces?.map... 제로초님의 코딩을 전부 클론하여 작성하였는데 왜 이런 문제가 발생했는지 이해를 못하고 있습니다. 혹여 typescript에서는 전부 옵셔널 체이닝을 적용해줘야하나요 ... ?? 세부적인 코드는 아래 첨부드립니다. 아 그리고 userData는 정상적으로 다 받아옵니다. import fetcher from '@utils/fetcher'; import axios from 'axios'; import { type } from 'os'; import React, { useCallback, ReactNode, useState } from 'react'; import { Redirect, Route, Switch, useParams } from 'react-router'; import useSWR from 'swr'; import { Header, RightMenu, ProfileImg, WorkspaceWrapper, Workspaces, Channels, Chats, WorkspaceName, MenuScroll, ProfileModal, LogOutButton, WorkspaceButton, AddButton, WorkspaceModal, } from '@layouts/Workspace/styles'; import gravatar from 'gravatar'; import Channel from '@pages/Channel'; import DirectMessage from '@pages/DirectMessage'; 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'; type Props = { children?: ReactNode; }; function Workspace({ children }: Props) { const [showUserMenu, setShowUserMenu] = useState(false); const [showCreateWorkspaceModal, setShowCreateWorkspaceModal] = useState(false); const [showWorkSpaceModal, setShowWorkSpaceModal] = useState(false); const [showCreateChannelModal, setShowCreateChannelModal] = useState(false); const [newWorkSpace, onChangeNewSpace, setNewWorkSpace] = useInput(''); const [newUrl, onChangeNewUrl, setNewUrl] = useInput(''); const { workspace } = useParams<{ workspace: string }>(); const { data: userData, error, revalidate, 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(() => { // revalidate(); mutate(false, false); }); }, []); const onClickUserProfile = useCallback((e) => { e.stopPropagation(); setShowUserMenu((prev) => !prev); }, []); const onClickCreateWorkspace = useCallback(() => { setShowCreateWorkspaceModal(true); }, []); const onCreateWorkspace = useCallback( (e) => { 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(() => { revalidate(); 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 toggleWorkSpaceModal = useCallback(() => { setShowWorkSpaceModal((prev) => !prev); }, []); const onClickAddChannel = useCallback(() => { setShowCreateChannelModal(true); }, []); if (!userData) { return <Redirect to="/login" />; } return ( <div> <Header> <RightMenu> {/* 우측 상단 프로필 active */} <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={onClickUserProfile}> <ProfileModal> <img src={gravatar.url(userData.email, { s: '36px', 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) => { 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> <button onClick={onClickAddChannel}>채널만들기</button> <button onClick={onLogout}>로그아웃</button> </WorkspaceModal> </Menu> {channelData?.map((v) => ( <div>{v.name}</div> ))} </MenuScroll> </Channels> <Chats> <Switch> <Route path="/workspace/:workspace/channel/:channel" component={Channel} /> <Route path="/workspace/:workspace/dm/:id" component={DirectMessage} /> </Switch> </Chats> </WorkspaceWrapper> {/* 워크 스페이스 생성 모달 onClickCreateWorkspace */} <Modal show={showCreateWorkspaceModal} onCloseModal={onCloseModal}> <form onSubmit={onCreateWorkspace}> <Label id="workspace-label"> <span>워크스페이스 이름</span> <Input id="workspace" value={newWorkSpace} onChange={onChangeNewSpace}></Input> </Label> <Label id="workspace-label"> <span>워크스페이스 url</span> <Input id="workspace" value={newUrl} onChange={onChangeNewUrl}></Input> </Label> <Button type="submit">생성하기</Button> </form> </Modal> {/* 채널 만들기 모달 onClickAddChannel*/} <CreateChannelModal show={showCreateChannelModal} onCloseModal={onCloseModal} setShowCreateChannelModal={setShowCreateChannelModal} /> </div> ); } export default Workspace;
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
TypeConversion 내부 질문드립니다
항상 좋은 강의 감사드립니다. 1. if (Conversion<const FromType*, const ToType*>::exist) 이 부분에서왜 포인터를 사용했는지 궁금합니다. 2. TypeConversion은 결국 많은 템플릿을 생성하게 되는데 그럴 경우 메모리에 문제가 없는지 궁금합니다. 3.Conversion 의 경우 컴파일러가 비슷하다고 판단 할경우 From을 To로 변환을 하고 결국 그걸 이용해 변경 여부를 판단하게 되는데 컴파일러 입장에서 비슷할 경우 변환을 시키지 않는 것이 이득일텐데 굳이 변환을 하는 원리가 궁금합니다. 4. 마지막으로 struct로 만드실 때와 class로 만들 실 때의 기준이 있으신가요? template 흑마법 정말 잘 배웠습니다 핵? 편법같은 느낌이 있어 관심이 많이 가게 되었습니다. 추후 강의 기대하겠습니다!
-
미해결Do it! 자바 프로그래밍 입문 with 은종쌤
형 변환에서의 데이터 손실에 대한 질문
double dNum = 3.14; int num = (int)dNum; 에서 num은 메모리에서 4byte의 공간을 가지게 되는데 위의 경우 형 변환으로 인해 .14가 날라갑니다. 그런데 그것이 메모리 상에서 아예 사라지는 것인지 아니면 메모리에는 값이 남아 있는데 4bytes씩 읽어서 .14를 못 읽어서 그런 것인지 궁금합니다. 만약 후자라면 메모리를 직접 접근해서 메모리 값으로 읽으면 값이 온전하게 3.14라고 읽을 수 있나요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
문제 풀이 마구간정하기
function solution(target,array){ array.sort((a,b)=>a-b); let left = 1; let right = array[array.length-1]; let answer while(left<=right){ let mid = Math.floor((left+right)/2); let cnt = 1; let start = array[0]; let result =[] for(let i=1; i<array.length; i++ ){ let between =array[i]- start; if(mid<=between){ cnt++; result.push(between) start = array[i]; } } if(target === cnt){ answer = Math.min(...result); break }else if(target<cnt){ left = mid +1; }else{ right = mid -1; } } return answer; } 이런식으로 풀어도 괜찮을까요?