묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
JobQueue 질문 드립니다.
안녕하세요. 1. Room이 JobSerializer를 상속받게 변경된 이후 멀티쓰레드 환경에 따른 여러가지 실행순서 경우의 수를 신경써 줘야 되서 안전하게 사용하기 위해서는 많이 복잡해 지는 것 같습니다. 실질적으로 모든 경우의 수를 매번 신경쓰며 사용하기엔 무리가 있는 것 같습니다. JobSerializer를 안전하게 사용할 수 있는 팁이나 노하우가 있을까요. 2. JobSerializer는 여러개의 쓰레드 중 하나의 쓰레드에서만 실행되는 것이 보장되어야 할 것 같은데요. 이것을 보장할 수 있는 방법이 있을까요. 또 다른 A라는 JobSerializer로 들어가야할 Job이 B라는 JobSerializer로 들어가는 상황을 방지하거나 잡아낼 수 있는 방법이 있을까요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
플로이드 워셜 경로 탐색 질문
안녕하세요 선생님 코딩 테스트를 처음 준비 하는데 선생님의 강의를 몰랐다면 정말 큰 일 날 뻔 했습니다. 뛰어난 강의력 덕분에 기초 개념을 잡아가고 있습니다. 감사하단 말씀을 드리고 싶습니다. 다름이 아니라, 플로이드 워셜 알고리즘 강의를 듣고 직접 코드를 짜다가 경로 출력도 한번 해봐야겠다는 생각이 들었습니다. 소스 코드 폴더에 혹시 경로 출력 코드가 있을까 찾아봤는데 파일이 있긴 있는데 공백이었습니다. 공백으로 놔두신 이유가 있으실건데, 경로 출력까지는 불필요하다는 의도이신가요? 만일 불필요하다면, 굳이 하지 않겠습니다. 그래도, 코드 파일이 있다면 업로드 해주시면 감사하겠습니다. 그리고 마지막으로 여쭤보고 싶은게 백준은 알고리즘 대회 준비하는 친구들이 이용하는 사이트라 백준까지는 필요없고 릿코드를 풀어라는 글을 인터넷에서 본 적 있는데 어떻게 생각하시는지 궁금합니다. 감사합니다. 또, 추가적인 강의는 없는지도 궁금합니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
컨트롤 URI를 쓰는 유즈케이스에 대해 질문드립니다.
강의 내용에서 문서+컬렉션으로 최대한 해결해보지만, 한계가 존재할것이고 이걸 컨트롤 URI로 구현해준다고 이해했습니다. /members/ 가 존재한다면, 여기서 더 디테일한 부분을 고려했을 때 필요한 기능들에 대해 컨트롤 URI를 구현해주는 것일까요? 예를 들면 /members/{id}/delete, /members/{id}/read 디테일한 부분을 체크해줄때 컨트롤 URI를 쓰는것일까요? 감사합니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
React -> Next.js 전환
제로초님 안녕하세요 강의 너무 잘 보고 있습니다 ^^ 현재 React로 작성 Project가 있는데[프론트(React)/백엔드(Node, Express, MySQL)] 함수형이 아닌 클래스형 컴포넌트루요, 이 경우 Next.js로 마이그레이션 하는데 많은 작업이 필요한가요 ? 정보검색을 해보니 Link태그라던지 React-Router에서 Next에서 기본적으로 제공하는 Router(Page폴더 및 레이아웃 사용) 변경하는 것 말고는 큰 작업은 없는 것 같아서요 !
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
React.createRef 사용중 Next.js가 createRef 인식을 못하는데 뭐가 문제일까요.. ??
기존에 React로 개발한 프로젝트를 Next.js로 전환하려고 강좌를 보고 있습니다. 본 강좌와 관련이 없는 질문이라면 죄송하지만, 아무리 구글 검색을 해봐도 답을 얻지 못해 도움을 구해보고자 이렇게 질문드립니다. 너무 바쁘실텐데 도움 주시면 정말 감사하겠습니다 우선 오류는 다음과 같습니다. 아래는 제 코드이구요, Ref를 선언하는 부분에서 Next.js가 Ref를 인식하지 못하는 것 같습니다.
-
미해결언리얼 엔진4 입문 (C++ 기반)
OwnerComp.GetAIOwner()->GetPawn() 가 널을 반환 합니다.
해당 강의를 들으면서 DrawDebugSphere가 안되어서 디버깅을 해봤는데 아래 처럼 컨트롤러는 잡히는데 Pawn이 null이 뜹니다. 원인을 알 수 있을까요? ㅜㅜ 이전에 커뮤니티에 올린 질문과 유사한 방향 같습니다 ㅠㅠ 혹시 몰라 AI컨트롤러에서도 폰을 직접 세팅해줬는데도 동작을 안합니다 ㅠ
-
미해결스프링 핵심 원리 - 기본편
빈이 여러개일 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요. FixDiscountPolicy와 RateDiscountPolicy가 빈으로 등록되어있을때 DiscountPolicy에 의존하는 OrderService에서는 DiscountPolicy Bean이 2개이기때문에 하나의 빈을 선택하기위해 @Qualifier를 사용 할 수 있는데요. 그럼 결국 구체화에 의존을 하게되고, OrderService의 할인정책이 새로운 정책(NewDiscountPolicy)으로 변경되면 OrderService의 Qualifier 대상 Bean이 변경되어야하므로 OCP, DIP가 깨진다고보면될까요?? 의견 부탁드립니다. 감사합니다!
-
미해결수학으로부터 인류를 자유롭게 하라(기초대수학편)
Proper supersets의 cardinality
안녕하세요. 강의 잘 듣고 있습니다. 수강중에 질문이 있는데요. 11:14 의 Proper supersets의 cardinality가 A ) B -> |A| > |B| 가 되어야 하는게 맞나요?
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
바운딩 박스가 한 사람에게 여러개 잡히는 경우
선생님 안녕하세요, 선생님덕에 어렵게만 느껴지던 cv를 조금씩 배우고 있어서 정말 감사드립니다. 제가 mask rcnn이나 mmdetection을 통한 segmentation을 다른 이미지를 넣어서 해봤는데요, 2모델 다 한 사람만 있는 여러 사진들에서 한 사람에 대해 서너개의 바운딩박스가 생기더라고요. (다 사람으로 예측하긴 하는데 accuracy는 갈수록 낮아지게 생깁니다.) 한명이 앞에 있고, 뒤에 또 사람이 겹쳐져 있는거다 이런 식으로 인식한 걸까요? 이런게 이례적인 경우인가요? 일반적인 경우라면 어떻게 하면 더 나은 결과가 나올 수 있을까요? 그냥 threshold를 높이면 되는 걸까요? 사진에 나오는 사람이 대체적으로 한명이고, 사람을 찾는 거라면 range(1)로만 하면 되는 걸까요? 그럼 자동으로 가장 accuracy가 높은거 하나만 나오는 건가요?
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
광고상품 제외하기에서 아예 제외하고 나머지만 출력하려면 어떻게 해야하나요?
광고상품 제외하기에서 if len(link.select('span.ad-badge-text')) > 0: print("광고상품입니다.") 로 하셨는데 이렇게 하면 결과물 출력시 광고상품은 광고상품이라고 표시되서 나오는데 혹시 무시하고 아예 출력을 안하려면 어떻게 해야하나요? 결과물에 광고가 아닌 상품들만 출력하고 싶을때의 경우도 알려주시면 감사드리겠습니다.
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
안녕하세요 ! 질문이 있습니다.
강의 영상에 마지막 콘솔에서 나오는 로그들중에 {data : {...}, status:201, statusText:"Created", headers: {...}, config: {...}, ... } 등 이렇게 여러 파라미터들이 나오는데 저는 데이터 형태가 이렇게 나오더라고요 혹시 제가 놓친 부분이 있나 해서요 ...
-
미해결홍정모의 따라하며 배우는 C++
부모클래스의 생성자 initializer_list 질문
#include <iostream> #include <cmath> #include <limits> #include <iomanip> #include <bitset> #include <string> #include <cstdint> #include <random> #include <cstddef> #include <array> #include <tuple> #include <cassert> //#include <assert.h> #include <algorithm> #include <vector> #include <chrono> #include <initializer_list> using namespace std; template <typename T, int size> class TemplateArrBase { protected: int m_length; T* m_arr; public: TemplateArrBase(const int& value = 0) : m_length(value) { m_arr = new T[value]; } TemplateArrBase(const initializer_list<T>& list) { resetArr(list.size()); int count = 0; for (const auto& element : list) { m_arr[count] = element; count++; } } T& operator [](const int& index) const { assert(index < m_length); assert(index >= 0); return m_arr[index]; } template<typename T> T sum() const { T sum = 0; for (int i = 0; i < m_length; i++) { sum += m_arr[i]; } return sum; } //1. const int operator +(const TemplateArrBase& ref) const { return this->m_length + ref.m_length; } //3. const int operator +(const int &num) const { return m_length + num; } //2. friend const int operator+(int num, const TemplateArrBase& ref) { return num + ref.m_length; } friend ostream& operator <<(ostream& out, const TemplateArrBase& over) { for (int i = 0; i < over.m_length; i++) { out.operator<<(over.m_arr[i]) << " "; } cout << endl; return out; } //template <typename T> void setArr(const initializer_list<T>& arr) { resetArr(arr.size()); int count = 0; for (const auto& element : arr) { m_arr[count] = element; count++; } } void operator = (const initializer_list<T>& list) { resetArr(list.size()); int count = 0; for (const auto& element : list) { m_arr[count] = element; count++; } } void resetArr(const int& size) { delete[] m_arr; m_arr = new T[size]; if (m_arr == nullptr) { assert(m_arr != nullptr); } m_length = size; } void print() { for (int i = 0; i < m_length; i++) { cout << m_arr[i] << " "; } cout << endl; } //friend const int operator+(const over& ref, const over& ref2) //{ // return ref.value + ref2.value; //} }; template<typename T, int size> class TemplateArr : public TemplateArrBase<T, size> { }; template<int size> class TemplateArr<bool, size> : public TemplateArrBase<bool, size> { public: void losingTicket() { } }; template<int size> class TemplateArr<char, size> : public TemplateArrBase<char, size> { public: void print() {// protected 로 선언했는데 그냥 m_length 라고 쓰면 에러뜨는 이유가 템플릿이라서 그런가요? for (int i = 0; i < TemplateArrBase<char,size>::m_length; i++) { cout << TemplateArrBase<char, size>::m_arr[i]; } cout << endl; } }; class A { public: A() { cout << "A" << endl; } }; class B : public A { public: B() { cout << "B" << endl; } void test() {} }; int main() { TemplateArrBase<int,0> over = {1,2,3,4,5}; over = { 1,2,3 }; over[1] = 32; cout << over << endl; TemplateArr<bool,10> over2; over2.losingTicket(); cout << over.sum<int>() << endl; over.print(); TemplateArrBase<char,0> over3 = { 'e','r' }; cout << over3 << endl; over3.print(); TemplateArr<char, 0> over4 = { 'a','b'}; // 에러뜨는 이유를 모르겠습니다 over4.print(); } 안녕하세요 위의 코드에 주석친것처럼 질문이 2가지가 있는데요 첫째가 템플릿이라서 상속받은 클래스들이 부모클래스의 멤버변수를 못찾는것인지에 대한 거랑 두번째로 아래 오류코드처럼 모클래스로는 initializer list 가 정상적으로 작동되는데 자식클래스로 초기화했을때는 왜 저런 에러가 뜨는지 모르겠습니다. 그래서 배열을 한개만 넣어서 초기화하면 정상작동은 하는데 문제가 문자들이 garbage 값들이 나옵니다. 모클래스 생성자도 상속받은건데 머가 문제인지 모르겠네요 ㅠㅠ
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
마지막 이메일 확인 페이지가 안뜹니다
controll 테스트부분에서 notnull에 emailchecktoken에 문제가 없고 가입까지 하고난뒤 check-email-token 값을 복사하여 실행하면 빈화면이 뜹니다 그냥 흰화면만 나오고 f12눌러서 확인하면 <plaintext 문서의 문자 인코딩이 선언되어 있지 않습니다.문서에 US ASCII 외의 문자가 포함되어 있는 경우, 브라우저의 설정에 따라서 글자가 깨질 수 있습니다. 파일 문자 인코딩은 전송 프로토콜로 선언되어 문자 인코딩을 지정하는 바이트 오더 마크가 파일에 사용되어야 합니다.> 이런 오류메시지만 나옵니다. 방법을 찾아보려고 검색도 해봤는데 해결이 안되네요 일단 checked-email <!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head> <meta charset="UTF-8"> <title>StudyOlle</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> <style> .container{ max-width: 100%; } </style></head><body class="bg-light"> <nav class="navbar navbar-expand-sm navbar-dark bg-dark"> <a class="navbar-brand" href="/" th:href="@{/}"> <img src="/images/logo_sm.png" width="30" height="30"> </a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mr-auto"> <li class="nav-item"> <form th:action="@{/search/study}" class="form-inline" method="get"> <input class="form-control mr-sm-2" name="keyword" type="search" placeholder="스터디 찾기" aria-label="Search" /> </form> </li> </ul> <ul class="navbar-nav justify-content-end"> <li class="nav-item"> <a class="nav-link" href="#" th:href="@{/login}">로그인</a> </li> <li class="nav-item"> <a class="nav-link" href="#" th:href="@{/sign-up}">가입</a> </li> </ul>> </div> </nav> <div class="py-5 text-center" th:if="${error}"> <p class="lead">스터디올래 이메일 확인</p> <div class="alert alert-danger" role="alert"> 이메일 확인 링크가 정확하지 않습니다. </div> </div> <div class="py-5 text-center" th:if="${error == null}"> <p class="lead">스터디올래 이메일 확인</p> <h2> 이메일을 확인했습니다. <span th:text="${numberOfUser}">10</span>번째 회원, <span th:text="${nickname}">백기선</span>님 가입을 축하합니다. </h2> <small class="text-info">이제부터 가입할 때 사용한 이메일 또는 닉네임과 패스트워드로 로그인 할 수 있습니다.</small> </div></body></html> controller @Controller@RequiredArgsConstructorpublic class AccountController { private final AccountRepository accountRepository; private final SignUpFormValidator signUpFormValidator; private final AccountService accountService; @InitBinder("signUpForm") public void initBinder(WebDataBinder webDataBinder) { webDataBinder.addValidators(signUpFormValidator); } @GetMapping("/sign-up") public String signUpForm(Model model) { model.addAttribute(new SignUpForm()); return "account/sign-up"; } @PostMapping("/sign-up") public String signUpSubmit(@Valid SignUpForm signUpForm, Errors errors) { if (errors.hasErrors()) { return "account/sign-up"; } accountService.processNewAccount(signUpForm); //TODO 회원 가입 처리 return "redirect:/"; } @GetMapping("/check-email-token") public String checkEmailToken(String token, String email, Model model) { Account account = accountRepository.findByEmail(email); String view = "account/checked-email"; if (account == null) { model.addAttribute("error", "wrong.email"); return view; } if (!account.getEmailCheckToken().equals(token)) { model.addAttribute("error", "wrong.token"); return view; } account.setEmailVerified(true); account.setJoinedAt(LocalDateTime.now()); model.addAttribute("numberOfUser", accountRepository.count()); model.addAttribute("nickname", account.getNickname()); return view; }} service @Service@RequiredArgsConstructorpublic class AccountService { private final AccountRepository accountRepository; private final JavaMailSender javaMailSender; private final PasswordEncoder passwordEncoder; @Transactional public void processNewAccount(SignUpForm signUpForm) { Account newAccount = saveNewAccount(signUpForm); newAccount.generateEmailCheckToken(); sendSignUpConfirmEmail(newAccount); } private Account saveNewAccount(@Valid SignUpForm signUpForm) { Account account = Account.builder() .email(signUpForm.getEmail()) .nickname(signUpForm.getNickname()) .password(passwordEncoder.encode(signUpForm.getPassword())) //인코딩해야됨됨 .studyCrateByWeb(true) .studyEnrollmentByWeb(true) .studyUpdateByWeb(true) .build(); return accountRepository.save(account); } private void sendSignUpConfirmEmail(Account newAccount) { SimpleMailMessage mailMessage = new SimpleMailMessage(); mailMessage.setTo(newAccount.getEmail()); mailMessage.setSubject("스터디 올래, 회원 가입 인증"); mailMessage.setText("/check-email-token?token="+ newAccount.getEmailCheckToken() +"&email="+ newAccount.getEmail()); javaMailSender.send(mailMessage); }}입니다어디가 문제일까요? 실행화면 git junepro/studyolle1 입니다
-
해결됨하루만에 Cypress로 작성하는 자바스크립트 E2E 테스트 코드
안녕하세요~
window를 사용하고 있는데 npm으로 Cypress가 설치되지 않는 이슈가 있네요. 혹시 추천해주실 방법이 있을까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
flushing 0 outstanding messages
안녕하세요 혹시 kafka connect를 실행시켰을때 해당 로그가 계속 올라오는 이유가 무엇인지 알 수 있을까요?? 해당 로그가 안뜨게 할 수 있는 방법이 뭔지 알려주시면 감사하겠습니다.
-
미해결스프링 시큐리티
Ajax방식에서 SavedRequest 가능여부
안녕하세요 강사님, 강의듣다가 궁금한게 생겨서 문의드립니다. 폼 로그인 방식에는 successHandler에 RequestCache를 통해 미인증 사용자가 접근했던 정보로 리다이렉트 했었는데 Ajax 통신에서는 success블럭에 window.location을 통해 이동하는 걸로 보여집니다. (초반엔 "/"였다가 19:07 에는 "/messages"로 변경되어있습니다.) REST 환경이 아니라 해당 예시처럼 Ajax 통신 시 RequestCache 이용 가능한지 궁금합니다.
-
해결됨UIKit - iOS14 실무 가이드 <iOS앱 진짜 개발자 되기>
안녕하세요 제가 이 강의를 보고 만든것을 git에 올려도 되나요??
안녕하세요 제가 이 강의를 보고 만든것을 git에 올려도 되나요??
-
미해결실전! Querydsl
changeTeam의문점
안녕하세요 영한(god)님 질문이 하나있습니다. 지금 changeTeam 을 이용하여 Member의 Team을 바꿔주시는데 이게 em.flush ,clear 하고 조회를 해오면 더티체킹으로 Member의 Team이 잘 바뀌어서(update) 조회됩니다. 근데 문제는 자바 컬렉션에서의 문제입니다 team.getMembers().add(this); 이 결과로 (팀)양쪽에 같은 맴버가 생기는거 같습니다.
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
네비게이션 서브 메뉴 배경 만들 때에 빈div 사용해도 될까요?
저는 강사님을 통해 퍼블리싱 강의를 처음 듣고 웹디자인 기능사를 준비하는 학생입니다. 문의에 앞서 매번 좋은 강의 감사드립니다. 네비게이션 서브메뉴를 구성할때에 리스트 갯수에따라 단차가 생기는 것이 싫어 뒤에 red 박스를 만들어 배경을 대려고 하는데요 css와 제이쿼리는 잘 작동하나 html에서 위와 같이 <div class="subbg"></div> 처럼 안쪽에 글 혹은 a태그를 안넣고 마무리 해도 유효한 건지 여쭤보고싶습니다
-
미해결스프링 배치
spring batch DB Schema 확장 문의
안녕하세요. 강사님 프로젝트 마다 DB 표준이 다를 텐데 meta schema의 테이블명, 컬럼명, 컬럼 타입 변경과 배치가 실행될 때 수행되는 sql 문을 수정할 수 있는 확장 포인트가 있나요? 감사합니다.