inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

32:19에서

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

32:19 부분에 0+9아닌가요? 왜 -1인지 모르겠습니다.

  • python
  • java
  • 정보처리기사
  • 32:19에서
김장호 댓글 3 좋아요 0 조회수 83

[소셜 로그인 33강] 일반 로그인 -> 소셜 로그인 관련 질문

미해결

스프링 부트와 리액트로 구현하는 소셜 로그인

33강에 27-30분대를 보면 SecurityConfig 클래스에서 .formLogin을 .oauth2Login으로 바꾸고, TodoController 에서 CustomUserDetails로 받았던 사용자 정보를 CustomOAuth2User 로 바꾼 것으로 보이는데,, 일반 로그인 시에 사용할 로직과 소셜 로그인 시에 사용할 로직을 둘 다 두지 않고, 소셜 로그인 하나만 사용하는 것으로 진행하려고 바꾸는건가요??

  • react
  • java
  • spring-boot
  • jpa
  • spring-security
정수현 댓글 2 좋아요 0 조회수 157

섹션6장 .chroma/esl_topics폴더에 관하여

미해결

한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)

안녕하세요. 좋은 강의 항상 감사드립니다. 한 가지 문의드리고 싶습니다. 섹션 6의 28강에서 RAG 실행 부분을 실습하던 중, 제 로컬 환경에서는 코드가 에러 없이 정상적으로 실행되었지만 .chroma/esl_topics 폴더가 생성되지 않는 현상이 발생했습니다. 코드 상으로는 os.makedirs(PERSIST_DIR, exist_ok=True) 구문이 있으므로 폴더가 자동으로 생성될 것으로 예상했는데, 실제로는 생성되지 않는 것 같습니다. 혹시 해당 폴더가 생성되는 정확한 경로를 알려주실 수 있을까요? 또는 Windows 환경에서는 위 코드로 폴더가 생성되지 않는 경우가 있는지도 궁금합니다. 확인 부탁드립니다. 감사합니다. import os from typing import Type, Optional from crewai.tools import BaseTool from pydantic import BaseModel, Field from env import OPENAI_API_KEY from langchain_community.vectorstores import Chroma from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain_community.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.chains import RetrievalQA os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY PDF_FILENAME = os.path.join("knowledge", "29ESLConversationTopic.pdf") PERSIST_DIR = os.path.join(".chroma", "esl_topics") def qa(question): os.makedirs(PERSIST_DIR, exist_ok=True) embeddings = OpenAIEmbeddings() try: has_index = bool(os.listdir(PERSIST_DIR)) except FileNotFoundError: has_index = False if has_index: vectordb = Chroma(persist_directory=PERSIST_DIR, embedding_function=embeddings) else: loader = PyPDFLoader(PDF_FILENAME) docs = loader.load() splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=100) chunks = splitter.split_documents(docs) vectordb = Chroma.from_documents(chunks, embeddings, persist_directory=PERSIST_DIR) retriever = vectordb.as_retriever(search_kwargs={"k": 3}) llm = ChatOpenAI(model="gpt-4o-mini",temperature=0.3) return RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever).run(question) class RAGToolInput(BaseModel): question: str = Field(description="질문") class RAGTool(BaseTool): name: str = "ESL_Chroma_RAG" description: str = "Retrieves from '29 ESL Conversation Topics' PDF via ChromaDB and answers questions." args_schema: Type[BaseModel] = RAGToolInput def _run(self, question: str): try: return qa(question) except Exception as e: return str(e) rag_tool = RAGTool()

  • python
Tora King 댓글 1 좋아요 0 조회수 83

전처리 방법

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

