묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨바닥부터 만드는 언리얼 에이전트 (Liu)
혹시 언리얼 CEF기반 UI에서 한글 입력 오류 해결하신분??
한글 입력 오류 관련하여 혹시 해결방법이 있는지 궁금합니다.그냥 웹에서는 잘 되는데,언리얼 CEF 기반의 도커창에서는 다음 문자로 이동되어야 하는 받침이 사라지는 현상이 있습니다.예를들어 "아니" 라는 단어를 타이핑 할 때, "안" -> "아ㅣ" 로 타이핑 됩니다. ㄴ이 다음 글자로 옮겨지는게 아니라 없어지네요.혹시 해결하신분이 있으신가요?
-
해결됨바닥부터 만드는 언리얼 에이전트 (Liu)
크레딧 충전
클로드 콘솔에서 크레딧 충전이 안되네요.... 구매버튼이 활성화되지 않습니다. 확인하고 확인했는데도 1주일째 크레딧 충전을 못하고 있습니다.
-
해결됨이벤트부터 SPA까지, 상호작용 웹의 필수 엔진 - [DOM 완전 정복 Part 2]
stopPropagation()에 대해서 질문 있습니다.
안녕하세요?강의를 듣다가 궁금한 것이 있어서 글을 남깁니다.섹션 5에서 stopPropagation() 설명이 나올때 상위로 전파 차단이 라고 설명을 주셨는데,강의를 모두 듣고 보면 상위로 전파 차단 뿐만이 아니라 즉 캡쳐링 뿐만 아니라 버블링도 차단 해주는 걸로 이해가 되고 있습니다.혹시 상위로 전파 차단이란 것이 캡쳐링이 아닌 다른 의미로 쓰인건지 궁금합니다.상위로 전파 차단이 혹사 다른 의미로 쓰였다면 그 의미에 대해서 알 수 있을까요?
-
해결됨바닥부터 만드는 언리얼 에이전트 (Liu)
강의자료 누락
AgentTabBar.razor랑 AgentTabBar.razor.cs가 강의자료에서 누락된것 같습니다.
-
해결됨바닥부터 만드는 언리얼 에이전트 (Liu)
언리얼 에디터에서 에이젼트 실행 질문
에디터를 키면 자동으로 에이젼트가 켜지면서 서버가 실행되는 구조로 알고있는데, 언리얼이 켜져도 에이젼트가 실행되지 않고 하얀 창만 뜹니다. 에이젼트만 따로 실행하고 웹 사이트로 들어가면 작동 잘 되고 있습니다. 그리고 에이젼트를 따로 키고 언리얼 에디터를 실행하면 에이젼트가 종료됩니다. 에디터를 실행할 때 자동으로 에이전트도 실행 되도록 할 수 있을까요?
-
해결됨바닥부터 만드는 언리얼 에이전트 (Liu)
Rider 설치시 타깃 프레임워크 설정
Rider 설치중입니다. 타깃 프레임워크에서 net10.0 선택시 "크로스 플랫폼 오픈 소스 프로젝트를 작업하려면 .NET을 설치하세요" 라는 글이 뜹니다. 그리고 하단에 '생성' 버튼이 활성화되지 않습니다. 타깃 프레임워크를 v4.0으로 생성해도 되는지 궁금합니다.
-
해결됨바닥부터 만드는 언리얼 에이전트 (Liu)
OAuth방식 강의 문의
안녕하세요 anthropic에서 서드파티 접근을 막으면서 oauth방식대신 api를 이용하는 강의로 대체되었는데, 기존 OAuth 강의를 응용해 다른 llm을 연동시켜보고자 합니다.agent관점에서 codex나 antigravity 등 다른 LLM서비스를 연동할 수 있게 기존 강의를 archive나 다른 챕터로 분리해서 다시 공개될 수는 없을까요?
-
해결됨바닥부터 만드는 언리얼 에이전트 (Liu)
Rider대신 VS를 써도 괜찮나요?
단순 궁금증이지만 가능한지 여쭙고 싶습니다. Rider IDE 대신 VisualStudio2022를 사용해도 강의 진행이 가능한지 궁금합니다.
-
해결됨바닥부터 만드는 언리얼 에이전트 (Liu)
Claude Code Pro구독하고 있는 상태에서 크레딧 결제, 사용문의
안녕하세요, 6강에서 Api key 발급후 AnthropicClient 생성하고 Message Response = await Auth.Client!.Messages.Create(Parameters);부분에서 Exception이 발생하는데 내용은 [400 Bad Request] 잘못된 요청입니다. 원인: Status Code: BadRequest{"type":"error","error":{"type":"invalid_request_error","message":"Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits."},"request_id":"req_011CZqxwLG2ATLShs2TuAJ3K"}입니다. 구독 플랜과 별개로 API_Key를 사용하려면 별도로 크레딧을 구매해야 하는걸까요?
-
해결됨바닥부터 만드는 언리얼 에이전트 (Liu)
토큰 사용량 및 인증 관련해서 질문드립니다.
강의를 보고 직접 만든 에이전트와 Claude Code 각각 같은 질문을 했을 때 직접 만든 에이전트가 좀 더 토큰을 많이 사용하는 것 같았는데요.강의 에서는 Context Window를 줄여야 토큰 사용량이 줄어든다고 하셨었는데 그러면 일정 토큰을 사용한다면 직접 요약본을 만들어서 Messages에 덮거나 하는 추가적인 최적화같은 걸 해줘야 하는 걸까요?그리고 4월 4일 부로 Anthropic 정책이 바뀌었는데 그러면 개인 에이전트를 만들어 쓸려면 무조건 API Key 방식으로 진행을 해야 하는 걸까요?
-
해결됨바닥부터 만드는 언리얼 에이전트 (Liu)
OAuth 방식 문의
최근 Anthropic에서 다시 한 번 서드파티 앱들에 대한 접근을 막겠다고 했는데 개인이 개발한 에이전트에서도 사용이 불가능하다는 입장인 것 같은데 향후 사용할 수 있을까요?
-
해결됨바닥부터 만드는 언리얼 에이전트 (Liu)
C#을 사용하는 장점이 무엇인지 궁금합니다.
안녕하세요강의에서 C#을 사용하시는데 다른 언어보다 C#의 장점이 무엇인지 궁금합니다.C#에서만 제공되는 편리한 기능들이 있는 것일까요?
-
해결됨바닥부터 만드는 언리얼 에이전트 (Liu)
인증 코드 복사 넣기시 오류
강의를 따라가고 있는데 복사 붙여넣기를 하면 위의 경로중 일부분에 인증코드가 들어가 정상적으로 진행이 안되는 상태입니다. 혹시 이런 경우에는 어떻게 하는건지 알 수 있을까요?
-
해결됨바닥부터 만드는 언리얼 에이전트 (Liu)
안녕하세요 언리얼엔진 버전 관련 질문합니다.
현재 강의에서는 언리얼 최신버전인 5.7.4로 진행하셨는데 혹시 5.5버전으로 개발을 진행해도 될지 여쭙니다.
-
해결됨바닥부터 만드는 언리얼 에이전트 (Liu)
CEF관련 질문
안녕하세요. 아직 강의를 다 본 상태는 아니지만 중간에 궁금한게 생겼습니다.언리얼은 SWebBrowser를 제공해 주어 해당 기능을 사용한다고 하셨는데 그럼 언리얼이 아닌 다른 환경에서는 어떻게 해야 하나요? 후반까지 다 보면 알게 되는건지 아니면 해당 편의 기능은 이 강의를 보고 직접 만들 수 없고 따로 CEF관련해서 공부를 하거나 다른 방법을 찾아야 하는건가요? 언리얼이 아니면 알트탭 눌러가면서 작업해야 하는건가 싶어서요.
-
해결됨바닥부터 만드는 언리얼 에이전트 (Liu)
AuthorizeUri 관련 코드 질문드립니다.
안녕하세요.AuthorizeUri 변수 만드는 코드 보면 state에 Verifier를 넣어주고 있습니다. PKCE 설명에는 열쇠가 노출되면 안 된다고 했던 것 같은데, 혹시 이렇게 Verifier를 넣으면 열쇠가 노출되는 것 아닌지 문의드립니다.감사합니다.
-
미해결(2025 최신 업데이트)리액트 : 프론트엔드 개발자로 가는 마지막 단계
모바일 버전에 쓰이는 이미지를 다운받고 싶어요
강의 시간에 구글에서 찾은 이미지 말구요 그림 이미지요 모바일
-
미해결(2025 최신 업데이트)리액트 : 프론트엔드 개발자로 가는 마지막 단계
vite를 꼭 써야하나요
누나 저는 인텔리제이 리액트 프로젝트로 만드는데 거기서는 vite 안 쓰고도 npm start 하니까 만들어집니다. vite 를 쓰는 이유가 뭔가요
-
미해결이벤트부터 SPA까지, 상호작용 웹의 필수 엔진 - [DOM 완전 정복 Part 2]
11강 내용과 12강 내용이 충돌하는 것 같아요.
11강에서는 removeEventListener 함수로 리스너를 명시적으로 제거하지 않는 한 요소가 사라지더라도 메모리에 계속 남아 있다고 설명하셨는데요. 12강에서는 요소를 제거하는 방식으로도 리스너를 제거할 수 있다고 해서 내용이 충돌하는 것 같아요.
-
미해결웹에서 다루는 미디어 - 화상 대화를 만들면서 배우는 MediaStream API
오디오 Input -> Speaker 출력 Noise
안녕하세요.이번에 프로젝트를 진행 하고 있는데 해결되지 않는 부분이 있어서 질문을 드립니다.상황을 간단히 말씀드리면, 미팅룸 개설을 하고 참여한 인원중에 말을 하면 해당 음성을 다른 참여자의 스피커로 출력하는 방식입니다. (발화자 제외) 이때 Input Audio format은 16Khz, MONO, 32Float, 16,000 sample 로 지정되어 있습니다.(음성 출력 뿐만 아니라, STT 서버에 보내서 텍스트를 반환하는데 이때 STT 서버의 오디오 요청스펙 입니다.) 그리고 Gemini의 도움을 받아 아래와 같이 옵션을 설정하였지만, 실제로 스피커 출력시 매우심한 Noise가 발생합니다. (STT 서버의 응답 텍스트는 정상 동작) 저는 백엔드 개발자인데, 프론트단에서 해결 방법을 잘 모르겠어서, 강의를 결제하게 되었습니다. 혹시 조언을 해주실수 있을까요?아니면 강의에 몇강을 보면 관련 주제가 나오는지 알려주도 좋을거같습니다. 긴글 읽어주셔서 감사합니다. Input audio data 관련 코드audio: { echoCancellation: true, noiseSuppression: false, autoGainControl: false, } this.highPassFilter = this.audioContext.createBiquadFilter(); this.highPassFilter.type = 'highpass'; // [튜닝] 목소리 뭉개짐을 피하기 위해 60Hz로 설정 this.highPassFilter.frequency.value = 60; // 2. Compressor (안전장치/Limiter 역할 튜닝) this.compressor = this.audioContext.createDynamicsCompressor(); // [튜닝] -6dB를 넘어가는 "정말 큰 기계음"만 잡는 '안전장치'로 사용 this.compressor.threshold.value = -6; this.compressor.knee.value = 30; // [튜닝] 2:1로 최소한만 압축 this.compressor.ratio.value = 2; // [튜닝] 순간적인 피크를 빠르게(3ms) 잡음 this.compressor.attack.value = 0.003; this.compressor.release.value = 0.25; // 3. GainNode (전체 볼륨 증폭) this.gainNode = this.audioContext.createGain(); // [튜닝] 압축을 거의 안 하므로 1.1배로 소폭만 증폭 this.gainNode.gain.value = 1.1; // --- 7. 노드 체인 연결 --- this.audioSource.connect(this.highPassFilter); // 1. (마이크) -> 저주파 험 제거 this.highPassFilter.connect(this.compressor); // 2. -> "정말 큰 소리"만 방지 this.compressor.connect(this.gainNode); // 3. -> 전체 볼륨 소폭 증폭 this.gainNode.connect(this.resamplerNode); // 4. -> VAD 및 리샘플링 this.resamplerNode.connect(this.audioContext.destination); // (워크렛 실행용)스피커 출력 관련 코드// --- [수정] 오디오 출력(Playback) 로직 (심리스 스케줄링) --- private handleIncomingAudio(audioData: ArrayBuffer): void { if (audioData.byteLength === 0 || !this.playbackAudioContext) return; if (this.playbackAudioContext.state === 'suspended') { this.playbackAudioContext.resume().catch((err) => { console.error('Playback AudioContext 재개 실패:', err); }); } this.audioQueue.push(audioData); // [수정] 재생 루프가 멈춰있을 때(!this.isPlaying)만 새로 시작 if (!this.isPlaying) { this.isPlaying = true; // 현재 시간을 기준으로 스케줄링을 다시 시작합니다. this.nextChunkTime = this.playbackAudioContext.currentTime; this.playNextChunk(); } } private playNextChunk(): void { if (this.audioQueue.length === 0) { this.isPlaying = false; // 큐가 비면 재생 중지 return; } if (!this.playbackAudioContext || this.playbackAudioContext.state === 'closed') { this.isPlaying = false; this.audioQueue = []; return; } const audioData = this.audioQueue.shift()!; try { const float32Data = new Float32Array(audioData); const audioBuffer = this.playbackAudioContext.createBuffer( PLAYBACK_CHANNELS, float32Data.length, this.playbackAudioContext.sampleRate ); audioBuffer.copyToChannel(float32Data, 0); const source = this.playbackAudioContext.createBufferSource(); source.buffer = audioBuffer; source.connect(this.playbackAudioContext.destination); // --- [수정] 심리스 스케줄링 로직 --- // 1. 랙(Lag)으로 인해 예약 시간이 이미 지났는지 확인 const currentTime = this.playbackAudioContext.currentTime; if (this.nextChunkTime < currentTime) { // 지연이 발생했으면, 갭(Gap)이 생기지 않도록 현재 시간으로 리셋 this.nextChunkTime = currentTime; } // 2. 계산된 nextChunkTime에 재생을 '예약'합니다. (갭 제거) source.start(this.nextChunkTime); // 3. 다음 청크가 시작될 시간을 미리 계산합니다. this.nextChunkTime += audioBuffer.duration; // 4. [수정] onended에서 다음 청크를 비동기적으로 호출합니다. (버그 수정) source.onended = () => { // 큐에 다음 데이터가 있으면, 딜레이 없이 바로 다음 청크를 스케줄링합니다. if (this.audioQueue.length > 0) { this.playNextChunk(); } else { this.isPlaying = false; // 큐가 비었으면 재생 종료 } }; // 5. [삭제] 즉각적인 재귀 호출을 삭제합니다. (이것이 버그였습니다) // if (this.audioQueue.length > 0) { // this.playNextChunk(); // } } catch (e) { console.error('오디오 청크 재생 중 오류:', e); this.isPlaying = false; // 오류 발생 시 재생 루프 중지 } }