묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
동기방식의 consumer 클래스와 비동기방식의 consumer클래스의 차이가 뭔지 궁금합니다.
1. 동기방식의 consumer 클래스와 비동기방식의 consumer클래스의 차이가 뭔지 궁금합니다.jsonwebsocketconsumer에서 모델을 임포트하여 db를 수정해도 문제가 없을까요?? 웹소켓에 연결할때 마가 하나의 연결당 하나의 consumer가 생성되는건가요??
-
미해결한 입 크기로 잘라먹는 타입스크립트(TypeScript)
디스코드 채널 참가 링크로 접속하니 "올바르지 않은 초대장 - 만료된 초대장이거나 참가 권한이 없어요."라고 나와요.
디스코드 채널 참가 링크로 접속하니, "올바르지 않은 초대장 - 만료된 초대장이거나 참가 권한이 없어요."라고 나와요.디스코드 로그인 후 링크를 눌러 접속하는 것 외별도로 다른 뭔가를 해주어야 하나요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
ServiceException: Unable to create requested service 뜨는 분들 보세요
ServiceException: Unable to create requested serviceHibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set프로젝트 시작했는데 이런 에러 뜨시는 분들 해결책 공유 드립니다.우선 첫번째로 Mysql 서버가 켜져있는지를 확인해봅니다. Workbench를 켜서 Mysql connect를 해주세요.그래도 안 된다면, 두번째로 application.yaml에 아래처럼 코드를 추가해줍니다.이처럼 database:mysql을 추가해줍니다.이렇게 하면 대부분 해결되실겁니다. ps. 추가적으로 이후에 unknown database라는 주의 문구가 뜨는 분들은 해당 이름으로 database를 아직 만들지 않아서 그렇습니다. url에 들어가는 이름으로 mysql workbench에서 database를 만들어서 진행하세요.
-
미해결STM32 CAN 통신
강의 교재 19p, 'Trace and Debug' 설정
강의 교재 19p, 'Trace and Debug' 항목이 나타나지 않습니다. 별도 설정이 필요한지 문의드립니다.
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 기한 연장 부탁드립니다...ㅠ
회사 일이랑 병행하면서 공부하다 보니까 벅차서 현재까지도 수강을 제대로 못하고 있는데수강 기한이 얼마 남지 않았네요..수강 기한 연장해주시면 감사드리겠습니다.
-
미해결왕초보를 위한 네트워크 기초
교재는 어디있나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의 수강 도중에 교재를 보라고 하시는데교재는 어디서 볼 수 있나요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[7-N] 질문입니다
안녕하세요 선생님, 강의를 듣던 중 궁금한 점이 생겨 질문을 드립니다. https://www.acmicpc.net/source/share/ac40156090a44a3883d00e1da2250094답지의 코드에서 ret == INF일 경우 -1을 출력하고 있는데, 유일하게 ret 갱신이 이루어지는 부분은 ret = min(cnt, ret);이기 때문에 ret값이 INF가 되려면 cnt가 INF이거나 그 이상이 되어야 할 것으로 보입니다. 백트래킹을 위해 추가된 코드 if (cnt >= ret) return; 이 있기 때문에 x, y 끝지점에 도달하기 전에 cnt >= ret일 경우 끝지점에서만 일어나는 ret 갱신이 일어나지 않기 때문에 ret는 INF일 수 있겠구나 생각했지만 그럴 경우 cnt >= ret이 되기 위해 cnt >= INF인 경우가 생기게 됩니다.cnt >= ret이 아닌 이상 언젠가는 y == len에 도달하여 ret 갱신이 이루어질 것이고, 최초 dfs 호출 시 cnt를 0으로 주었기 때문에 cnt >= INF가 되기 위해선 실제로 cnt가 한 칸씩 증가할 수밖에 없습니다. 재귀를 통해 cnt를 하나씩 증가시킬 경우 INF에 도달하기까지 매우 많은 시간이 걸릴 텐데 어떻게 시간 초과가 나지 않는 것인지 궁금합니다. 시간 복잡도를 계산해봤을 때 재귀함수의 시간 복잡도는 O(갈래^깊이), 최악의 경우 for문 5번에서 재귀함수가 모두 호출 되므로 갈래 = 5, cnt를 1씩 증가시켜 INF에 도달하려면 깊이는 INF이므로 O(5^INF)라고 생각했는데 시간복잡도를 잘못 계산한 것일지 어떻게 INF일 때 시간 초과가 나지 않는 것인지 질문을 드립니다.
-
미해결4시간 완성! 애프터이펙트 중급 강의
이부분 말씀이 잘 안들려요.
1:21에서 알트누르고 @#$!$.. 귀로 안들려요 ㅠㅠ 죄송합니다
-
미해결처음 만난 리액트(React)
(실습) create-react-app 자꾸 오류가 나요,,
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.create-react-app 을 하면 자꾸 이런 오류가 떠서 실습을 못하고 있는데 뭐가 문제일까요..?
-
미해결[신규 개정판] 코딩 입문자를 위한 파이썬 완벽가이드
if 문제 질문
질문에 대한 답변은업무가 바쁘지 않으면, 보통 2~3일 내에 드립니다. 다만 이해하기 어려운 질문은 답변 드리기 어려우니,코드와 오류 메시지를 같이 첨부해 주시기 바랍니다. price = int(input("삼성전자의 현재가격을 입력하세요 >>>")) if price >= 90000: print ("매도하세요.") elif price >= 80000: print ("기다리세요.") else: print ("매수하세요.") 여기서 자꾸 invalid syntax 에러가 뜨는데 문제가 뭘까요 ? ㅠㅠㅠ 수업 넘 잘 듣고 있어요 오늘 수강등록 했는데 설명 넘 자세하게 잘 해주십니다 !!! 완강까지 꼭 달릴게요 ㅎㅎ
-
해결됨워드프레스 제대로 개발하기 - 클라이언트 편
강의변경
클라이언트 초기부분에 어드민 리뷰를 해주시는 것을 듣는데 어드민강의가 저에게 더 필요할것 같습니다. 혹시 어드민으로 강의를 변경해주실수 있을까요? 부탁드리겠습니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
훈훈한 자바스크립트 반복문파트 스크립트 태그의 위치 질문
저는 버튼을 누르면 텍스트 출력은 오류, 콘솔 출력은 null이 뜹니다 원인이 뭐죠? index.html<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>D-Day-count</title> <link rel="stylesheet" href="./style.css" /> <script src="./script.js"></script> </head> <body> <h1>D-Day</h1> <div id="d-day-container"> <div class="d-day-child-container"> <span id="days">0</span> <span>일</span> </div> <div class="d-day-child-container"> <span id="hours">0</span> <span>시간</span> </div> <div class="d-day-child-container"> <span id="min">0</span> <span>분</span> </div> <div class="d-day-child-container"> <span id="sec">0</span> <span>초</span> </div> </div> <div id="d-day-meassage"></div> <div id="target-selector id"> <input id="target-year-input" class="target-input" size="5" /> - <input id="target-month-input" class="target-input" size="5" /> - <input id="target-date-input" class="target-input" size="5" /> </div> <button onclick="counterMaker()" id="start-btn">카운트다운 시작</button> </body> </html> script.js // const obj = { // name: "Jason", // age: 25, // }; // if (obj.name === "Jason" || obj.age === 25) { // console.log("안녕, " + obj.name + ", 너의 나이는 " + obj.age); // } else { // console.log("넌 우리 멤버가 아니다."); // } const dateFormMaker = function () { const inputYear = document.querySelector("#target-year-input").value; const inputMonth = document.querySelector("#target-month-input").value; const inputDate = document.querySelector("#target-date-input").value; // const dateFormat = inputYear + '-' + inputMonth + '-' + inputDate; const dateFormat = `${inputYear}-${inputMonth}-${inputDate}`; //템플릿 리터럴 return dateFormat; }; const counterMaker = function () { const messageContainer = document.querySelector("#d-day-message"); console.log(messageContainer); messageContainer.textContent = "D-Day를 입력해주세요."; const targetDateInput = dateFormMaker(); const nowDate = new Date(); const targetDate = new Date(targetDateInput).setHours(0, 0, 0, 0); const remaining = (targetDate - nowDate) / 1000; // 만약, remaining === 0 라면, 타이머가 종료되었습니다. 출력 if (remaining <= 0) { console.log("타이머가 종료되었습니다."); } else if (isNaN(remaining)) { //만약, 잘못된 날짜가 들어왔다면, 유효한 시간대가 아닙니다. 출력 console.log("유효한 시간대가 아닙니다."); } const remainingDate = Math.floor(remaining / 3600 / 24); //몇일 남았는지 구하기 const remainingHours = Math.floor(remaining / 3600) % 24; //몇 시간 남았는지 구하기 const remainingMin = Math.floor(remaining / 60) % 60; //몇 분 남았는지 구하기 const remainingSec = Math.floor(remaining) % 60; //몇 초 남았는지 구하기 console.log(remainingDate, remainingHours, remainingMin, remainingSec); };
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
세션과 토큰을 이용한 로그인 유지 방식의 차이점
안녕하세요! 강의를 보다가 의문점이 생겨 질문드립니다.크게 아래와 같이 두 가지 질문이 생겼습니다.로그인 유지를 위해 remember-me 토큰을 발급하고 해당 토큰의 유효기간을 (예를 들어) 30일로 설정하여 유저의 세션이 만료되어도 로그인이 풀리지 않게 한다면 단순히 최초에 저장되는 세션의 유효기간을 30일로 늘리는 것과 비교해 보안 측면에서 어떠한 장점을 갖는지 의문이 들었습니다.결론적으로 만약 리프레시 토큰을 사용한다고 하면 리프레시 토큰이 만료되기 전에 이를 갱신할 책임은 클라이언트에게 있는 건가요?? DB를 사용하지 않는 remember-me 방식이라고하면 토큰에서만 expired 관련 정보를 알 수 있을 것이고 그렇다면 클라이언트에서 이를 디코딩하여 남은 유효기간을 확인 후 직접 다시 요청을 하는 식의 처리를 해서 Cookie를 갈아주어야 하는 것인가하는 생각이 들었습니다.먼저 2번의 경우 강의에서의 세션=액세스 토큰, remember-me 토큰=리프레시 토큰이라고 비슷하게 생각할 수 있을 것 같아서 카카오 api 문서를 참고해봤는데,카카오에서는 리프레시 토큰의 유효기간이 1달 이내일 경우 액새스 토큰 갱신 요청을 보낼 때 리프레시 토큰도 같이 갱신하여 보내준다고 하더라구요. (https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#refresh-token)2번의 경우 이렇게 이해하면 되는건지와, 1번에 대해서는 어떻게 생각하시는지 궁금합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
출력 오류 질문있습니다
안녕하십니까 큰돌님http://boj.kr/d880f5abf6944bb2a159e97f98fec6e0강사님 이렇게 코드 작성했는데 테스트 케이스를 입력하면 왜 자꾸 출력이 깨지는지 모르겠습니다 ㅜㅠ
-
미해결배달앱 클론코딩 [with React Native]
Staging 테스트 질문이요!
안녕하세요 강의 잘 봤습니다.코드푸쉬를 적용하고 App Center까지 잘 올라온 걸 확인했습니다. 현재 앱을 TestFlight 앱으로 테스트 하고 있는데 Staging으로 코드푸쉬가 잘 적용되는지 확인하고 싶습니다. 혹시 Staging으로 올리고 변경된 codepush 내용을 TestFlight로 받는 방법이 있을까요?
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
실험 소재 예시관련 질문입니다.
주요 실험 소재를 설명해주신 예시 관련해서 질문이 있어요.예시) B라는 기능이 추가되면 "신규유저"가 우리 제품에 더 만족할까?위 예시에서 특별히 신규유저를 지칭하신 이유가 있을까요?실험 결과에 대해서 세그먼트를 고려할 필요가 있다는 맥락일까요? 혹은 유저 유입에 대한 실험이 중요하다는 이야기일까요..?ㅎㅎ.. 엄청 사소한 것 같은데, 궁금해서 여쭤봅니다.
-
해결됨스프링 핵심 원리 - 기본편
애플리케이션 빈 출력하기
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이렇게 위에 다 뜨는데 맞게 뜬건가요??
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
java.lang.NullPointerException: Cannot invoke because is null 이 떠요
강의를 보며 따라하면서 기존 클래스들을 변형하여 진행할 때 test 코드 작성 시 다음과 같이 에러가 뜹니다처음에는 이런 문구가 뜨고 스프링부트 3.x 를 쓰고있어서 @ExtendWith(SpringExtension.class) //junit 5 로 변경하고 나서야 다음과 같은 문구가 뜹니다.강의에서 @RequiredArgsConstructor 를 쓰면 final을 선언해줘야한다고 해서 강의와 동일하게 진행했으나 service의 join에서 null값이 생기는 것 같은데 어디가 문제인지 모르겠습니다.java.lang.NullPointerException: Cannot invoke because "this." is nullbuild.grable 은 다음과 같습니다.plugins { id 'java' id 'org.springframework.boot' version '3.0.7' id 'io.spring.dependency-management' version '1.1.0' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies {implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-validation' //유효성 검증 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' //web view implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' // runtimeOnly 'com.mysql:mysql-connector-j' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' // testImplementation 'org.springframework.security:spring-security-test' //JUnit4 추가 testImplementation("org.junit.vintage:junit-vintage-engine") { exclude group: "org.hamcrest", module: "hamcrest-core" } } test { useJUnitPlatform() } tasks.named('test') { useJUnitPlatform() }Userpackage domain; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; import lombok.Setter; @Entity @Getter @Setter //@NotNull public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", updatable = false) private Long id; //auto increment @Column(name = "email", nullable = false) private String email; //id @Column(length = 200 ,name ="password") private String password; @Column(name = "name", nullable = false) private String name; @Column(name= "phone" ,nullable = false ) private String phone; @Builder public User(){ this.email =email; // this.name=name; } } UserRepositorypackage domain; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import org.springframework.stereotype.Repository; import java.util.List; @Repository public class UserRepository { @PersistenceContext private EntityManager em; public void save(User user){ em.persist(user); } public User findOne(String email) { //email 값으로 멤버값 반환 return em.find(User.class, email); } //리스트조회 public List<User> findAll(){ return em.createQuery("select u from User u", User.class) .getResultList(); } //특정값으로 조회 public List<User> findByName(String name) { return em.createQuery("select u fromUser u where u.name = :name", User.class) .setParameter("name", name) .getResultList(); } } UserServicepackage domain; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service @Transactional(readOnly = true) @RequiredArgsConstructor //final있는 field 로 생성자 public class UserService { private final UserRepository userRepository; // @Transactional public String join(User user){ validateDuplicateMember(user); // 중복 회원 검증 userRepository.save(user); //error : line 13 선언변수 그대로 가져와야함 return user.getEmail(); } private void validateDuplicateMember(User user){ List<User> findUsers = userRepository.findByName(user.getName()); if(!findUsers.isEmpty()) { throw new IllegalStateException("이미 존재하는 회원입니다."); } } } UserServiceTestpackage domain; import org.junit.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import static org.junit.Assert.assertEquals; //메모리 모드 DB 연계 테스트 //@RunWith(SpringRunner.class) //junit 4 @ExtendWith(SpringExtension.class) //junit 5 @SpringBootTest @Transactional //rollback public class UserServiceTest { @Autowired UserService userService; @Autowired UserRepository userRepository; @Test public void 회원가입() throws Exception { //Given User user = new User(); user.setEmail("fitplace@naver.com"); //email 로 검증 -> name은 중복 존재 가능성 o //When String saveEmail = userService.join(user); //Then assertEquals(user, userRepository.findOne(saveEmail)); } // @Test(expected = IllegalStateException.class) // public void 중복_회원_제외() throws Exception { // //Given // // //When // // //Then // // } // }
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
++i. i++에대한 간단한 질문
안녕하세요 항상 수업 잘 듣고 있습니다.다름이아니라 어셈블리 코드로 보면 ++i가 i++보다 아주 약간의 리소스가 덜든다고 배워물론 아주 미묘한 차이겠지만 필요한 상황이 아니면 늘 ++i를 쓰려는 습관을 들려고하고있습니다.근데 선생님 코드는 for문을 돌리든 뭘할때 필요한 상황이 아니면 항상 i++로 코드를 작성하시던데 혹시 어떠한 사유가 있는건지 하여 질문드립니다...
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
atomic<uint32> _popCount 관련
안녕하세요. 궁금한 게 있습니다._popCount에 관해 질문이 몇 개 보이는데 좀 다른 내용이지만 저도 관련해서 질문합니다._popCount 변수가 Pop 함수를 실행하는 쓰레드 개수를 추적하는 것인데요, Pop함수를 실행하는 쓰레드의 개수가 아닌, Node* oldHead = _head;이 코드에서 얻게 되는 동일한 포인터를 참조하는 쓰레드의 카운트를 추적해야 하는게 아닌가 하는 의문이 듭니다. 이를테면 Pop을 실행하는 쓰레드가 한 50개가 있다고 하면 계속해서 _popCount는 1이 될 수가 없을 거 같은데요, 실제로 테스트 해봤는데 Delete 함수로 진입을 안 합니다. 제가 잘 못 생각하는 부분이 있을까요?