묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)
id(actor) 와 관련한 질문입니다
이 명령은 actor.id 를 생성하는 명령인지. 아니면 gactor.get("id") 인지 궁금합니다.
-
해결됨제미니의 개발실무 - 커머스 백엔드 기본편
목록 조회에서 개념(도메인)객체를 반환할 때
현재 코드상으로 목록조회에서도 개념객체를 활용하는 것으로 확인했습니다! 하지만 한 개념 객체가 여러 개념 객체를 포함하는 경우가 있는 상태에서 페이지네이션 같이 모든 개념객체의 필드를 채워줄 필요가 없는 경우도 있을 거 같습니다. 이때, 필요한 컬럼만 추출한 데이터를 담는 별도 dto용 객체를 만든다개념 객체의 일부를 채운 값을 Page에 반환한다 실무에선 둘 중 어느 방식을 적용하는지 궁금합니다! 제 생각에는 개념(도메인) 객체는 항상 완전한 상태로 있어야 하므로 별도 프로젝션 dto용 객체를 만들어서 서비스단에서는 도메인 객체가 아닌 해당 dto 객체를 내려주는 것이 낫지 않을까 생각합니다. 또한 사용하지 않는 필드를 완전한 객체 상태로 만들어주기위해 불필요하게 많은 추가 쿼리가 발생할 수 있어서 이런 경우는 별도 값(dto)객체를 쓰는 게 나을 거 같은데 실무에서는 어떻게 하는지 궁금합니다!
-
미해결피그마 시작하기
30번 강의질문
30.7-상품확대 인터렉션 만들기에서요컴포넌트까지는 다 만들었는데요,마지막에 이미지에 붙여넣기 할때 어떤식으로 하는건지 강의 봐서는 잘 획갈려서요이미지를 4개 배치했고, 이미지가 각각 있는데 그걸 그룹화해서 넣어야 하는건지 어떤건지...잘.....
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
전처리 방법
작업형 3의 문제## 심장마비 확률이 높은사람? - 성별, 나이, 혈압, 콜레스테롤, 공복혈당, 최대 심박수 등의 컬럼이 있음 - 평가: ROC-AUC, 정확도(Accuracy), F1 을 구하시오 - target : output (1:심장마비 확률 높음, 0:심장마비 확률 낮음) - csv파일 생성 : 수험번호.csv (예시 아래 참조) ~~~ 위와 같은 문제가 실제 시험 환경에서 문제 양식과 비슷한가요? 저렇게 문제가 나오면 전처리를 어떻게 해야 하는지... 궁금합니다. 만약, 시험 환경 문제가 저렇게 나온다면..결측치 제거를 그냥 컬럼을 보고 아무 컬럼이나 제거를 해도 되는지. 그게 채점 규정에 맞을지. 그리고 결측치 제거시, fillna()를 쓰는데 아무 값이나 넣어도 되는지. fillna(method='bfill') 이런걸 써도 되는지. 이상치 제거도 그냥 이것도 임의로 뭔가 이상치 인거 같다 싶으면 제거 하는건지..이게 채점 규정에 맞을지... 애매 한거 같은데요. ============그리고 혹시나 시험 유형이 저렇게 안나온다면,문제를 좀 더 명확하게 서술 해주셔야 할 거 같아요
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
원핫인코딩 후 컬럼 개수 불일
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요 print(train.info()) print(test.info()) print(train.isnull().sum()) print(test.isnull().sum()) print(train.head()) print(test.head()) target = train['총가스사용량'].pop # import sklearn # print(sklearn.__all__) print(train.shape, test.shape) train = pd.get_dummies(train) test = pd.get_dummies(test) print(train.shape, test.shape)상기 처럼 코딩 후,컬럼값이 26, 25로 불일치하게 나와요. 왜일까요...(3196, 6) (1476, 5) (3196, 26) (1476, 25)그래서 그 이후 값들도 에러가 떠요 from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size=0.2, random_state = 0)--------------------------------------------------------------------------- TypeError Traceback (most recent call last) /tmp/ipython-input-3028840780.py in <cell line: 0>() 1 from sklearn.model_selection import train_test_split 2 ----> 3 X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size=0.2, random_state = 0) 4 frames/usr/local/lib/python3.12/dist-packages/sklearn/utils/validation.py in _num_samples(x) 397 if hasattr(x, "shape") and x.shape is not None: 398 if len(x.shape) == 0: --> 399 raise TypeError( 400 "Input should have at least 1 dimension i.e. satisfy " 401 f"`len(x.shape) > 0`, got scalar `{x!r}` instead." TypeError: Input should have at least 1 dimension i.e. satisfy `len(x.shape) > 0`, got scalar `array(<bound method Series.pop of 0 9077.8 1 10105.5 2 8603.6 3 11076.8 4 10781.4 ... 3191 12294.7 3192 10410.7 3193 10473.8 3194 9657.9 3195 9961.5 Name: 총가스사용량, Length: 3196, dtype: float64>, dtype=object)` instead.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2 모의문제2
안녕하세요 혹시 문제에서는 전처리시에 열을 삭제하고, cols = ['name', 'host_name', 'last_review', 'host_id']열을 삭제하고, 값이 비어 있는거 train['reviews_per_month'] = train['reviews_per_month'].fillna(0) test['reviews_per_month'] = test['reviews_per_month'].fillna(0) 이렇게 채우는게 문제에서 지시 사항이 없었는데, 작업을 해도 되는건가요?명확한 지시 사항이 있어야 하는게 아닌가 싶어서 여쭤봅니다.시험 환경에서 저렇게 데이터를 삭제하거나 이상치를 처리 하는거 결측치 처리를 임의로 해도 되는지 궁금합니다.
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
섹션 4, 5와 6, 7은 유사한가요?
현재 스프링부트 프로젝트의 인프라와 CI/CD를 공부하고 있습니다섹션 4, 5와 6, 7이 프레임워크 (스프링부트 / Nest.js)의 차이만 있는것으로 보이는데6, 7 섹션을 우선 넘어가도 괜찮은지 궁금합니다
-
해결됨DOM에서 픽셀까지, 브라우저 렌더링과 CRP 완전 정복 - [DOM 완전 정복 Part 3]
지금 이 화면에서 뭘로 fps를 알 수 있나요?
지금 이 화면에서 뭘로 fps를 알 수 있나요?
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2-모의문제 1번 검증 데이터 분리
from sklearn.model_selection import train_test_splitX_tr, X_val, y_tr, y_val = train_test_split( train.drop('Attrition_Flag', axis=1), train['Attrition_Flag'], test_size=0.2, random_state=2022 )선생님, 데이터 분리 작성할 떄, train.drop('Attrition_Flag', axis=1) 이 부분이 이해가 가지 않아요.Attrition_Flag 컬럼은 pop함수로 따로 빼놓는거로 알고 있는데, 여기서 왜 drop으로 삭제를 하고, 뒤에 train['Attrition_Flag']를 다시 넣는건지 모르겠어요.. + 데이터 분리 전에, 먼저 target에 Attrition_Flag를 따로 분리시켜놓고 split함수를 작성해도 되나요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
17강 포인터 조작과 출제패턴 / 10:00 / 이중포인터 출력 관련 문의
안녕하세요.영상 10:00쯤(정확히는 10:39)에 printf(*(*ptr_b+1)); 부분 설명해 주실 때 *ptr_b+1은 ptr_b주소에서 char크기만큼 증가시키는거라고 설명해 주셨습니다.그런데 이전 영상에서는 출력할때 포인터변수명 앞에 *(별표)를 붙이면 주소가 아닌 값을 가져오는거라고 설명해 주셨는데, 여기서는 왜 값이 아닌 주소를 불러오는건지 문의드립니다.
-
미해결(2025) 일주일만에 합격하는 정보처리기사 실기
17강 포인터 조작과 출제패턴 / 08:40 / 메모리주소 관련 문의
안녕하세요.영상에서 선언해 주신 str[], ptr_a, ptr_b 3개 변수의 메모리주소에 대해 문의드립니다.char str[] = "Hello";char *ptr_a = str; > 포인터변수 ptr_a의 메모리주소는 배열변수 str과 동일하다.char **ptr_b = &ptr_a; > 이중포인터변수 ptr_b의 메모리주소는 포인터변수 ptr_a의 메모리주소와 동일하다.이렇게 되면 str, &ptr_a, &ptr_b가 모두 동일한거 아닌가요?이중포인터에 대해 이해가 부족해서 질문이 생겼을수도 있을거 같긴 한데, 영상 보면서 그때그때 궁금한게 생기면 일시정지하고 질문을 남기고 있어서 혹시 뒤에 설명해 주시는 내용이더라도 양해 부탁드립니다.
-
미해결유니티와 C#으로 배우는 카타나제로스타일 게임만들기 (기본편)
이거 후속 강의는 없는 건가요? ㅠㅠ
이거 후속 강의는 없나요...? 플레이어랑 적 충돌까지는 배운게 있어서 공격하면 사라지게 할 수 있는데 보스 몬스터 구현하기가 어렵네요 ㅠ
-
미해결유니티와 C#으로 배우는 카타나제로스타일 게임만들기 (기본편)
이거 후속 강의는 없는 건가요? ㅠㅠ
이거 후속 강의는 없나요...? 플레이어랑 적 충돌까지는 배운게 있어서 공격하면 사라지게 할 수 있는데 보스 몬스터 구현하기가 어렵네요 ㅠ
-
미해결Next.js 15: Full-Stack Development
강의를 들을 때 타입스크립트 지식이 필요한가요?
안녕하세요 js, React만 배우고 바로 Next.js로 넘어왔는데 혹시 TypeScript도 필요한가요?
-
미해결웹에서 미디어를 다루는 방법 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; // 오류 발생 시 재생 루프 중지 } }
-
미해결김영한의 실전 데이터베이스 - 기본편
join 문제 풀이2 문제1(self join) 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용] join 문제와 풀이2에서 문제 1번에 대한 질문입니다.풀이는 아래 쿼리 중 1번의 형태로 해주셨는데 저는 풀이 보기 전 혼자 풀었을 때 2번의 형태로 작성을 했는데...일단 동작은 둘 다 같은데 유지보수적인 면이라던지 의미적인 면이라던지 더 좋은 형태가 있는 지, 둘의 차이가 있는 지 궁금하여 질문 드립니다. 1번 쿼리SELECT m.employee_id, mname, m.manager_id, enameFROM employees eJOIN employees m ON e.employee_id = m.manager_idWHERE m.manager_id = 42번 쿼리SELECT e.employee_id, ename, e.manager_id, mnameFROM employees eJOIN employees m ON e.manager_id = m.employee_idWHERE e.manager_id = 4
-
해결됨FastAPI 완벽 가이드
어디가 필요없는 코드인지 알아내려면....
제가 아래의 사이트를 자체 서버를 만들어 구동을 해보았습니다. 물론 테스트 및 학습용으로....http://112.166.186.238/사용한 것들App서버: FastAPI로 백엔드 api와 간단한 프론트 엔드DB 서버: MySQLRedis 서버Nginx 서버Portainer.io를 이용해, Dockerfile로 이미지 생성하고 4개의 컨테이너를 만들어, 구동시켰습니다. 서버는 제가 쓰던 오래된 개인 PC(아마도 족히 15년가까이된 구닥다리 컴퓨터)에 우분투 22.04.5 LTS를 설치해서 서버 구동을 시켰습니다.제가 전공자는 아니고, 완전히 다른 직업군에 있는 사람이라... 몇년전에 장고, 플라스크로 웹어플리케이션 공부를 한적이 있는데 그때 웹프레임워크만 제외하고 똑같은 방식으로 서버구동을 시켜본 적이 있는데... 이번에 FastAPI로 한번 더 공부하면서 구축해보았습니다.아직, docker-compose.yml로 docker swarm 구축을 해보지는 못했구요... 그런데 여기까지 오면서 궁금해진것이 바로 직전에 질문하신 분처럼 nginx서버 설정을 하다보면, FastAPI코드에서 굳이 없어도 될 부분의 설정부분이 있을 것 같은데.... 그게 어떤것인지 궁금해지더라구요... 예를 들면,정적파일 처리를 nginx에서 처리하는 경우 app.mount()가 필요없을 것 같은데... 답변이 그렇게 되어 있어, 예상했던 데로 였습니다. app.mount()가 설정이 있어도 무방한 것인지 궁금합니다. 또한 저는 정적파일 css. js 파일들은 nginx에서 처리하지 않도록 했는데... 바뀔수가 있을 것 같아서... 여기서 궁금한것: 이렇게 해도 무방한 것인지 궁금합니다. (참고로,저는 static/media폴더 안에 user_images, user_videos폴더를 만들어 user가 업로드하는 파일들을 그 폴더안에 저장하게 로직을 작성했습니다. nginx에서 이 디렉토리를 찾아갈 수 있게 해 놓았고, volume mount를 해서 컨테이너가 삭제되더라도 사용자가 올린 실제 이미지들이 삭제되지 않게 했놨습니다. )MySQL서버와 Redis 서버를 찾아가는 FastAPI코드가 있고, yml파일로 컨테이너를 만드는 코드를 작성할 때, network로 서로를 연결하게 될텐데.... 이때 MySQL서버와 Redis 서버를 찾아가는 FastAPI코드가 없어야만 되는지, 아니면, 있더라도 상관이 없는 것인지... 그것도 궁금합니다.이 두가지 말고도 yml작성시에 들어가는 내용때문에 FastAPI코드에서 굳이 없어도 부분이 있는지 궁금합니다.감사합니다.
-
미해결
강의 재생이 안됩니다
일부강의만 재생이 되고 대부분 재생이 안됩니다.빠르게 해결해주시면 감사하겠습니다.고객센터 전화번호도 연결이 아예 안되어서 너무 불편합니다.
-
미해결graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)
쿼리문 질문 드립니다.
"graphRAG 구현 (랭체인 LCEL 활용)" 부분입니다.WHERE ANY(title IN $movie_titles WHERE movie.title CONTAINS title) 부분을 아래와 같이 수정 WHERE movie.title IN $movie_titles수정한 이후에 건수가 제대로 나오질 않았습니다. ( 참고 $movie_titles 는 4건인데최총 추출되는 것은 2건입니다.) 단순히 생각하면 title 이 추출된 title 에 포함되어 있는 movie 만 추출하면 될 거 같은데..제대로 동작하지 않네요...왜 그런지 설명 부탁드립니다.WHERE 절 안에 다시 WHERE 절이 있는 것도 잘 모르겠습니다.감사합니다.
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
온프레미스 환경에 쿠버네티스도입
안녕하세요현재 회사에서 IDC 온프레미스환경에 쿠버네티스 도입하기로 결정되었습니다.다만 인프라관련 인원이 없는상황이라 어쩔수없이 주니어인 제가 당장 인프라 구조를 구축해야하는데 쿠버네티스가 어려운 기술이다보니 당장 도입하기보다 공부하고 점진적 도입을 하려는데도커로 먼저 시스템을 서버에 배포해놓고 추후에 쿠버네티스를 점진적으로 도입이 유연하게 되는지 궁금합니다. 또한 DBMS올리는건 로컬과 컨테이너 중 보통 어느곳에 올리실까요?