작업형 3의 문제 ## 심장마비 확률이 높은사람? - 성별, 나이, 혈압, 콜레스테롤, 공복혈당, 최대 심박수 등의 컬럼이 있음 - 평가: ROC-AUC, 정확도(Accuracy), F1 을 구하시오 - target : output (1:심장마비 확률 높음, 0:심장마비 확률 낮음) - csv파일 생성 : 수험번호.csv (예시 아래 참조) ~~~ 위와 같은 문제가 실제 시험 환경에서 문제 양식과 비슷한가요? 저렇게 문제가 나오면 전처리를 어떻게 해야 하는지... 궁금합니다. 만약, 시험 환경 문제가 저렇게 나온다면.. 결측치 제거를 그냥 컬럼을 보고 아무 컬럼이나 제거를 해도 되는지. 그게 채점 규정에 맞을지. 그리고 결측치 제거시, fillna()를 쓰는데 아무 값이나 넣어도 되는지. fillna(method='bfill') 이런걸 써도 되는지. 이상치 제거도 그냥 이것도 임의로 뭔가 이상치 인거 같다 싶으면 제거 하는건지.. 이게 채점 규정에 맞을지... 애매 한거 같은데요. ============ 그리고 혹시나 시험 유형이 저렇게 안나온다면, 문제를 좀 더 명확하게 서술 해주셔야 할 거 같아요

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
JunSuPark 댓글 1 좋아요 0 조회수 71

원핫인코딩 후 컬럼 개수 불일

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형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.

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
지은 댓글 3 좋아요 0 조회수 65

작업형2 모의문제2

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

안녕하세요 혹시 문제에서는 전처리시에 열을 삭제하고, 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) 이렇게 채우는게 문제에서 지시 사항이 없었는데, 작업을 해도 되는건가요? 명확한 지시 사항이 있어야 하는게 아닌가 싶어서 여쭤봅니다. 시험 환경에서 저렇게 데이터를 삭제하거나 이상치를 처리 하는거 결측치 처리를 임의로 해도 되는지 궁금합니다.

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
JunSuPark 댓글 2 좋아요 0 조회수 46

작업형2-모의문제 1번 검증 데이터 분리

미해결

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

from sklearn.model_selection import train_test_split X_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함수를 작성해도 되나요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
audreyjy 댓글 2 좋아요 0 조회수 77

17강 포인터 조작과 출제패턴 / 10:00 / 이중포인터 출력 관련 문의

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

안녕하세요. 영상 10:00쯤(정확히는 10:39)에 printf(*(*ptr_b+1)); 부분 설명해 주실 때 *ptr_b+1은 ptr_b주소에서 char크기만큼 증가시키는거라고 설명해 주셨습니다. 그런데 이전 영상에서는 출력할때 포인터변수명 앞에 *(별표)를 붙이면 주소가 아닌 값을 가져오는거라고 설명해 주셨는데, 여기서는 왜 값이 아닌 주소를 불러오는건지 문의드립니다.

  • python
  • java
  • c
  • 정보처리기사
태0 댓글 2 좋아요 0 조회수 94

17강 포인터 조작과 출제패턴 / 08:40 / 메모리주소 관련 문의

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

안녕하세요. 영상에서 선언해 주신 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가 모두 동일한거 아닌가요? 이중포인터에 대해 이해가 부족해서 질문이 생겼을수도 있을거 같긴 한데, 영상 보면서 그때그때 궁금한게 생기면 일시정지하고 질문을 남기고 있어서 혹시 뒤에 설명해 주시는 내용이더라도 양해 부탁드립니다.

  • python
  • java
  • c
  • 정보처리기사
태0 댓글 2 좋아요 0 조회수 65

오디오 Input -> Speaker 출력 Noise

미해결

웹에서 다루는 미디어 - 화상 대화를 만들면서 배우는 MediaStream API

안녕하세요. 이번에 프로젝트를 진행 하고 있는데 해결되지 않는 부분이 있어서 질문을 드립니다. 상황을 간단히 말씀드리면, 미팅룸 개설을 하고 참여한 인원중에 말을 하면 해당 음성을 다른 참여자의 스피커로 출력하는 방식입니다. (발화자 제외) 이때 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; // 오류 발생 시 재생 루프 중지 } }

  • react
  • java
  • web-api
  • websocket
  • webrtc
