묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
room계층 소켓 연결 후 소통 질문
서버쪽에선 socket.on("join", (data) => { socket.join(data); // 방 참가 socket.to(data).emit("join", { user: "system", chat: `${socket.request.session.color}님이 입장하셨습니다.`, }); });이렇게 room계층 소켓으로 연결했고, 해당 room으로 join이벤트를 보냈는데 브라우저 쪽에선const socket = io.connect("http://localhost:8005/chat", { path: "/socket.io", }); socket.emit("join", new URL(location).pathname.split("/").at(-1)); socket.on("join", function (data) {...}/chat 네임스페이스 계층 소켓으로 밖에 연결하지 못했는데 어떻게 해당 room계층으로 온 join이벤트인지 구별하는 게 가능한지 궁금합니다. room계층보다 상위인 네임스페이스 계층에 연결했으니 어느 room으로 오든 네임스페이스만 같으면 모든 이벤트를 다 감지하게 되는 것 아닌가요?
-
미해결
blob으로 영상 재생하기
react - spring 으로 블로그 만들기 프로젝트를 개인적으로 하고있습니다.image를 blob형태로 가져와서 띄우는 것 까진 잘 되는데, 영상 재생이 원활히 되지 않아서 질문을 남깁니다. public ResponseEntity<Resource> getVideo(String videoName) throws IOException { String fileDirectory = "src/main/resources/static/video/"; String fileName = videoName + getExtension(fileDirectory, videoName); Path videoPath = Paths.get(fileDirectory + fileName); Resource videoResource = new UrlResource(videoPath.toUri()); System.out.println("videoResource = " + videoResource); String videoUrl = "http://localhost:4000/videos/" + fileName; System.out.println("videoUrl = " + videoUrl); return ResponseEntity.ok() .contentType(MediaType.valueOf("video/mp4")) // 비디오 타입에 맞게 설정 .body(videoResource); }서버측에서 다음과 같이 로컬에 저장된 영상을 프론트로 보내줍니다.(임시)이후 프론트에서 이를 재생하려고 하는데,export const getVideoApi = async (token: string | null, videoName: string | number) => { const url = `http://localhost:4000/api/videos/${videoName}`; try { const response = await axios.get(url, { headers: { Authorization: `Bearer ${token}`, }, responseType : "blob", }); console.log(response.data) const videoUrl = URL.createObjectURL(response.data); console.log(videoUrl) return videoUrl; } catch (error) { console.error("Error fetching board data:", error); return null; } };video를 다음과 같은 api호출로 가져오고, 저장하였습니다. useEffect(() => { async function fetchProfileImage() { try { if (!boardData) return; // Return early if boardData is not available yet const token = cookies.token; const profileUrl = await getImageApi(token, boardData.boardWriterEmail); setProfileImages({ [boardData.boardNumber]: profileUrl }); const imageUrl = await getImageApi( token, boardData.boardNumber.toString() ); setBoardImages({ [boardData.boardNumber]: imageUrl }); const videoName = boardData.boardNumber.toString(); const videoBlobUrl = await getVideoApi(token, videoName); setVideoUrl(videoBlobUrl || undefined); } catch (error) { console.error("Error fetching profile image:", error); setVideoUrl(undefined); } } fetchProfileImage(); return () => { // Clean up Blob URL when the component unmounts if (videoUrl) { URL.revokeObjectURL(videoUrl); } console.log(videoUrl); }; }, [boardData,cookies.token]);그리고 다음과 같이, 게시물에 접속할 때, 게시물의 사진과 영상이 보여질 수 있도록 useEffect()를 사용하였고 여기서 받은 링크를 {boardVideo && ( <div> <video width="60%" controls style={{ display: "block", // Center align the video margin: "0 auto", // Center align the video }} > <source src={videoUrl || "default.mp4"} type="video/mp4" /> Your browser does not support the video tag. </video> <p>videoUrl: {videoUrl}</p> </div> )}이런식으로 보여주려고 하고있습니다. (p,div 태그는 로그를 찍어보기 위함)브라우저 개발자 도구에서, 영상이 제대로 프론트로 넘어오는 것 까진 확인이 되는데, 생성한 blobUrl로 영상을 불러오는 것이 잡히지 않았고, 또한 bloburl을 2번 생성하는 것을 확인할 수 있었습니다.리액트에 관한 지식이 많이 부족하고, 공부하지 않은 터라, useEffect를 사용하는데 미숙해서 그런건지, 왜 2번이나 bloburl을 만드는지도 이해가 가지 않고, 영상이 재생되지 않는 부분도 이해가 가지 않습니다. blob으론 영상을 재생할 수 없는 것이라면, 서버에서 url을 string으로 넘겨주는 방식을 사용해야하는건지도 궁금합니다. 아래와 같이 blob 객체가 2번 보이고, url도 두개가 생성됩니다. Blob {size: 34970691, type: 'video/mp4'}fileApis.ts:53 blob:http://localhost:3000/c7bb643e-2d0b-4838-9b8b-dd0863a349d4fileApis.ts:50 Blob {size: 34970691, type: 'video/mp4'}fileApis.ts:53 blob:http://localhost:3000/dfe61c3b-8faa-4b01-8a3c-1ef7a743ce6a 제 이해가 많이 부족합니다. 혹시 blob방식을 사용하는 것이 옳지 않은 건지, 스프링과 리액트를 같이 사용할 때 (혹은 타 프레임워크를 사용하더라도,) 서버에 저장되어있는 영상을 프론트에서 재생하는데 좋은 방법이 있다면 알려주시면 감사하겠습니다.
-
미해결데이터 분석 SQL Fundamentals
with temp_01 as () 관련 질문입니당
안녕하세요 선생님혹시 with temp_01 as ()를 사용해야만 하는, 특정 상황이 있을까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시 객체의 재정의된 equals 메서드를 호출하게 되면 초기화되나요?
@Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Post post)) return false; return id.equals(post.getId()); }위에 처럼 equals 메서드를 재정의했고 id값만 사용해 객체를 비교했습니다. 예상한걸로는 id값만 사용했기에 객체가 초기화 되지 않는걸 예상했고 하지만 실제로 동작에서는 초기화가 되는것을 확인했습니다. @Override public boolean equals(Object o) { return true; }그리고 테스트 하기위해 위에 처럼 필드를 사용하지 않게 재정의를 했고 하지만 역시 equals를 사용하면 객체가 초기화 되었습니다. 이유가 무엇인가요? 스택오버플로우 에서는 equals가 재정의되면 프록시 객체에서는 원본객체로 위임한다는 답변이 있습니다. 원본 객체로 위임하면서 초기화가 발생하는것일까요?
-
미해결스프링 핵심 원리 - 고급편
로그 추적기의 요구 사항이 public 메서드 호출을 로깅하는 건데, private 메서드 호출까지도 로깅하는 걸로 하고 싶다면 어떻게 해야할까요?
로그 추적기의 요구 사항이 public 메서드 호출을 로깅하는 건데, private 메서드 호출까지도 로깅하는 걸로 하고 싶다면 어떻게 해야할까요? private 메소드는 AOP 적용 불가능한대, 디버깅시 어떤 흐름으로 함수가 호출되지 파악하기 위해서 private 메서드 호출도 봐야되는 것 같고, 그러면 어떻게 하는지 궁금해서 여쭤봅니다. 혹시 모니터링 툴로 함수의 전체적인 호출 흐름을 파악할 수 있나요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
nestjs graphql API 요청 관련 질문
안녕하세요. express 에서 rest 방식에서는 API를 생성할 때, get이나 post 등의 메소드 방식을 정하고 주소를 지정하여 프론트엔드에서 fetch 나 axois 함수에 주소를 기입하여 API 요청을 했었습니다.graphQL 방식의 nestjs에서는 프론트엔드에서 API 요청을 보낼 때 어떤 방식으로 하나요? 따로 주소 같은 것을 지정해주지는 않는 것같은데..똑같이 fetch 나 axois 함수를 통해 요청을 하는 건가요?
-
해결됨디지털포렌식 입문자를 위한 디지털포렌식 전문가 2급 실기 시험대비 강의(Encase/Autopsy)
EnCase 기능 중 질문있습니다.
안녕하세요. 교수님.교수님 강의를 잘 듣고 있습니다.질문드립니다.EnCase 기능중 분석을 위한 Acquire 와 Process가 있습니다.Acquire는 이미징을 위한 E01을 생성하면서 분석을 같이 진행Precess는 E01등의 파일을 분석하기 위한 기능이렇게 생각하면 되는지 궁금합니다.만약에 맞다면 Acquire의 기능중 무결성이 유지가 되는지 그 밖에 이기능의 차이점이 궁금합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
완강하고 공부할거 질문입니다
완강하면 코테,CS 준비하면 되나요?근데 코테 언어는 어떤 걸로 준비해야 할까요
-
미해결
vscode 파이썬 실행 bash오류
안녕하세요 vscode로 파이썬을 실행하면 저런 오류가 뜨는데 vscode랑 파이썬 둘다 지우고 다시 설치했는데도 해결이 안되고 아무리 구글링해도 같은 오류가 뜨는 분이 없는데 저 오류는 왜 나는거고 어떻게 해결하면 좋을까요??
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
h2 실행
맥북 사용자 입니다.h2를 실행할 때 마다 터미널콘솔창에서 실행해야하나요?처음에 모드변경해주면 그다음부터는 파일에서 바로 실행해도 되나요??
-
미해결[코드팩토리] [입문] 9시간만에 끝내는 코드팩토리의 Javascript 무료 풀코스
scope에 대해 질문 있습니다.
var i = 999; for (var i = 0; i < 10; i++) { console.log(i); } console.log(`i in global scope : ${i}`); // 10 ------------------------------------------------------------------- i = 999; for (let i = 0; i < 10; i++) { console.log(i); } console.log(`i in global scope : ${i}`); // 999 안녕하세요 강의 너무나 잘 듣고 있습니다!scope에 대해 배웠는데 내용이 헷갈려서 질문을 올리게 되었습니다."var은 함수를 선언할 때만 스코프가 생긴다. 블록레벨 에서는 var을 썼을때 새로운 스코프를 만들어내지 않는다. 그래서 global scope인 i가 for으로 바꿔준 값인 10이 출력된다."라고 하셨는데 이 부분을 계속 돌려보아도 이해가 잘 가지 않습니다..스코프를 만들지 않는 것과 for에서 10으로 바꿔준 값이 global scope인 i에도 적용이 되는 것과 무슨 상관이 있는 건가요..?? 감사합니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
localhost:8080 웹 페이지가 생성되지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강사님 코드를 따라 적었는데 해당 오류가 발생하면서 위와 같이 서버가 생성되지 않습니다.왜 그런건가요?답변 부탁드립니다 더위 조심하세요 혹시나 필요하실꺼 같아 build.gradle 코드도 첨부합니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
자바 스프링 강의를 수강하면서 자바를 공부해도 되나요?
안녕하세요컴퓨터 전공으로 대학교 3학년에 재학 중인 학생입니다. 다름이 아니라 현재 김영한 강사님 강의를 스프링 입문과 기초를 수강한 상황입니다.그리고 DB 기초와 웹 MVC 강의를 함께 수강 중입니다.하지만 강의를 들으면서도 이해가 안되는 부분이 많았습니다.그래서 다음과 같은 고민이 생겼습니다.1.강사님 강의를 들으며 이해가 안되는 부분은 인터넷을 찾아가며 들으니 강의에서 이해 못하는 부분도 많지만 확실히 쉽게 설명해주셔서 많이 배워가는 느낌이 듭니다. 하지만 자바 스프링 자체가 어렵고 이해가 안되는 부분이 많아 강의를 들을 땐 항상 "지금 이렇게 이해가 안되는 상태로 배워도 내가 직접 사용할 수 있을까? 코드를 작성할 수 있을까? 라는 걱정이 듭니다.원래 다른 분들도 자바 스프링을 배우면서 이런 고민을 겪게 되는 건가요?아니면 자바 언어나 다른 개념들이 익숙하지 않아 저만 겪고 있는 문제점인가요?만약에 후자가 문제라면 자바 언어 및 다른 개념을 어떻게 채울 수 있는건가요?2.현재 계획은 자바 언어 공부 + 자바 스프링 수강 => 작은 프로젝트 진행 + 강의 복습 => DB 강의 심화 + 웹 MVC 심화 강의 수강 이렇게 할 계획인데 괜찮을까요? 답변 부탁드립니다더위 조심하세요
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
git 실습 파일 clone 실패
안녕하세요, 맛비님. 강의 잘 보고 있습니다. 다름이 아니라, " Verilog HDL [HDL 1장] Testbench 에서 Clock 생성하기 " 강의에서 git 실습파일 clone에 실패해서 문의 드립니다. 강의 대로 git clone https://github.com/matbi86/sulgyedokhak.git 를 입력하니 첨부파일과 같은 결과가 나옵니다. 설치 완료가 시작 단계의 끝인 줄 알았는데 아직 한 단계 남았었네요 ^^ 답변 부탁드립니다.
-
해결됨실무자가 알려주는 CANoe - CAPL과 Panel 기본 사용법
준비하고 계신 다음 강의가 있을까요??
안녕하세요,,,자동차 업계 종사자인데잘 보고 있습니다...내용과 설명이 너무 잘 되어 있어서 다음 강의도 기다려지는데,,,혹시 어떤걸 해야겠다거나 준비중이신 강의 같은게 있을까요??감사합니다.
-
해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
저는 자바로 공부중인 학생인데요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.자바로 수업을 따라가기엔 힘든가요?아니면 충분한가요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
mysql드라이버와 H2 드라이버는 다른건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. " 반면에 URL이 jdbc:h2 로 시작했는데 MySQL 드라이버가 먼저 실행되면 이 경우 본인이 처리할 수 없다는 결과를 반환하게 되고, 다음 드라이버에게 순서가 넘어간다."라고 강의 자료에 나와있습니다.이 부분이 잘 이해가 안됩니다URL이 JDBC:h2로 시작했는데 MySQL 드라이버가 먼저 실행되면이 무슨 의미인가요??H2도 DB의 한 종류이고 MySQL도 DB의 한 종류이므로코드에서 H2를 사용할지 MySQL을 사용할지 하나를 선택해서 코드를 작성하고 그 뒤에 작성된 코드에 따라 H2 드라이버나 MySQL 드라이버를 선택해서 실행되는것 아닌가요??
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
ReferenceError: boardId is not defined
안녕하세요 선생님! 전에 Bad request 400 문제로 글 올렸던 사람입니다답변 주신 부분은 잘 확인 했습니다.그런데 variables는 잘 작성했구 연결도 했습니다. 그런데 useEffect로 boardId가 유효하면 실행, 아니면 loading이라는 문구를 내보내게 작성한 후 확인을 해보니 아래와 같은 문제가 있었습니다console.log(router.query.boardId);에서 undefined가 떳길래useRouter가 작성됐는지 import했는지랑 확인했고, 문제 없었습니다. 또, ReferenceError: boardId is not defined 메시지가 떳습니다 . . ] 그래서 다른 방법으로 해결을 해보고자console.log(router.query.boardId);가 담긴 index에서 import를 선언하는 부분 최상위에 "use client"를 작성하고, import { useRouter } from 'next/router' 를 'next/navigation'으로 바꿨더니아래와 같이 오류가 확인 됐습니다.. .아래는 문제가 있는 컴포넌트입니다(useEffect 지움, next/router로 바꿈)"use client" import { useRouter } from "next/router"; import { gql, useQuery } from "@apollo/client"; import { Avatar, AvatarWrapper, Body, BottomWrapper, Button, CardWrapper, Contents, CreatedAt, Header, Info, Title, Wrapper, Writer } from "../../../styles/boardnewpage"; export const FETCH_BOARD = gql` query fetchBoard($boardId: ID!) { fetchBoard(boardId: $boardId) { _id writer title contents createdAt } } `; export default function BoardDetailPage() { const router = useRouter(); console.log(router.query.boardId); const { data } = useQuery(FETCH_BOARD, { variables: { boardId: router.query.boardId }, }); if (!data) { // boardId가 없는 경우에 대한 처리 (예: 로딩 스피너 표시 등) return <div>Loading...</div>; } return ( <Wrapper> <CardWrapper> <Header> <AvatarWrapper> <Avatar src="/images/ic_profile.png" /> <Info> <Writer>{data?.fetchBoard?.writer}</Writer> <CreatedAt> {data?.fetchBoard?.createdAt} </CreatedAt> </Info> </AvatarWrapper> </Header> <Body> <Title>{data?.fetchBoard?.title}</Title> <Contents>{data?.fetchBoard?.contents}</Contents> </Body> </CardWrapper> <BottomWrapper> <Button>목록으로</Button> <Button>수정하기</Button> <Button>삭제하기</Button> </BottomWrapper> </Wrapper> ); } 아래는 위 컴포넌트를 실행하고 나서 뜨는 화면 입니다if문을 지우고 나면 저번에 올렸던 질문 글 처럼 화면은 넘어가는데 varibales 데이터들만 안뜹니다...! + 로딩 뜬 화면의 개발자도구 화면 입니다!! 확인해주시고 답변 주시면 감사하겠습니다.!!!😂🥹
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
혹시나 18분에 나만의 페이지 합칠때 안뜨시는 분들
저의 경우 '나만의 페이지'라고 하지 않고, my_page(소문자)로 해서 실행했는데, 안되더라구요.... 계속 왜 안되지 해메고 있었는데 my_page를 My_page(대문자)로 하니까 실행되는걸 확인했습니다. 혹시나 앞글자를 소문자로 하신분들은 대문자로 바꿔주시면 나올거 같아요~여기서 소문자로 import했을경우엔 왜 나오지 않을까요? react의 규칙인가요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
변수 연결이 안됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강사님을 똑같이 따라했는데위와 같은 오류가 발생합니다 왜 그런건가요?