묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
오류
디버그도 안되고 빌드도 안되고 창을 닫으려 해도 솔루션을 닫으려면 빌드를 중지해야 합니다라고 뜨는데 혹시 해결 방법 아시나요 먹통이에요 밑에는 이런거 계속 떠있는데 어떻게 해야할지 모르겠습니다...
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
깃 레포지토리 문의드립니다.
안녕하세요 기효님🙇🏻 강의 잘보고 있습니다. 다름이 아니라vue-advanced 강의 나오자마자 수강했었는데요! 이번에 리마인드 차원에서 복습하려 합니다,, 이 레포지토리는 제 github에 'vue-advanced' 으로 아직 남아 있는걸 발견했는데 fetch 받으니 10개월 전이 가장 최근 커밋 내역이던데 이 레포 맞겠죠..? 혹시 레포 다른걸로 변경했나요⁉️
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
TextRPG2 플레이어 생성
강의에서 설명하신대로면 Player player = new player(); 가 안되고 Player player = new Knight();가 되어야 하는데 반대로 player만 생성되고 knight는 형식 변환을 할 수 없다고 뜹니다... 강의 화면대로 똑같이 작성했는데 왜이럴까요ㅠㅠ
-
미해결초보를 위한 쿠버네티스 안내서
mac m1에서는 안되네요
https://github.com/kubernetes/minikube/issues/9224
-
해결됨스프링 핵심 원리 - 고급편
traceIdHolder.remove()와 traceIdHolder.set(null)의 차이가 있나요?
안녕하세요 강의 잘 보고 있습니다. traceIdHolder.remove()와 traceIdHolder.set(null)의 차이점이 궁금합니다. 실험해보니까 set(null)로 해도 잘 동작합니다만 아무래도 remove()라는 함수가 따로 있는 이유가 있을 것 같아서요.
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
Constructor
안녕하십니까, 강사님 좋은 강의 만들어주셔서 감사드립니다. 질의응답에서 @Autowired 필드 사용보다는 Constructor의 사용이 더 좋다고 해서 아래와 같이 구현하였는데 오류발생의 이유가 무엇인가요? private PostRepository postRepository; public UserJpaController(PostRepository postRepository) { this.postRepository = postRepository; } ->Class doesn't contain matching constructor for autowiring
-
미해결Spring Boot JWT Tutorial
로그인 api 질문
반환 값에 왜 비밀먼호와 activated 관련 정보는 안나오는지 궁금합니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
mariaDB 사용중이라 포트 3307 햇는데
생성됫다고 떳는데 포트번호도 같고 근데 실제로 들어가보면 테이블이없는뎁숑?
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
Dense 쪽에서 input channel과 output channel을 똑같이 설정하는 이유가 무엇인가요?
안녕하세요 Dense(512, 512)와 같이 굳이 채널을 같게 해서 출력을 내보내는 경우의 의미가 뭔지 알 수 있나요? 512x512로 파라미터만 커지고 차원 압축 개념이 없어서 비효율적일 것 같습니다
-
미해결프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 1
Apache 나 Nginx을 통해서 gzip으로 만드는 작업이 맞을까요?
gzip을 하는것이 성능 최적화에 도움이 된다고 하셔서 방법을 찾아봤습니다. 그 과정에서 Apache 나 Nginx을 통해서 gzip을 하는 방법이 있다고 알게됬습니다. 1. Apache 나 Nginx을 통해 gzip으로 만들어서 전달하는게 프론트엔드가 설치하고 작업하는게 맞는건가요? 제가 정확히 이해한 내용이 맞는지 잘 모르겠어서 질문드립니다 ㅠ
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
화면 클릭 이벤트 처리 - findViewById, Toast 에서 07:08 에서 문제가 생겼습니다.
괄호안에 imageview를 넣어야하는데 자동완성이 안되길래 ImageView라고 대소문자를 구분하니까 뭔가 자동완성이 나오기는 하더라구요 문제는 ImageViewCompat 이라는 비슷한 이름이 하나가 나오더라구요.. 근데 이건 아닌거같아서.. 어떻게 해야 ImageView를 불러올수있나요?
-
해결됨3dsmax 모델링 고수의 비밀! (Modeling Expert Technique)
인스턴스카피 활용 질문드립니다
안녕하세요 선생님! 12강에서 인스턴스 카피의 활용에서 박스를 탱크에 셀렉트앤 플레이스로 붙여버리면 삐딱하니까 인스턴스 카피를해준다음에 똑바르게 박스를 만들고 얼라인기능을 이용해서 다시 똑바르게 박스를 세워주시잖아요 저도 이게 박스를 어느 물체면에 붙이면 설명해주신대로 똑같이 저렇게 되는데 어떤삐딱한 물체는 인스턴스 카피하고 박스를 만들고 얼라인을 이용해도 여전히 삐딱하게 돌아가있는경우가 잇는데 왜그런지 혹시 아실까요..?ㅠㅠ 박스는 적용이 되었는데요... 얇은 분홍색 막대는 적용햇는데 여전히 삐딱합니다...ㅠ \ 파란색 물체역시 첫번째께 본체고 두번째꺼인스턴스 카피한다음에 저기 분홍박스 얼라인 햇는데여전히 삐딱해요...ㅠㅠ 제가 뭘 잘못한걸까요...?
-
미해결이미지 관리 풀스택(feat. Node.js, React, MongoDB, AWS)
cdn 관련 질문
안녕하세요 선생님. cdn을 사용할 경우 origin server에 있는 이미지가 수정되었는데 cdn 서버의 ttl로 인해 cdn 서버에는 수정하기 전에 이미지가 캐싱되있는 문제가 발생 할 수 있잖아요!이를 위한 해결방안을 찾아보니 aws cloudfront는 캐시 무효화 기능을 제공해주더라고요. 여기서 궁금한 점이.. 캐쉬 무효화를 적용하면 cdn 서버에 캐시가 되지 않고 매 요청 시 origin server로 요청하게 되어 cdn을 사용하는 이유가 사라질거라고 생각이 되는데 어떤 원리로 캐시 무효화 기능을 제공하는 것 인가요??감사합니다 !!
-
미해결Slack 클론 코딩[실시간 채팅 with React]
최초 로그인 시 새로고침을 하지 않으면 워크 스페이스가 뜨지 않습니다.
백 엔드 서버를 가동하고 로그인을 하면 이러한 창이 뜹니다. 이 상태에서 새로고침을 하면 정상적으로 워크스페이스를 제대로 가져오는데 혹시 가져오기 직전에(userData가 undefined) 화면이 렌더링 돼서 저러한 에러가 뜨는걸까요? 아무리 해결을 해보려 해도 되지 않아 이렇게 질문 남깁니다. 제 코드는 아래와 같습니다 import React, { VFC, useCallback, useState } from 'react'; import useSWR from 'swr'; import fetcher from '@utils/fetcher'; import axios from 'axios'; import { Redirect, Route } from 'react-router'; import { Header, RightMenu, ProfileImg, WorkspaceWrapper, Workspaces, Channels, Chats, WorkspaceName, MenuScroll, ProfileModal, LogOutButton, WorkspaceButton, AddButton, WorkspaceModal, } from '@layouts/Workspace/styles'; import gravatar from 'gravatar'; import { toast } from 'react-toastify'; import { IUser } from '@typings/db'; import { Link, Switch } from 'react-router-dom'; import loadable from '@loadable/component'; const Channel = loadable(() => import('@pages/Channel')); const DirectMessage = loadable(() => import('@pages/DirectMessage')); import Menu from '@components/Menu'; import { Button, Input, Label } from '@pages/SignUp/styles'; import useInput from '@hooks/useInput'; import Modal from '@components/Modal'; import CreateChannelModal from '@components/CreateChannelModal'; const Workspace: VFC = () => { 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 { data: userData, revalidate, mutate, } = useSWR<IUser | false>('http://localhost:3095/api/users', fetcher, { dedupingInterval: 2000, }); const onLogout = useCallback(() => { axios .post('http://localhost:3095/api/users/logout', null, { withCredentials: true, }) .then(() => { mutate(false, false); }); }, []); const onCloseUserProfile = useCallback((e) => { e.stopPropagation(); setShowUserMenu(false); }, []); const onClickUserProfile = useCallback(() => { 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 }, // CORS ) .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> <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: '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> <h2>Sleact</h2> <button onClick={onClickAddChannel}>채널 만들기</button> <button onClick={onLogout}>로그아웃</button> </WorkspaceModal> </Menu> </MenuScroll> </Channels> <Chats> <Switch> <Route path="/workspace/channel" component={Channel} /> <Route path="/workspace/dm" component={DirectMessage} /> </Switch> </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} /> </div> ); }; export default Workspace; 항상 질 좋은 강의 잘 듣고 있습니다.
-
미해결
localhost:8080 브라우저에 입력 시 에러
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] - 프로젝트 생성 수업중 hello.hellospring 프로젝트에서 main 메소드를 실행하고, localhost:8080을 치면 에러창은 뜨지만 스프링 아이콘이 뜬다고 하셨는데요.. 에러창은 뜨지만 스프링 아이콘으로 변하진 않았습니다. 또한 콘솔창에 보니까 에러가 발생한 것 같아요. 무시하고 그 다음 강의에서 Hello hello코드를 입력한 후 localhost:8080를 브라우저창에 치면 에러창이 뜹니다. 세팅부터 강사님과 똑같이 했는데 어떤게 문제일까요ㅠㅠ
-
미해결Google 공인! 텐서플로(TensorFlow) 개발자 자격증 취득
기간연장 관련 문의
안녕하세요! 11월 2일까지 수강 가능이라고 해서 내일 저녁까지 인 줄 알았는데 오늘 자정까지래서요 ㅠㅠ 혹시 수강기간 연장이 가능할까요...??
-
미해결현업 실무자에게 배우는 Kaggle 머신러닝 입문 - ML 엔지니어 실무 꿀팁
categorical object
안녕하세요, 혹시 XGBoost 예제 코드에서 일부 범주형 카테고리라고 생각하는게 있는데요 work_type smoking_status 같은 경우는 one-hotencoding 처리를 하는게 아닌가, 여쭤 보고 싶습니다. 혹시 원핫 인코딩이 아닌, LabelEncoder 을 하신 이유가 있으실까요?
-
미해결스프링 핵심 원리 - 기본편
프로젝트
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 좋은 강의 너무 진짜 감사드립니다 마무리를 하면서 야생형코스에서 프로젝트를 해보는것이 좋다고 말씀하셨는데 해보는 범위는 프론트부터 백엔드(디비)까지 다 포함해서 말씀하신건지와 추천해주실만한 프로젝트가 있을까요?
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
express aws 배포 후 세션 - 쿠키
선생님, 안녕하세요. 사실 이 질문이 여기에 해도 되는 질문인지 잘 모르겠지만 답변해주시면 감사하겠습니다. nest.js를 학습하기에 앞서 express 를 복습하고자 전에 개인적으로 만들었던 거를 한번 복습 후, 이번에 aws ec2에 배포까지 해보게 되었습니다. 로그인을 session으로 구현하였는데, 로컬에서는 클라이언트에 쿠키가 잘 전달 되었지만, ec2에 올리고 난 후 클라이언트에 쿠키가 전달되지 않아 도움을 청하고자 합니다. 우선 서버쪽 CORS 설정과 세션 설정은 이렇게 해주었습니다. app.use( cors({ origin: [ 'https://jh-client.ga' // 배포한 client url ], preflightContinue: true, credentials: true, }) ); app.use( session({ secret: 'jjj', proxy: true, store: new RedisStore({ client: redisClient, ttl: 3600 * 24 * 3, //3600초 = 1시간 // ttl: 10, }), saveUninitialized: true, resave: false, name: 'MySessionKey', cookie: { sameSite: 'none', secure: true, // httpOnly : true, // maxAge: 1000 * 60 * 60, // 1000밀리세컨드 : 1초 maxAge: 1000 * 60 * 60 * 5, }, }) ); 클라이언트와 server 모두 ACM을 통해 https 설정을 해주었고, 클라이언트에는 cloud front, 서버에는 elastic load balancer 도 적용해주었습니다. stack over flow나 다른 곳들을 찾아본 결과, sameSite = 'none', secure = true 설정을 해주면 대부분 된다고 하던데 (물론 클라이언트에서 axios 요청을 보낼때도 withCredentials : true 설정을 해주었습니다.) 저는 이것 외에도 추천하는 다양한 방법들을 시도해보았지만 잘 해결되지 않아 너무 답답한 마음에 질문 드렸습니다. 꼭 답변해주시면 감사하겠습니다 감사합니다~~
-
미해결현존 최강 크롤링 기술: Scrapy와 Selenium 정복
selenium 문의
안녕하세요, 강사님. selenium 사용법에서 find_element(s)_by_~~ 가 있다고 배웠습니다. 그 앞단계에서 driver.get(url) 까지는 진행이 되어 있을것이고요... 그러면 이 driver.get(url)을 한 결과는, 마치 requests.get(url)을 가지고 BeautifulSoup(requests.get(url).content, 'html.parser')를 통해 html에 대한 parsing 을 진행한 결과와 동일하다고 생각하면 되나요? 거기서도 이제 이어서 .find or .select 등을 사용해서 유사해 보여서 문의드립니다. (참고로 본 강의 전에, 강사님의 '파이썬입문과 크롤링기초 부트캠프' 부터 듣고 와서, 자연스럽게 연결이 되어서 문의드립니다.) 그리고 이어서 텍스트를 뽑아낼때... soup에서 .find or .select 한것은 .get_text() 로 뽑아내고, driver.get(url)에서 .find_element(s)_by_~~은 html이 head이면 .get_attribute('text'), body이면 .text 뽑아낸다고 보면되나요?