성능측정달인123 댓글 1 좋아요 0 조회수 114

어디가 필요없는 코드인지 알아내려면....

해결됨

FastAPI 완벽 가이드

제가 아래의 사이트를 자체 서버를 만들어 구동을 해보았습니다. 물론 테스트 및 학습용으로.... http://112.166.186.238/ 사용한 것들 App서버: FastAPI로 백엔드 api와 간단한 프론트 엔드 DB 서버: MySQL Redis 서버 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코드에서 굳이 없어도 부분이 있는지 궁금합니다. 감사합니다.

  • python
  • sql
  • sqlalchemy
  • FastAPI
moljin 댓글 2 좋아요 0 조회수 106

API 별 실행 쿼리 모니터링 구현 질문 있습니다.

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? 코드의 어떤 로직이 이해가 안 되시나요? 어떤 개념이 헷갈리시나요? 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 에러가 발생했다면 어떤 에러인가요? 현재 작성하신 코드를 공유해주세요 안녕하세요 강의 잘 보고 있습니다. 저는 강의를 보고 아래와 같이 이해를 했습니다. 1.API 별 실행 쿼리 모니터링 구현 2.그러면, 모든 api 엔드포인트에 대한 쿼리 min , max값을 알 수 있음. 질문1 근데, 그렇게 되면 실제로 서비스에 필요한 코드와 모니터링 코드가 불필요하게 섞이는 거 아닌가요? 왜냐하면, 실제 모니터링이라고 하면 서버를 유지보수할 때, 필요한 데이터를 실시간으로 받아와서 시각화한다는 것으로 이해를 했습니다. 그런데 "API 별 실행 쿼리 모니터링 구현"은 서버의 유지보수에 필요한 모니터링 기능이 아니라, 1번만 딱 실행되면 되는데 이 부분이 왜 모니터링 구현으로 분류가 되는지 잘 모르겠습니다! 질문2 API 별 실행 쿼리 모니터링 구현 부분에서, 실무에서도 "API 별 실행 쿼리 모니터링을 구현"해서 사용하는게 맞나요? 잘은 모르겠지만, 쿼리 분석이나 다른 방법이 있을 것 같은데 왜 이 부분이 서비스 코드 내에 포함을 시키면서까지 모니터링의 영역으로 분류가 되는지 잘 모르겠습니다 ! 질문3 만약에 실무에서는 해당 방법을 잘 사용하지 않는다면 API 별 실행 쿼리 횟수를 보통 어떤 식으로 측정을 하는건가요??? 감사합니다 ! 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다!

  • java
  • spring
  • mysql
  • redis
  • 이력서
  • 카카오공채-채용
blackhole124 댓글 2 좋아요 0 조회수 100

작업형2에서 결측치 처리

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

결측치를 삭제할지, 결측치를 채울지는 본인이 선택하면 되는걸까요? 결측치 삭제할때 행, 열 , 특정 열 삭제 중 뭘 선택해야할지 좀 복잡해보여서 그냥 결측치를 채우는 방식으로 하고싶은데 결과값이 많이 달라질까 궁금합니다

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
pseoin0907 댓글 2 좋아요 0 조회수 51

작업형1 모의고사 데이터파일 오류

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

안녕하세요. 다름이 아니라 작업형1 모의문제를 풀고자 데이터를 다운 받았는데 사진과 같이 데이터에 오류가 생기는데 혹시 어떻게 해결할 수 있을까요? 노트북으로 다운 받았는데 오류가 생기길래 폰으로 다운을 받고 노트북으로 옮겼더니 또 오류가 생겼으며 메일을 통하여 다운받아도 똑같이 오류가 나네요ㅠㅠ 혹시 엑셀 버전 차이 때문일까요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
민지 댓글 2 좋아요 0 조회수 64

