묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[리뉴얼] 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 뽑아낸다고 보면되나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JPA 개발 관련 질문입니다
19:00 시간에 보고 궁금한게 있습니다. JPA 실행해서 나온 sql 스크립트를 보고 수정할 부분이 있으면 수정해서 ddl 을 직접 작성하신다고 하셨는데, 수정된 ddl 에 맞게 JPA 에서도 코드를 수정해야하는걸까요?아래 방식으로 개발이 진행되는 것이 맞는지 궁금하네요 JPA 코드작성 -> DDL 스크립트 확인 및 수정 -> DDL 직접 작성하여 DB에 반영 -> 수정된 ddl에 맞게 다시 JPA 코드 수정 -> 애플리케이션 실행 (뭔가 질문이 이상한 것 같기도한데; 이해가 어려운 부분은 편하게 말씀 부탁드립니다)
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
계속 nvm use가 안되어서 해결한 방법 남깁니다
vue.jh 님이 최신에 남겨주신 글대로 따라해도 안 됐습니다. https://github.com/coreybutler/nvm-windows/issues/333 그러다가 이 글을 검색하다 보게 되고 "The idea is to remove spaces from User Name to UserName and delete last letters so that with ~1 at the end there was 8 letters." (발췌) 해결책은 즉 nvm root, node.js path경로에 공백을 없애라 라는 것이었는데요 (*중요, nvm 실행시 관리자 권한으로 실행, nvm으로 node.js 설치시에도 cmd를 관리자 권한으로 실행했습니다) nvm을 설치할 때 공백이 없는 폴더에 설치하고, node.js가 설치되는 path도 공백이 없는 폴더로 잡아주었습니다. 그랬더니 nvm install 후 nvm use 할 때 에러가 나지 않고 잘 되었습니다 (원래는 nvm install 후 nvm use 하면 exit status 1: 이상하게 깨진 문자열~ 로 에러가 떴었습니다.)
-
미해결Vue로 Nodebird SNS 만들기
미들웨어 401에러 질문있습니다
안녕하십니까 항상 강의 잘듣고 있습니다. 다름이아니라 에러가 발생하여 문제를 해결하는데 도움을 얻고자 질문을 드립니다. 현재 ch5완료한 상태에서 페이지 로드시 401에러가 발생합니다. 프론트 콘솔 네트워크 콘솔 로그인을 안했을 시 에러가나는거고 로그인후 새로고침시 에러가발생하지않습니다. 예전글들 뒤져보다가 어느분이 같은 증상으로 질문하신분이 계셔서 답변을 보니 isLoggedIn때문이라고 되어있었고 네트워크에 저런 에러가 안뜨려면 미들웨어를 제거하고 res.json(false)나 res.json(null)로 바꾸라고 되어있는데 이 바꾸는부분이 어느부분을 지칭하는지 이해가 안됩니다. 아니면 제가 다른 문제를 가지고 해결방법을 잘못하고 있을 수 도 있다고 생각이 드는데 모르겠습니다. 네트워크상에 뜨는 에러를 뜨지 않게하려면 어떻게 해야할까요? 도움을 필요로합니다.
-
미해결그림으로 배우는 쿠버네티스(v1.35)
일반적으로 쿠버네티스 환경에서 데이터베이스 구성은 어떻게 고려하나요?
안녕하세요. 쿠버네티스를 열심히 공부하고 있는 개발자 출신의 엔지니어입니다. 저희 회사에서 일종의 SaaS 서비스를 준비하고 있는데 해당 서비스관리를 위해 쿠버네티스를 고려하고 있습니다.(아마도 아마존 EKS에 적용을 하려고 합니다.) 예를 들어, 잘 만들어진 공용의 웹서비스와 DB(테이블)의 이미지가 각각 있다고 전제하고 고객에게 필요에 따라 SaaS 형태로 서비스한다고 가정한다면 데이터베이스의 경우 통상적으로 어떻게 구성을 하게 되나요? 보통 파드에 컨테이너로 올라가는 웹서비스의 경우는 디플로이먼트로 배포하면서 리플리카셋을 이용해서 Scale-out하는 것에 대해 이해가 잘 가는 편이지만 DB를 동일하게 각각의 파드에 올려서 사용하는 것은 조금 이상해 보입니다. 또한, 파드의 특성상 언제든지 죽을수도 있는 상황인데 DB가 그런식으로 관리된다면 상식적이지가 않아 보입니다. 통상적으로 쿠버네티스 환경에서 고객별로 별도의 DB가 만들어진다고 가정한다면 보통 어떻게 관리하도록 구성하는 것이 바람직한지 힌트를 좀 주시길 바랍니다. 감사합니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
4분 50초쯤 질문입니다.
L 은 현재 탐색중인 노드의 인덱스고 n 은 배열의 크기인데 답은 5 -> 12 -> 8(무시) -> 3 순으로 탐색할때 나오는데 이때는 L == n - 1 아닌가요? L == n 일때 부분집합이 완성된다는 말이 잘 이해가 가지 않습니다. 이 부분에 대해 설명해주시면 감사하겠습니다!
-
미해결실전! 스프링 데이터 JPA
캐시 관련해서 질문 드립니다!
안녕하세요! 캐시 쪽 질문 리스트를 찾다가 이전에 어떤 분이 질문해주신 부분을 보고 궁금한 점이 생겨서 질문 드립니다. https://www.inflearn.com/questions/33629 다만 여기서 동시성 문제도 말씀을 하셨는데, 주의해야할 점은 엔티티를 스프링이나 외부 캐시에 저장하면 절대! 안됩니다. 예를 들어 제가 만든 서비스에서 특정 엔티티를 조회할 때 리뷰 캐시 히트 비율이 엄청 높다고 하면 해당 엔티티를 캐싱해두고 필요할 때 가져와서 영속성 컨텍스트에 머지시킨 다음 사용할 수 있지 않을까 라고 생각했습니다. 엔티티를 스프링이나 외부 캐시에 저장했을 때 문제점이 조금 모호해서 구체적인 예를 혹시 알 수 있을까요? 감사합니다!
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
weavenet install error가 발생해요
에러 구문 : Unable to connect to the server: dial tcp: lookup cloud.weave.works on 127.0.0.53:53: server misbehaving 아래 위브넷 인스톨 하기전 tcp 포트가 열려있는지 확인해보라고 적혀있어 저 원인이 아닐까 생각해보고 있지만 포트 open 하려고 ufw 설정을 보니 비활성화가 되어있더라구요 그래서 ubuntu 에 포트 방화벽 여는 방법도 알려주세요.... Installation Before installing Weave Net, you should make sure the following ports are not blocked by your firewall: TCP 6783 and UDP 6783/6784. For more details, see the FAQ. Weave Net can be installed onto your CNI-enabled Kubernetes cluster with a single command: