묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
이중배열 관련
다차원 배열과 문자열 배열 강의 챕터 19:47char *arr[2][2]={{"Hello", "World"}, {app", "dev"}} 에서 char *arr[2][2]와 char arr[2][2] 차이가 있나요??
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
메모리 누수 이슈
형 질문이 있어! 형 강의 너무 고마워! 배치에서 리모트 파티션 사용중인데 리모트 파티션을 전달에 쓰이는 내부 큐가 있는걸로 알고 있어!그 큐가 GC 가 안되어 1주일 정도 넘으면 OOM 이 떨어지는거 같아! 혹시 무언가 놓친게 있을까?? 설정이나 아니면 필요한 부분이? 답변 부탁해!
-
해결됨[CS 기술면접 6] 말이 트이는 자바와 객체지향
강의 잘 들었습니다. 혹시 다음 내용 추가하실 생각 있으실까요?
강의 정말 잘 들었습니다! 혹시 아래 내용들을 추가해주실 계획이 있으실까요?예외 처리 파트에서 Checked Exception & Unchecked Exception 관련 간단한 언급StringBuilder & StringBuffer 설명 시, String Constant Pool 개념에 대한 보충별개로 네트워크 강의 부분에서도 HTTP 버전별 특징과 Keep-Alive 지원 여부에 대한 설명 추가지금도 매우 훌륭한 강의이지만. 위 내용이 포함되면 취준생 입장에서 조금 더 많이 도움을 받을 수 있을 것 같습니다. 혹시 고려해주실 수 있을까요? 감사합니다!
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
34.36 질문
for ( int i =0; i<3; ++i, ++p)printf("%s has %d\n", p->name p->score)에서 전위연산으로 ++ 증가했으면 i=1 이기에 Bob has 85Cody has 92 가 나와야 하는거 아닌가요
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
14분55초 질문
강의 잘 보고있습니다!수강중 질문이 생겨서요 해당시간에 dic[2] 자체가 키 그 키 기준 값을 넣는다고 했는데 위의 예시에 따르면 번외로 dic[0]은 질문이 될수없는게 맞을까요? dic..함수에 대해 더 설명 부탁드리겠습니다!
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
3분대 두번 째 출력
출력값str1==str2: truestr1==str2: false이부분str2==str3: false이게 맞죠?int형과 integer의 동일한 값은 ==나 equals 모두 true이지만int와 int / integer와 integer끼리의 -128~127 외의 값은 ==로 비교 했을 때 falsedouble은 == 비교 값은 모두 falsenew로 새로만든 생성자의 데이터 값은 값은 동일하여도 메모리 주소의 값이 달라서 ==와 equals(메서드 지정x)은 모두 false이며 같게 하려면 본 동영상 8분30초 부분 메서드와 같아야 equals가 true가 나오는 거죠? 처음 equals가 값만 같으면 ture라고 생각했는데, new생성자는 값이 같아도 메모리 값이 달라서 메서드가 없으면 equals도 결과 값이 false가 나오네요처음 str="hello"가 같은 메모리 주소를 가르켜 equals메서드가 따로 없어도 ture가 나온다는 점을 잘 알아야 겠네요
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
32:19에서
32:19 부분에 0+9아닌가요? 왜 -1인지 모르겠습니다.
-
미해결스프링 부트와 리액트로 구현하는 소셜 로그인
[소셜 로그인 33강] 일반 로그인 -> 소셜 로그인 관련 질문
33강에 27-30분대를 보면SecurityConfig 클래스에서 .formLogin을 .oauth2Login으로 바꾸고, TodoController 에서 CustomUserDetails로 받았던 사용자 정보를 CustomOAuth2User 로 바꾼 것으로 보이는데,,일반 로그인 시에 사용할 로직과 소셜 로그인 시에 사용할 로직을 둘 다 두지 않고, 소셜 로그인 하나만 사용하는 것으로 진행하려고 바꾸는건가요??
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
17강 포인터 조작과 출제패턴 / 10:00 / 이중포인터 출력 관련 문의
안녕하세요.영상 10:00쯤(정확히는 10:39)에 printf(*(*ptr_b+1)); 부분 설명해 주실 때 *ptr_b+1은 ptr_b주소에서 char크기만큼 증가시키는거라고 설명해 주셨습니다.그런데 이전 영상에서는 출력할때 포인터변수명 앞에 *(별표)를 붙이면 주소가 아닌 값을 가져오는거라고 설명해 주셨는데, 여기서는 왜 값이 아닌 주소를 불러오는건지 문의드립니다.
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
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가 모두 동일한거 아닌가요?이중포인터에 대해 이해가 부족해서 질문이 생겼을수도 있을거 같긴 한데, 영상 보면서 그때그때 궁금한게 생기면 일시정지하고 질문을 남기고 있어서 혹시 뒤에 설명해 주시는 내용이더라도 양해 부탁드립니다.
-
미해결웹에서 다루는 미디어 - 화상 대화를 만들면서 배우는 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; // 오류 발생 시 재생 루프 중지 } }
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
API 별 실행 쿼리 모니터링 구현 질문 있습니다.
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분어느 부분에서 막히셨나요?코드의 어떤 로직이 이해가 안 되시나요?어떤 개념이 헷갈리시나요? 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?에러가 발생했다면 어떤 에러인가요?현재 작성하신 코드를 공유해주세요 안녕하세요 강의 잘 보고 있습니다. 저는 강의를 보고 아래와 같이 이해를 했습니다.1.API 별 실행 쿼리 모니터링 구현2.그러면, 모든 api 엔드포인트에 대한 쿼리 min , max값을 알 수 있음. 질문1근데, 그렇게 되면 실제로 서비스에 필요한 코드와 모니터링 코드가 불필요하게 섞이는 거 아닌가요? 왜냐하면, 실제 모니터링이라고 하면 서버를 유지보수할 때, 필요한 데이터를 실시간으로 받아와서 시각화한다는 것으로 이해를 했습니다. 그런데 "API 별 실행 쿼리 모니터링 구현"은 서버의 유지보수에 필요한 모니터링 기능이 아니라, 1번만 딱 실행되면 되는데 이 부분이 왜 모니터링 구현으로 분류가 되는지 잘 모르겠습니다! 질문2API 별 실행 쿼리 모니터링 구현 부분에서, 실무에서도 "API 별 실행 쿼리 모니터링을 구현"해서 사용하는게 맞나요? 잘은 모르겠지만, 쿼리 분석이나 다른 방법이 있을 것 같은데 왜 이 부분이 서비스 코드 내에 포함을 시키면서까지 모니터링의 영역으로 분류가 되는지 잘 모르겠습니다 ! 질문3 만약에 실무에서는 해당 방법을 잘 사용하지 않는다면 API 별 실행 쿼리 횟수를 보통 어떤 식으로 측정을 하는건가요??? 감사합니다 ! 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다!
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
spotbug + @NonNullApi 로만 Null 방어가 될까요?
안녕하세요, nullable 프라퍼티가 없다면 null를 방어하는 방식에 대해 궁금한 점이 있어 질문남깁니다.14. Member 도메인 로직 개발 - 생성자에 requireNonNull() 사용15. 스프링을 이용한 널(null) 안정성 확보 - SpitBugs 플러그인 - package-info 에서 @NonNullApi이렇게 세가지 방법을 배웠는데요, SpitBugs 플러그인이 "빌드과정에서 정적 분석을 하여 애노테이션 의미와 부합하지 않으면 에러를 내준다" 라는 말씀에 "그럼 도메인에 Nullable 프라퍼티가 없으면 requireNonNull() 사용 없이 단순히 @NonNullApi + SpotBug만 사용해도 되지 않을까..? "의문이 들었습니다.3가지 모두 사용하는게 Null 방어에 괜찮을까요? 아니면 제가 이해한 대로 SpotBug 플러그인 + @NonNullApi 로만 사용해도 충분할까요?
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
typedef 질문
5:50제일 위에 선언 부분에Bag이 typedef으로 데이터타입으로 정의한건지 struct 의 변수명으로 정의한건지 헷갈립니다저렇게 하나만 쓰면 둘다 인가요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
강의자료중 github 자료
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 혹시 github 자료도 받아볼 수 있나요?
-
미해결실습으로 배우는 선착순 이벤트 시스템
consumer가 topic을 전부 사용하기 전에 사용자에게는 쿠폰이 발급된것으로 확인하는 과정에서 발생가능한 문제.
운영중인 서비스에서 선착순 100명 이벤트를 적용한다고 가정하겠습니다. redis를 통해 100명을 제한했고, kafka를 적용하여 부하를 줄여주는 것은 까지는 이해했습니다. 부하를 줄이는 방법이 kafka를 적용할때 때 provider가 topic을 생성하고 consumer가 topic을 가져와서 DB에 입력하는 작업을 하는 것으로 이해했는데요. 만약 이게 실제 운영 환경이라고 가정했을때 궁금한것은 다음과 같습니다.사용자가 이벤트 신청redis에서 쿠폰 생성 수량 확인 결과 생성 가능한 조건 임으로 새로운 쿠폰 발급provider가 새로운 토픽을 생성 토픽을 생성한 그 순간 바로 직후, 사용자는 새로운 쿠폰이 발급된 것으로 확인 해야함.그치만 consumer에서 topic을 가져오기 전으로 DB에는 새로운 쿠폰이 생성되지 않음.쿠폰을 사용(또는 확인) 하려고 DB에서 select해보니 쿠폰이 없음consumer가 이제서야 쿠폰 생성이 경우에서 보는 것과 같이.provider가 topic을 생성하고 consumer가 topic을 가져와서 DB에 넣는 과정 사이에 사용자가 select를 진행하는 케이스가 있을것같습니다.이 부분은 어떻게 해결할 수 있을까요?혹시 다음과 같이 해결 할 수 있을까요?provider가 topic을 생성하는 과정에서 발급 내역을 redis에 입력consumer가 모든 토픽을 전부 사용하여 DB에 입력하기 전까지 redis에 입력되어 있는 쿠폰 정보로 사용자에게 보여줌consumer가 모든 토픽을 사용했을때(= 생성된 모든 쿠폰정보를 DB에 입력했을때) redis에 있는 쿠폰정보는 삭제하고 DB에서 select해서 보여줌.궁금합니다.
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
문제 풀이 해설 요청
ASCII 코드 챕터 18:12printf(%s\n", p+1)printf(%c\n", *(p+1))printf(%s\n", *p+4)위 3가지 경우에 대해서 해설 부탁드립니다.1번 경우 KOREA에서 한칸 오른쪽으로 이동하여 OREA되는 것은 이해가 되고2번 경우 *p가 K를 가르키기에 +3하면 E가 되는 것도 이해되고3번 경우에는 1번과 2번을 바탕으로 이론을 숙지하고 있는상황에서 이해가 되지 않습니다.
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
어떻게 준비하면 좋을까요?
2주정도 남은 시점에서 언어 관한 강의는 다 봤고 전년 주차들 풀이해주는거 보고 있는데남은 기간을 어떻게 준비하면 좋을까요?실패경험이 있으니 엄청 불안한데 어떻게 하는게 좋을까요?
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
현재 시점에서..
현재시점에서 3회차 시험일 얼마 안남았는데 혹시 뭐부터 빨리봐야할까요... 제발 붙어야 하는데 일도 바쁘고 해서 저번주 주말부터 보기 시작해서 어떤 영상부터 시작해서 봐야할지 부탁드리겠습니다.
-
미해결(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
ASCII 코드 변환 관련
ASCII 코드 강의 챕터9:10char lower = 'a';에서 a는 문자 취급하고char upper = (char)(lower-32); 여기에서(char)은 문자 취급하는 구문이고(lower-32) 관련하여 숫자 취급하는 int 같은 것이 없는데 lower는 a 문자로 확인이 됩니다.a 문자 관련하여 왜 ASCII 코드 97로 변환하여 32를 빼는지 이해가 되지 않습니다.