spotbug + @NonNullApi 로만 Null 방어가 될까요?

미해결

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

안녕하세요, nullable 프라퍼티가 없다면 null를 방어하는 방식에 대해 궁금한 점이 있어 질문남깁니다. 14. Member 도메인 로직 개발 - 생성자에 requireNonNull() 사용 15. 스프링을 이용한 널(null) 안정성 확보 - SpitBugs 플러그인 - package-info 에서 @NonNullApi 이렇게 세가지 방법을 배웠는데요, SpitBugs 플러그인이 "빌드과정에서 정적 분석을 하여 애노테이션 의미와 부합하지 않으면 에러를 내준다" 라는 말씀에 " 그럼 도메인에 Nullable 프라퍼티가 없으면 requireNonNull() 사용 없이 단순히 @NonNullApi + SpotBug만 사용해도 되지 않을까..? " 의문이 들었습니다. 3가지 모두 사용하는게 Null 방어에 괜찮을까요? 아니면 제가 이해한 대로 SpotBug 플러그인 + @NonNullApi 로만 사용해도 충분할까요?

  • java
  • spring
  • spring-boot
eunseo lay 댓글 2 좋아요 0 조회수 162

13강 질문

해결됨

코드 5줄의 마법, 5줄 머신러닝 PyCaret: 데이터 분석 프로젝트에 AutoML 날개 달기

안녕하세요, 13강에서 2개 질문 있습니다. ch =1로 레이블 되어있던데, shap값이 높으면 음수가 되니까 loyalch가 높을 수록 0으로 분류하는 것 아닌가요? 아래 코드에서 오류가 나는데 어떻게 수정해야 하나요? print("\n--- 4. Local Interpretation (SHAP Reason Plot) ---") interpret_model(tuned_lgbm, plot='reason', observation=0)

  • python
  • 머신러닝
  • automl
  • mlops
  • 인공지능(ai)
콩나물 댓글 2 좋아요 0 조회수 92

typedef 질문

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

5:50 제일 위에 선언 부분에 Bag이 typedef으로 데이터타입으로 정의한건지 struct 의 변수명으로 정의한건지 헷갈립니다 저렇게 하나만 쓰면 둘다 인가요?

  • python
  • java
  • c
  • 정보처리기사
댓글 2 좋아요 0 조회수 58

for-else는 언제 쓰나요?

해결됨

[왕초보] [누적 5,000명+] Python 프로그래밍 기초 완성 로드맵

안녕하세요. for-else 는 언제 쓰나요? 궁금합니다. 답변 감사합니다.

  • python
  • 머신러닝
  • 빅데이터
  • 인공지능(ai)
  • ax(에이전트-경험)
지오찬 댓글 2 좋아요 1 조회수 104

요즘 바이브코딩이 대세인데 파이썬을 배워야하는 이유가 뭘까요?

해결됨

[왕초보] [누적 5,000명+] Python 프로그래밍 기초 완성 로드맵

열심히 수강중인 학생입니다. 좋은 강의 정말 감사합니다. 개인적으로 궁금하여 문의드립니다. 요즘 바이브코딩이 대세인데 파이썬을 배워야하는 이유가 뭘까요?

  • python
  • 머신러닝
  • 빅데이터
  • 인공지능(ai)
  • ax(에이전트-경험)
지오찬 댓글 1 좋아요 1 조회수 317

코드에서 오류를 찾는 팁이 있을까요?

해결됨

[왕초보] [누적 5,000명+] Python 프로그래밍 기초 완성 로드맵

코드에서 오류를 찾는 팁이 있을까요?

  • python
  • 머신러닝
  • 빅데이터
  • 인공지능(ai)
  • ax(에이전트-경험)
정승혜 댓글 2 좋아요 2 조회수 98

인기 태그

인프런 TOP Writers

주간 인기글