묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
패킷의 내용이 짤려서 올 경우
안녕하세요 루키스님! 몇 가지 여쭤볼게 있습니다.패킷의 구성은 패킷헤더 + 패킷내용으로 잘 이해했습니다.그러나 경우에 따라 패킷이 짤려서 올 수도 있으므로경우를 크게 2가지로 나눠봤습니다.패킷 헤더의 일부분만 도착한 경우이 경우는 PacketSession 클래스 덕분에도착한 패킷이 패킷헤더 사이즈인 2보다 작으면 다음 패킷 까지 기다리는 것을 이해했습니다.그러나 아래의 경우는 어떻게 될지 의문입니다.패킷 헤더와 패킷의 내용이 함께 도착했지만패킷의 내용은 절반만 도착함.이 경우 도착한 패킷이 패킷헤더 사이즈인 2보다 크므로 OnRecvPacket함수를 호출을 하겠지만사실상 패킷의 내용물이 절반밖에 되지 않으므로정상적으로 패킷을 못 받을 것 같은데 맞을까요?따라서 사실상 OnRecvPacket 함수 내부에서 해커로부터 보안의 목적 외에도 받은 패킷이 정말 끝까지 잘 받았는지 검사를 하기 위해 받은 패킷의 사이즈를 다시 한 번 더 클라와 교차검증을 해야할 필요가 있는건가요?
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
바로 app.ts를 실행시키지 않고 왜 dist의 app.js를 실행시키나요
수강생분들의 질문을 기다립니다! - 에러에 해당하는 질문은 "에러가 발생한 상황에 대한 충분한 설명", "에러 메세지", "에러가 난 코드 스크린샷"을 함께 첨부해주세요. - 언어에 해당하는 질문은 구글링 및 서치 후에 구체적으로 질문해주시면 좋습니다. - 간단한 진로 및 방향성에 대한 질문은 메일로 보내주세요.- 패키지 버전 관리은 실무 환경과 트랜드에 맞추어 강의를 업데이트 하고 있습니다. 강의를 그대로 따라갔는데 에러가 발생한다면 패키지 버전을 강의에서 사용하는 버전과 동일하게 맞춰주세요!- 강의 노트, QA 목록, 공지 사항을 먼저 확인해주세요.- 논리적이고 구체적인 질문은 학습 효과를 올립니다 :) build후 app.js를 실행시키는 것과 app.ts를 실행하는 것의 차이가 있을까요??ts-node 같은 것을 활용하면 바로 실행이되는데 왜 js로 빌드하는 것인지?? 궁금해요!!호환성 때문일까요??
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
질문있습니다.
강의 예시처럼 새로고침해도 PRG를 이용해중복된 주문을 하지않도록 하는건 이해했습니다. 근데 이번에 간단한 프로젝트를 진행하면서 중복 요청이 되는경우가 있었는데 예를들어 게시글을 작성하여 게시글 등록하기 버튼을 빠르게 2번 클릭할 경우게시글 등록 요청이 2번이 발생하여 2개의 게시글이 등록되는 현상이 발생하는데 이러한 경우는 어떤방법을 이용하여 중복 요청을 막을 수 있나요?
-
미해결리눅스 입문 - 개념으로 탄탄히!!
배포판 종류
Centos를 사용해도 앞으로 나갈 진도에 지장이 없나요 ?따라하는데
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
자바11
[질문 내용]제가 학원 수업에서 사용하는 버전과 이 수업에서 사용하는 버전이 다른데 이럴때는 어떻게 해야하나요???
-
해결됨[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
android studion 종료했다가 키면 항상 이전 파일이 떠요.
New Project 만들기가 뜨도록 설정하려면 어떻게 해야하나요?맥북입니다. +그리고 선생님처럼 코드 한 줄 수정할 때 마우스로 드래그 하지 않고 지우려면 어떻게 해야 하나요?저는 단어 단위로만 지워져서 ... ctrl+a는 전체가 지워지고.. 코드 한 줄만 지워질 수는 없나요?
-
해결됨Slack 클론 코딩[실시간 채팅 with React]
로그인시 데이터를 못 가져옵니다. 500에러
네트워크에서 확인시 500에러가 뜹니다. 요청하는 url이 프론트 주소라 그런건지.. 로그인 코드import useInput from '@hooks/useInput'; import { Success, Form, Error, Label, Input, LinkContainer, Button, Header } from '@pages/SignUp/styles'; import fetcher from '@utils/fetcher'; import axios from 'axios'; import React, { useCallback, useState } from 'react'; import { Link, Navigate } from 'react-router-dom'; import useSWR from 'swr'; const LogIn = () => { const { data, error, mutate } = useSWR('/api/users', fetcher); const [logInError, setLogInError] = useState(false); const [email, onChangeEmail] = useInput(''); const [password, onChangePassword] = useInput(''); const onSubmit = useCallback( (e) => { e.preventDefault(); setLogInError(false); axios .post( '/api/users/login', { email, password }, { withCredentials: true, }, ) .then((response) => { mutate(); }) .catch((error) => { setLogInError(error.response?.data?.statusCode === 401); }); }, [email, password], ); if (data === undefined) { return <div>로딩중...</div>; } if (data) { return <Navigate replace to="/workspace/sleact/channel/일반" />; } // console.log(error, userData); // if (!error && userData) { // console.log('로그인됨', userData); // return <Redirect to="/workspace/sleact/channel/일반" />; // } return ( <div id="container"> <Header>Sleact</Header> <Form onSubmit={onSubmit}> <Label id="email-label"> <span>이메일 주소</span> <div> <Input type="email" id="email" name="email" value={email} onChange={onChangeEmail} /> </div> </Label> <Label id="password-label"> <span>비밀번호</span> <div> <Input type="password" id="password" name="password" value={password} onChange={onChangePassword} /> </div> {logInError && <Error>이메일과 비밀번호 조합이 일치하지 않습니다.</Error>} </Label> <Button type="submit">로그인</Button> </Form> <LinkContainer> 아직 회원이 아니신가요? <Link to="/signup">회원가입 하러가기</Link> </LinkContainer> </div> ); }; export default LogIn; 회원가입 코드import useInput from '@hooks/useInput'; import fetcher from '@utils/fetcher'; import React, { useCallback, useState, VFC } from 'react'; import axios from 'axios'; import useSWR from 'swr'; import { Success, Form, Error, Label, Input, LinkContainer, Button, Header } from './styles'; import { Link, Navigate } from 'react-router-dom'; const SignUp = () => { const { data, error, mutate } = useSWR('/api/users', fetcher); const [email, onChangeEmail] = useInput(''); const [nickname, onChangeNickname] = useInput(''); const [password, , setPassword] = useInput(''); const [passwordCheck, , setPasswordCheck] = useInput(''); const [mismatchError, setMismatchError] = useState(false); const [signUpError, setSignUpError] = useState(''); const [signUpSuccess, setSignUpSuccess] = useState(false); const onChangePassword = useCallback( (e) => { setPassword(e.target.value); setMismatchError(e.target.value !== passwordCheck); }, [passwordCheck], ); const onChangePasswordCheck = useCallback( (e) => { setPasswordCheck(e.target.value); setMismatchError(e.target.value !== password); }, [password], ); const onSubmit = useCallback( (e) => { e.preventDefault(); if (!mismatchError && nickname) { console.log('서버로 회원가입하기'); setSignUpError(''); setSignUpSuccess(false); axios .post('/api/users', { email, nickname, password, }) .then((response) => { console.log(response); setSignUpSuccess(true); }) .catch((error) => { console.log(error.response); setSignUpError(error.response.data); }) .finally(() => {}); } }, [email, nickname, password, passwordCheck, mismatchError], ); if (data === undefined) { return <div>로딩중...</div>; } if (data) { return <Navigate replace to="/workspace/sleact/channel/일반" />; } return ( <div id="container"> <Header>Sleact</Header> <Form onSubmit={onSubmit}> <Label id="email-label"> <span>이메일 주소</span> <div> <Input type="email" id="email" name="email" value={email} onChange={onChangeEmail} /> </div> </Label> <Label id="nickname-label"> <span>닉네임</span> <div> <Input type="text" id="nickname" name="nickname" value={nickname} onChange={onChangeNickname} /> </div> </Label> <Label id="password-label"> <span>비밀번호</span> <div> <Input type="password" id="password" name="password" value={password} onChange={onChangePassword} /> </div> </Label> <Label id="password-check-label"> <span>비밀번호 확인</span> <div> <Input type="password" id="password-check" name="password-check" value={passwordCheck} onChange={onChangePasswordCheck} /> </div> {mismatchError && <Error>비밀번호가 일치하지 않습니다.</Error>} {!nickname && <Error>닉네임을 입력해주세요.</Error>} {signUpError && <Error>{signUpError}</Error>} {signUpSuccess && <Success>회원가입되었습니다! 로그인해주세요.</Success>} </Label> <Button type="submit">회원가입</Button> </Form> <LinkContainer> 이미 회원이신가요? <Link to="/login">로그인 하러가기</Link> </LinkContainer> </div> ); }; export default SignUp; 강의 내용을 그대로 따라쳤으며, mutate를 사용했습니다. 그리고 redirect 대신 navigate를 사용했습니다.. 아무리 봐도 어디서 오류가 나는건지 모르겠습니다,, fetcher 코드//로그인 받은 후 어떻게 처리할건지 //백엔드 서버주소와 프론트 서버주소가 다르면 쿠키를 보낼수도 받을 수도 없음 //이때 설정하는게 withCredentials임 import axios from 'axios'; const fetcher = (url: string) => axios .get(url, { withCredentials: true, }) .then((response) => response.data); export default fetcher; 파일구조
-
미해결스프링 핵심 원리 - 기본편
이름에 궁금한 게 있어요
Appconfig.class라고 해줄 때,.class의 의미는 무엇인가요?class를 호출하겠다는 의미일까요? :)
-
해결됨QGIS 파이썬 자동화 (벡터편) Ver.2
안녕하세요 향후 계획이 궁금합니다^^
QGIS 강의가 드문데 이렇게 좋은강의 개설해 주셔서 감사합니다^^(거기다 파이썬 활용한 자동화라니 ... 보자마자 바로 구매했습니다)추후 레스터 데이터관련 파이썬 자동화, QGIS+ 파이썬을 활용한 공간통계 같은 강의를 개설하실 계획이 있으신가요?그리고 이 강의가 초보자보다 QGIS를 어느정도 알아야 따라갈 수 있을거 같습니다(속성테이블 이나 벡터데이터 추가(점,선,면 제작 및 편집방법 등), 필터나 쿼리사용, 좌표계 같은 내용이 없네요)그런부분은 유튜브로 공부하는게 맞을까요?(기초는 유튜브도 꽤 있으니깐요) 아님 혹시 강사님이 추가 강의 제작 계획이 있으신가요?아무튼 드물고 귀한 강의 만들어 주셔서 감사합니다^^
-
미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
자바스크립트 문자열 질문
안녕하세요 왜 제 브라우저에서는 \슬래쉬 이스케이프 안하고 출력되나요? 강사님 화면 처럼 \한개만 출력 되지 않습니다. \n 줄바꿈 질문처럼 이것도 \가 이스케이프 한건가요?
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
13강 코드 질문있습니다.
class JavaHouse( val address: String, val livingRoom: LivingRoom = LivingRoom(10.0) ) { class LivingRoom(private val area: Double) } fun main() { val house: JavaHouse = JavaHouse("busan", JavaHouse.LivingRoom(10.0)) }안녕하세요 강사님 좋은 강의 잘듣고있습니다.강의 예시 코드를 작성하고 main() 함수에 JavaHouse 의 인스턴스를 생성했습니다. main() 함수를 실행하니, 아래와 같은 에러가 발생했습니다.noSuchMethodError 라는걸 보면 JavaHouse() 라는 메서드가 없다고 에러가 뜬것 같은데, 저는 JavaHouse() 를 생성자의 용도로 사용했다고 생각했습니다. 혹시 어떤 지점에서 제가 잘못 생각했는지 알 수 있을까요? 감사합니다.<에러>Exception in thread "main" java.lang.NoSuchMethodError: 'void com.lannstark.lec13.JavaHouse$LivingRoom.<init>(double)' at com.lannstark.lec13.Lec13Kt.main(Lec13.kt:17) at com.lannstark.lec13.Lec13Kt.main(Lec13.kt)
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘
소멸자 관련 질문
안녕하세요 강사님 ~List() { while (_size > 0) pop_back(); delete _head; delete _tail; } 리스트를 구현하는데 다음과 같이 소멸자가 없어도 잘 작동은 하더라고요 그래도 이걸 하는게 다른 기능을 하는 함수들이 동적 메모리를 할당하면서 전에 소멸자를 안해 줬기 때문에 메모리 오염이 일어나기 때문이라고 생각하는데 제가 이해한게 맞나요? 추가로 저 리스트 프로그램을 아예 종료하거나 꺼버리면 애초에 new로 동적할당된 부분도 자연스럽게 지워지는게 맞나요?(왠지 맞을것 같지만 확인차 여쭤보았습니다.)
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
객체지향 질문있습니다
1. class 는 설계도라고 하셨는데 그렇다면 main 함수에서든지 그 위에 전역변수 선언하는 영역에서든지 객체를 생성하지 않으면 class 내에 모든 멤버변수나 멤버함수의 메모리가 잡히지 않는다는 건가요?2. 또 구조체를 제가 그새 까먹어서... 구조체 역시 구조체 내의 변수들을 한 데 모아주는 역할만 할 뿐 구조체 변수를 따로 만들지 않으면 구조체 내의 묶어준 변수들의 메모리가 잡히지 않는건가요?
-
미해결C# 입문부터 Xamarin Forms(자마린 폼즈) + Maui(마우이) 안드로이드, 윈도우 앱(UWP) 동시에 만들기
18강에서 ref가 이해가 되지 않습니다
18강에서Ch_17 ch_17 = new Ch_17() Ch_18.time3(ref ch_17)클래스:public static void time3(ref Ch_17 ch_17) { ch_17.name = "태권브이" Console.WriteLine(ch_17.name + "고향:" + Ch_17.homeTown) }이 나옵니다. 근데 이미 클래스에서 ch_17을 참조 (ref Ch_17 ch_17)한다고 나와있는데 왜 클래스를 이용할 때 ref ch_17를 붙여야 하나요? 강의를 한 번 더 보니 이해가 되었습니다. ref Ch_17 ch_17은 매개변수 내의 클래스이고 ref ch_17을 해서 ref Ch_17 ch_17 내에 ch_17 클래스를 넣는 것이군요!
-
미해결한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
그 달의 마지막 날이 작성이 되지 않습니다.
페이지 구현- 일기쓰기 (/new) 강의의 40분 48초 부터 onClick={handleSubmit}에서 9월 30일이나 10월 31일같이 그 달의 마지막날은 new(새로운 글)이 작성이 되지 않습니다.. 이유가 무엇인가요? const getStringDate = (date) => { return date.toISOString().slice(0,10); }export const getStringDate = (date) => { let year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate(); if (month < 10) { month = 0${month}; } if (day < 10) { day = 0${day}; } return ${year}-${month}-${day};};
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
퍼블릭클라우드서비스 쿠버네티스에서도 인증서 관리를 별도 해야하나요?
안녕하세요. 퍼블릭클라우드서비스에서 제공하는 클라우드서비스 GKS, EKS, AKS에서도 인증서 관리를 해주어야하는 지 궁금합니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
@마다 빨간줄이 그어지네요
razor 와 cshtml파일의 @ 부분에 빨간줄이 그어집니다.근데 실행에는 문제가 없어요 해결 방법이 있나요?
-
미해결
타전공 4년제 졸업 VS 학은제 학사 취득
안녕하세요.제 글을 보시는 분들 가볍게 의견 남겨주셨으면 좋겠습니다.현재 저는 개발자로 진로를 정하였는데, 비전공자이기 때문에 학벌로 인한 고민이 많은 상태입니다.현재는 타전공의 대학을 휴학중인 상태고, 1학년까지 마치고 휴학을 했기 때문에 복학해서 졸업하려면 3년의 시간이 걸립니다.그리고 휴학을 하면서 학점은행제 과정을 수료했기 때문에, 학은제로 내년 초 3개월만 하면 대학 학사 학위가 나오는 상황이구요. (대학과 학은제는 모두 컴공관련 아닌, 비전공과 입니다)하지만 내년에 대학교 복학을 하지 않으면 제적 되는 상황인데 ,여기서 고민은 한학기 남은 학은제 그냥 수료할지(=대학은 제적 처리됨),아니면 하던 학은제를 포기하고 그냥 복학해서 3년을 다니며 (타전공일지라도) 4년제를 졸업을 해야할지 고민입니다. 대학을 졸업까지 1년 정도 남으면 고민 안하고 복학을 했을 것 같은데 타전공인데다가 3년을 더 다녀야 한다는 생각에 고민이 됩니다. ( 이 3년이면 개발공부를 하기에 정말 중요한 시간이 될 것 같아서요) 대학교 수준은 중위권 정도의 국립대이며 , 과는 어문계열의 한 학과 입니다.<요약하자면>우선 비전공자로서 개발자로 진로를 확실히 정하였고 , 타전공일 지라도 4년제의 국립대 타이틀을 얻기 위해 대학을 3년동안 다녀야 할지, 인식 수준은 낮지만 그 3년 아껴서 학사 취득에 시간을 단축하고 개발 공부를 한시라도 빨리 시작하기 위한 학은제를 마저 수료하는게 나을지 고민입니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
gradlew 빌드시 에러 발생 관련
인텔리제이에서 springboot Application 및 테스트는 모두 정상적으로 완료됩니다. 그런데 강의에서는 터미널을 통해 ./gradlew clean build로 빌드를 하시더라고요 이것을 따라하니 계속 에러가 발생합니다. 원인을 알 수 있을까요? ㅠ
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
onetomany 관계인 엔티티의 속성을 필터링에 사용하는것에 대해서
안녕하세요 강사님 강사님의 강의 잘듣고있습니다. 강사님의 강의를 듣고 프로젝트 진행중 고민인 부분이 있어 질문남깁니다!전체는 아니지 대략적인 erd 부분입니다.게시물에 달려있는 태그, 게시물 제목 등으로 필터링 하는 상황입니다. 또한 "게시물" 엔티티와 "게시물_태그" 엔티티가 양방향으로 되어있습니다.궁금한점이 게시물에 있는 태그를 조건으로 필터링할때 아래 두방식중 어떠한 방식이 적합합니까? 아니면 더좋은 방법이 있으시다면 어떤것이 있는지 여쭈어봐도 되나요?!게시물 테이블에 태그를 제외한 나머지 조건으로 필터링한 후 결과 게시물들의 "게시물_태그" 프록시 객체를 초기화하면서 태그 조건에 만족하는 게시물을 필터링하는 방법"게시물_태그" 테이블에서 태그조건을 가진 게시물들을 먼저 찾은후(찾은후 group등을 이용) 나머지 조건사용해서 필터링하기읽어주셔서 감사합니다!!!