묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
영구적/일시적 리다이렉션은 논리적인 의미 구분인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]영구적 리다이렉션과 일시적 리다이렉션이 의미에 따라 나눠지는것 말고 따로 기술적인 차이가 있는 지 궁금합니다. 관련하여 구체적인 질문 2개가 있습니다. 두 리다이렉션 모두 요청을 보낸 후 응답의 Location 헤더를 참고하여 URI 를 이동하게 되는데 그럼 두 리다이렉션의 기능은 동일하지만, 단순히 내가 처음에 보냈던 URI 가 유효한 주소인지, 그렇지 않은지에 따라, 즉 의미에 따라 나눠진건가요?일시적인 리다이렉션 설명에서 리소스의 URI가 일시적으로 변경된 것이기 때문에 검색 엔진 등에서 URL 을 변경하면 안된다고 하셨는데, 응답의 location 을 참고해 다른 URL 로 요청을 보내는것은 이와 다른 의미인가요?(예시의 /order -> /order-result/19 와 같은) 그렇다면 검색 엔진에서 URI을 변경하면 안된다는게 무슨 뜻인지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
Bean Configuration / Dependency Injection 에 관해 질문드립니다 :)
안녕하세요 영한님,Dependency Injection에 관해서 궁금한점이 있어 질문드립니다. 제가 실무중이나 code review중에 아래같은 코드를 자주봤는데 지금까지는 그냥 그런가보다 하고 넘어갔지만, 그래도 강사님께 좀 자세한 mechanism을 들으면 좀더 개념확립에 도움이 될것같아서 질문드립니다.//SecretVault.java @Component public class SecretVault { private final String secret = "Secret123"; public SecretVault() { } public String getSecret() { return this.secret; } } //SecretService.java public class SecretService { private SecretVault vault; public SecretService() { } public SecretService(SecretVault vault) { super(); this.vault = vault; } public String revealSecret() { return vault.getSecret(); } } //CoreApplication.java @SpringBootApplication public class CoreApplication { public static void main(String[] args) { SpringApplication.run(CoreApplication.class, args); } @Bean SecretService secretService(SecretVault vault) { return new SecretService(vault); } } //테스트 클래스 //JUnit Test Pass //MiscTest.java @SpringBootTest public class MiscTest { @Autowired ApplicationContext ac; @Test void testSecret() { SecretService service = (SecretService) ac.getBean("secretService"); Assertions.assertEquals(service.revealSecret(), "Secret123"); } }테스트 결과, secretService bean안에 vault 필드가 제대로 주입되어있습니다. 빈 생성하는 method parameter가 spring이 관리하는 bean이면 저절로 찾아서 넣어주나요? 저는 method parameter bean이 같은 configuration 클래스 안에서 생성되었을 경우에만 가능한걸로 알았는데, 위 예제의 dependency injection이 어떻게 일어나는지 궁금합니다.
-
미해결[게임 프로그래머 도약반] DirectX11 입문
스마트포인터에 대해질문있습니다
안녕하세요 gamobject 객체에서 addcomponet 를 호출 하여 weak_ptr 로 gameject 를 componet 클래스에서 참조하고있다고 할때 gameobject 가 소멸하면 component 도 소멸하는건가요?
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
lightsail instance를 종료해도 서버를 연결된 상태로 유지하려면 어떻게 해야 할까요?
안녕하세요. 강의 잘 보고 있습니다. lightsail instance 터미널에 연결후에 서버를 실행해 주고 난 뒤 터미널을 종료하면 어느정도 시간이 지나면 서버가 연결이 끊기네요. 계속 연결을 지속시키려면 어떻게 할 수 있을까요?
-
미해결
nextjs react-quill 이미지 저장 질문이용
nextjs에서 react-quill에서 이미지 업로드 시 nestjs에서 multer로 이미지 받아서 저장하려고 하는데 개발 초보라 아무리 구글링해도 왜 안되는지 모르겠네요 ㅜㅜ 포스트맨에서 nest.js upload api 보내면 정상적으로 파일 저장 되는데 next.js에서 upload 요청 보내면 nest.js에서 file이 undefined 출력됩니다. QuillEditor.tsx에서 const file = input.files[0] 콘솔로 찍어보면 아래 이미지처럼 표시되는데 이거 formdata 제대로 생성된게 맞나요? 구글링하면서 몇시간 테스트해도 안되네요. 포스트맨에서 요청하면 정상적으로 되는거 보면 next.js 쪽 문제 맞는거 같은데 아무리 구글링해봐도 이유를 모르겠네요.. QuillEditor.tsx"use client"; import ReactQuill from "react-quill"; import { useMemo, useRef, useState } from "react"; import "react-quill/dist/quill.snow.css"; import imgUpload from "./imgUpload"; export default function QuillEditor() { const [content, setContent] = useState(""); const quillRef = useRef(null); const imageHandler = () => { const input = document.createElement("input"); input.setAttribute("type", "file"); input.setAttribute("accept", "image/*"); input.click(); input.onchange = async () => { const file = input.files[0]; // 현재 커서 위치 저장 // const range = getEditor().getSelection(true); // const range = quillRef.selection; // 서버에 올려질때까지 표시할 로딩 placeholder 삽입 // quillRef.getEditor().insertEmbed(range.index, "image", `'로딩중'`); const formData = new FormData(); formData.append("file", file); try { // console.log(formData.get("file")); // console.log(url); // quillRef.getEditor().deleteText(range.index, 1); // quillRef.getEditor().insertEmbed(range.index, "image", url); // quillRef.getEditor().setSelection(range.index + 1); const result = await imgUpload(formData); // console.log(result); } catch (error) { console.log(error); } }; }; const modules = useMemo(() => { return { toolbar: { container: [ [{ size: ["small", false, "large", "huge"] }], [{ header: "1" }, { header: "2" }, { font: [] }], [{ align: [] }], ["bold", "italic", "underline", "strike"], [ { list: "ordered" }, { list: "bullet" }, { indent: "-1" }, { indent: "+1" }, ], [ { color: [], }, { background: [] }, ], ["link", "image", "video"], ], handlers: { image: imageHandler }, clipboard: { matchVisual: false, }, }, }; }, []); const formats = [ "font", "header", "bold", "italic", "underline", "strike", "blockquote", "list", "bullet", "indent", "link", "align", "color", "background", "size", "h1", "image", "video", ]; return ( <> <div> <ReactQuill ref={quillRef} style={{ width: "800px", height: "600px" }} modules={modules} formats={formats} onChange={(e) => { setContent(e); console.log(e); }} // onChange={setContent} theme="snow" /> </div> </> ); } imgUpload.tsimport axios from "axios"; export default async function imgUpload(file: any) { console.log(file.get("file")); const result = await axios .post( `${process.env.NEXT_PUBLIC_API_SERVER}/files/upload`, { file, }, { headers: { // Accept: "image/*", "Content-Type": "multipart/form-data", }, } ) .then((res) => { return res.data; }); console.log(result.data); return result; } nest.js @Post('upload') @UseInterceptors(FileInterceptor('file')) async uploadFile( @UploadedFile() file: Express.Multer.File, ) { console.log(file); // return await this.filesService.fileUpload(files); }
-
해결됨개발자를 위한 쉬운 도커
sudo docker-compose up -d
안녕하세요! 먼저 정말 유익한 강의 감사합니다. 깃허브 오픈소스의 리드미 파일이나블로그에서는 주로 아래와 같은 명령어가 보였습니다.sudo docker-compose up -d그런데 강의에서 보이는 명령어는 docker와 compose 사이에 대쉬('-')가 보이지 않는데요.Docker의 버전이 올라가면서 명령어도 바뀐건가요?
-
미해결Next + React Query로 SNS 서비스 만들기
리액트 v5 useQuery onSuccess 관련 질문드립니다!
리액트 쿼리v5 부터 useQuery onSuccess 가 사라진걸로 알고있는데요! useQuery로 데이터패칭이 끝나면 zustand나 전역상태관리에 받아온 데이터를 저장하고싶은데 어떤식으로 하면될까요??
-
해결됨Flutter로 SNS 앱 만들기
검색하는거는 어떻게 하는겁니까
저는 안보이네요..
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
<WHERE>태그 대신
<WHERE>태그 대신 WHERE 1=1 주고 강제적으로 true 준 이후에 and조건을 <if>안에 사용하는데 그게 더 안좋은 방법일까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
자바 17버전으로 업데이트했는데도 윈도우에서 빌드가 안 됩니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 빌드가 잘 되지않아 여러 질문글을 읽고hello-spring 폴더를 복사하여 C폴더 아래 dev 폴더를 넣어 빌드를 진행했습니다.이런 오류 내용이 뜨는데 뭐가 문제일까요? gradle 파일에서 자바 17버전을 요구하는 것을 확인헀고, 자바 17을 설치하고 환경변수 JAVA_HOME에 경로 넣기, path에서 \bin 변수 넣어 최상단으로 올리기까지 설정했습니다. cmd에서 버전확인하면 17로 나옵니다. 계속 빌드가 안 되는데 원인을 모르겠습니다 뭐가 문제일까요..?
-
해결됨AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
강의 소스코드 제공 요청드립니다.
강의 타이핑 그대로 따라했는데도, npm run build, npm run test에서 redis time out error가 발생하네요. 버전이 안맞는건지.. 강사님과 동일하게 버전 맞추고 진행하고 싶은데 package.json이라도 제공해주시면 감사드리겠습니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
answer 변수 없이 풀기
function solution(n) { if (n == 0) return ""; return solution(Math.floor(n / 2)) + String(n % 2); }
-
미해결[리뉴얼] 처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화 전과정 익히기) [데이터분석/과학 Part1]
XML 파일 파싱 시 read_xml()함수 사용
강의 중 xml파일을 파싱하는 내용이 두 강의에 걸쳐서 길게 있는데 판다스 라이브러리 1.30 이상부터 쓸 수 있다는 pandas.read_xml 함수를 이용하면 안될까요? csv는 read_csv()를 자주 사용하는 것 같은데 xml 파일은 매번 복잡하게 데이터 프레임으로 바꿔야 하는건지 두렵네요..ㅎ 혹시 read_xml 함수를 일부로 사용하지 않으시는 거라면 그 이유도 궁금합니다!
-
미해결김영한의 실전 자바 - 중급 1편
ChronoUnit, ChronoField 주입 에러
현재 java 21버전으로 강의를 따라가고 있었고 ChronoUnit, ChronoField 부분을 찾지 못하는 것 같습니다. import java.time.temporal.ChronoUnit 으로 import 해도 intellij 가 찾지 못하고 있습니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
질문있습니다
안녕하세요! 강의 내용 복기중에 몇가지 의문점이 생겨 질문드립니다! 서비스에서 MaxSessionCount, SessionCount의미 -> 제가 이해한거로는 클라가 한명 연동 될 때마다 SessionCount가 1씩 증가하고 MaxSessionCount는 최대 허용 접속 수라고 이해하고 있는데 맞는지 궁금합니다.-> 이게 맞다면 한계치는 어느정도로 정하고 기준은 무엇인지 궁합니다. 리스너에서 AcceptEvent N개 사용의 의미-> StartAccept 부분에서 5개 만들고서 그거를 각각 Register에 등록했다는 말은... 동접 5명을 받을 수 있다는 의미인가요? -> 만약 동접 의미로의 N개 사용이라면 포폴 수준에서는 1개만 사용해도 무방한가요? 테스트해보니까 패킷 전송 속도에는 별 차이가 없어보여서요! C++ 서버 & 유니티 클라 연동 ? -> 패킷 정보가 Proto가 중간 역할 해주고 있고 직렬화 하면서 결국 정수로 데이터 핑퐁이라고 이해되고있는데 이게 맞다면 저런 관계의 연동에도 문제가 없나요? 이제 강의 막바지가 되어가고 복기를 쭉 해나가면서 질문들이 계속 나올것 같은데 지금처럼 커뮤니티 게시판에 질문드리면 될까요? 아니면 따로 질문 올리는 곳이 있을까요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타임리프에서 어떤 부분이 typeMismatch 오류 메시지를 출력하는 건가요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.<div class="field-error" th:if="${errors?.containsKey('price')}" th:text="${errors['price']}"> 가격 오류 </div>타임리프의 이 부분이 typeMismatch에 대한 메시지 코드인 '숫자를 입력해주세요' 를 출력하는 건가요? 아니면 <input type="text" id="price" th:field="*{price}" th:errorClass="field-error" class="form-control" placeholder="가격을 입력하세요">이 부분의 th:field가 오류 감지하고 출력하는 건가요
-
해결됨블렌더 입문 : UX/UI 디자이너를 위한 3D 아이콘으로 배우는 블렌더!
렌더 이미지가 흐리게 보입니다
제가 보는 렌더 이미지, 추출했을 때 이미지 모두 흐릿하게 보입니다.선명하게 보일 수 있도록 해결할 방법이 있을까요?가장 우측에 렌더링 옵션도 같이 캡쳐했습니다. 렌더링으로 추출한 이미지
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Oracle12cDialect 오류 해결 방법
(사진)
-
미해결
스프링에서 @CreatedBy 와 AuditorAware 의 활용에 질문 드립니다!
@CreatedBy을 이용하면, 디비에 데이터가 입력될 때마다 작성자의 정보를 자동으로 기입할 수 있어서 많은 분들이 이용하시고 있습니다. 그리고 해당 @CreatedBy 값에 들어 갈 값은 AuditorAware을 통해 만들 수가 있는데요.<Q. 질문>그러나 만일.. 아래와 같이 생성시 점에서 ID 값과 Name 을 입력해 주어야한 다면... AuditorAware를 어떻게 이용해서 아래의 내용을 기입할 수 있는지 알고계신 분 있으실까요?(@CreatedBy 가 특정 AuditorAware 파일을 지정할 수 있으면 될 것 같은데... 방법을 못찾았습니다 ㅠ)@CreatedByprivate Long creatorId;@CreatedByprivate Stirng creatorName;
-
해결됨대용량 채팅 TPS 처리를 위한 웹소켓 통신 만들며 학습하기
app.js를 여러 번 실행했음에도 불구하고, 로그가 단 한 번만 출력됨
app.js를 여러 번 실행했음에도 불구하고, 로그가 단 한 번만 출력됩니다. 포트 충돌 문제인가 해서 8080 포트 죽여보고 9090으로 바꿨는데도 안됩니다. ㅜ[winston을 통한 로깅 설정 및 서버 시작하기] 수강 중입니다.