묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
이해한게 맞는지 궁금해요!
결국 idx번째 비트를 끄려면, idx번째 비트만 꺼져있는 수와 and 연산을 한다라고 이해하면 될까요?그리고 idx번째 비트만 꺼져있는 수를 만들기 위해서는 idx번째 비트만 켜져있는 수를 만들고 ~연산을 통해 비트를 반전시킨다라고 이해했습니다.
-
미해결디지털포렌식전문가 2급 필기 핵심 요약집[전자책]
요약집구매 문의
안녕하세요. 오늘 디지털포렌식2급 필기요약집을 구매했습니다!!먼저 요약본이 거의 없던 분야였는데 정말 깔끔하게 정리해주셔서 감사드립니다!!~제가 방금 다운받았던 파일이 작년8월버전이던데마지막시험이 작년10월이었어서 혹시 그 시험은 반영이 안되었는지,제가 다운받은 파일이 최신파일인지 여쭤보고자 질문남깁니다. 감사합니다:)
-
미해결실습으로 배우는 선착순 이벤트 시스템
서버 1대일때 Synchronized 사용
[Redis 활용하며 문제 해결하기 > 문제점 해결하기 01:19]강의에서 Synchronized 를 사용할때 서버가 여러 대가 된다면 적절하지 않다고 하셨는데, 그러면 서버가 1대 일때는 Synchronized 를 사용해도 괜찮은가요??
-
미해결스프링 핵심 원리 - 고급편
component 중복초기화 부분 추상클래스로 변경2
이렇게 구조를 바꾸었습니다이러면 프록시 체인이 되어서 잘 실행되던데 문제없는거겠죠?테스크 코드도 프록시 체인으로 똑같이 했습니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
GameRoom 질문드립니다.
안녕하세요. 강의 잘듣고있습니다.! GameRoom을 하나의 스레드로 jobqueue를 사용해서 공유자원을 관리 하면 lock에서는 자유롭지만 하나의 스레드인 만큼 많은 처리를 해야할 경우 딜레이가 생길수도 있을거라고 생각하는데 lock을 타이트하게 거는 방법보다 하나의 스레드에서 처리하는게 속도가 더 빠른가요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
학습 로드맵
안녕하세요. 좋은 강의 만들어주셔서 감사합니다.이번에 강의 업데이트가 된 김에 미뤄왔던 공부를 하려고 하는데요.가지고 있는 강의는 이정도가 있고,리액트 훅 정도는 알고 사용할 수 있는 정도인데, 공부 순서를 어떻게 하면 좋을까요? [보유 강의]따라하며 배우는 노드, 리액트 시리즈 - 기본 강의따라하며 배우는 노드, 리액트 시리즈 - 영화 사이트 만들기따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기따라하며 배우는 노드, 리액트 시리즈 - 챗봇 사이트 만들기따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기 (리뉴얼)따라하며 배우는 리액트, 파이어베이스 - 채팅 어플리케이션 만들기 (리뉴얼)따라하며 배우는 TDD 개발 (리뉴얼)따라하며배우는 도커와 CI환경 (리뉴얼)
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
git에서 커밋을 했는데, 계속 진행해도 되는지의 여부
40강. git 기초사용법을 듣고 있습니다. 코드를 github에 올리는 과정에서 처음에는 git add . 작성 시 아래와 같이 에러가 나타났습니다위와 같은 과정을 거쳤고, 커밋이 반영된듯 싶으면서도 fatal: unknown write failure on standard output이라는 문구가 떠 다음 과정을 진행하기 찝찝합니다. 이전에 git add .시 실행은 된 것 같지만 warning이 난것도 나중에 문제가 될것 같습니다..감사합니다.
-
미해결PowerApps 2단계, 우리 회사에 필요한 모바일 앱 만들기
건의사항 제출 버튼에서 x가 뜨는 현상
PowerApps 2단계, 우리 회사에 필요한 모바일 앱 만들기앱 1 - 건의사항 App 만들기자동화 하기 - Power Automate끝 부분 질문입니다. 흐름도 완성되어 제대로 쉐어포인트에 목록작성 및 이메일 발송이 되는데, 버튼에 Onselect에 적용할 때 문제가 됩니다. 힌트라고는 '데이터형식이 '텍스트'여야하는데 '컨트롤'이라서 안된다' 라고만 뜨는 것 같은데 방법이 없을까요?
-
해결됨실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
toHaveClass 테스트코드 관련하여 질문 남깁니다!
안녕하세요 현재 섹션2 관련하여 강의 듣고 있는 수강생입니다. 다름이 아니오라, 현재 강의에선 순수 css를 통해 클래스명 테스트 코드를 작성해주셨는데요..! 만약에 css 모듈이나, vanilla-extract 같이 클래스명이 동적으로 생성되는 경우에는 어떤식으로 테스트 코드를 작성해야할까요 ? 예전에 혼자서 vanilla-extract 관련해서 테스트 코드를 작성해보려고 했던적이 있는데, 단순히 toHaveClass로만 하려고하니까, 클래스명이 동적으로 결정이 되어서 에러가 계속 발생하더라구요..! (예를 들어서 클래스명이 header라면, headerhnfgbvds341 이런식) 강의 너무 잘 듣고 있습니다! 읽어주셔서 감사합니다. import React from "react"; import { render, screen } from "@testing-library/react"; import TestComponent from "@/components/TestComponent"; import { testContainer } from "@/components/testComponent.css"; describe("Example Component Test", () => { test("클래스명에 대한 테스트", () => { render(<TestComponent />); const exampleElement = screen.getByText("TestComponent"); expect(exampleElement).toHaveClass(testContainer); }); }); ```
-
미해결버그헌팅과 시나리오 모의해킹 전문가 되기
45010.c 파일 문의
권한 상승 단계 - 시스템 커널 취약점을 이용한 상위 권한 획득강의에서 45010.c 파일을 45010으로 만들고./45010으로 실행했는데 [!] failed to load prog 'Permission denied'이렇게 권한 문제가 나옵니다. 어떻게 해야 위 오류가 풀릴까요?
-
미해결코틀린 문법부터 실무까지 (실전 자바->코틀린 변환)
build.gradle.kts 변경시 오류가 발생합니다.
안녕하세요. build.gradle.kts 로 변경하고 내용을 입력했는대 오류가 발생해서 질문드립니다.해당 파일에 전체 빨간줄이 그어지며 there are no configurations available kotlin 라는 메시지가 뜨는대요 실행자체는 되는대 문제는 util 파일 변경 강의를 수강하려고 convert to kotlin 을 누르니까 kotlin 설정이 안되어 있다고 나오면서 변환이 되지 않습니다. 제가 인텔리제이 2020년 버전을 사용중인대 kotlin버전이 최대 1.6까지 설치가 되더라고요 kts 파일안에는 1.9.20버전이던대 이것때문에 인식을 못하는걸까요? ㅠㅠ1.6으로 kotlin 버전값을 바까도 인식을 못하는대 도움이 필요합니다. 이렇게 뜨고요... 물론 cache clean restart랑... gradle 폴더 지우고 실행해도 마찬가지내요...회사 컴퓨터에 설치된 intellij 버전도 동일해서 해밨는대 증상은 동일하고요...
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
Lifecycle 강의에서 두 문자열 슬라이스를 비교해 긴 문자열 슬라이스를 리턴하는 것 관련 질문
강의 내용에서는 어떤 값이 길지 컴파일러가 예측하지 못하기 때문에 라이프사이클을 명시해야한다고 했는데 이 부분이 이해가 되지 않습니다로컬변수를 리턴하려고 하는 게 문제가 되는게 아닌가요?
-
해결됨제미니의 개발실무 - 지속 성장 가능한 소프트웨어를 만들어가는 방법
모듈에 대한 단방향 의존
안녕하세요. 제미니님 이번에도 좋은 강의를 제공해주셔서 감사합니다.모듈 분리에서 궁금한 내용이 있는데요. 제미니님이 제공해주신 PaymentAPI 와 DB 모듈을 별도로 했다고 했을 때 API 규격에 맞게 DB 모듈이 구현이 되어야 한다고 생각하고 있습니다. 즉, 해당 PaymentAPI 에서 제공하는 DB 접근에 대한 인터페이스를 DB 모듈이 구현하는 의존성 역전 원칙을 적용한 상황입니다.하지만, 이 상황에서 단방향 모듈 참조를 하게 된다면 DB 모듈은 PaymentAPI 가 제공하는 인터페이스의 유무를 알 수가 없게 되는데요. 저는 위 문제에 대한 해결방법으로 두 가지가 떠오릅니다.모듈 분리 시 API 모듈에 인터페이스를 만들고 DB 모듈 교체에 따른 새로운 구현체를 구현한다.(모듈 교체에 따라 이전 모듈에 대한 클래스 참조가 사라져 컴파일에러가 발생하게 되고 주석처리가 필요하다) 모듈 교체 시 이전 모듈에서 사용했던 인터페이스를 하위 모듈에서 똑같이 생성해주고 동일한 인터페이스를 참조하도록 하여 상위 모듈에는 변화를 주지 않는다. (변화가 최소화되지만 인터페이스가 많을 수록 구현도가 올라간다. 인터페이스를 동일하게 만들거라는 보장이 되어야 한다.)1번 코드paymentAPI { // implementation 'project:paymentDB' // implementation 'project:paymentDB2' interface CommandPort { fun save(command: PaymentCommand) } class PaymentDBImplV1 : CommandPort { override fun save(command: PaymentCommand) { paymentDB.saveV1(command); // paymentDB2 모듈 사용 시 주석 처리 } } class PaymentDBImplV2 : CommandPort { override fun save(command: PaymentCommand) { paymentDB2.saveV2(command); // paymentDB1 모듈 사용 시 주석 처리 } } } paymentDB { implementation 'A.DB' } paymentDB2 { implementation 'B.DB' }2번 코드paymentAPI { // implementation 'project:paymentDB' // implementation 'project:paymentDB2' class PaymentAPILogic(val paymentDB: CommandPort){ fun save(command: PaymentCommand) { paymentDB.save(command); // paymentDB2 모듈 사용 시 주석 처리 } } } paymentDB { implementation 'A.DB' interface CommandPort { fun save(command: PaymentCommand) } class PaymentCommandImpl : CommandPort { override fun save(command: PaymentCommand) { DB.save(command); } } } paymentDB2 { implementation 'B.DB' interface CommandPort { fun save(command: PaymentCommand) } class PaymentCommandImpl : CommandPort { override fun save(command: PaymentCommand) { DB.save(command); } } }간단하게 코드를 작성하면 위와 같은 형태가 될 것 같습니다.제미니님은 어떠한 방향으로 설계를 하시는지 혹은 제 질문에서 제가 잘 못 이해한 부분이 있어 이러한 방법으로 사고가 흘러가는지 말씀을 들어보고 싶습니다.마지막으로 유튜브 및 인프런에서 귀한 지식과 귀한 시간을 제공해주셔서 항상 감사합니다!
-
미해결모든 개발자를 위한 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나 전역상태관리에 받아온 데이터를 저장하고싶은데 어떤식으로 하면될까요??