묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Practical Testing: 실용적인 테스트 가이드
개인적으로 궁금해서 질문드려요!
저번에 OrderService 작성 시, LocalDateTime.now()를 사용하는걸 보고나서 강의대로 따라 안하고 인터페이스로 한 번 감싸서, 테스트코드에서는 고정된 값을 넣어 검증할 수 있게 바꿨습니다. (사실, 이 때 AfterEach를 쓰지않고 그냥 @Transactional을 사용해서 테스트가 깨지는지 바로 몰랐어요. 그대로 안해서 죄송해요 ㅠ) IntegrationTestSupport로 환경통합하는 섹션 듣는중에, 변경감지가 동작하지 않아서 디버깅해보니깐, stock.deductQuantity에서 변경감지가 동작하지 않더라구요. @Transactional을 붙여서 해결은 했는데 왜 동작이 안한건지 궁금합니다. https://drive.google.com/file/d/1E9-pN1QbrCyZ1w2G5CSP7JtnB6c7SFPf/view?usp=drive_link
-
해결됨Next + React Query로 SNS 서비스 만들기
실무에서 리버스 인피니트 스크롤링 최적화 방법
채팅을 계속 올려서 몇개월 치를 사용자가 본다면 위로 채팅 기록이 엄청 쌓일텐데, 실무에서 메모리가 넘치는걸 방지하는 방법으로 사용하시는게 있는지 어떤걸 사용하시는지 궁금합니다.찾아보니 react-window 같은 라이브러리를 사용해서 실제 랜더링 하는 요소 갯수를 제한하고 스크롤을 유지 시켜서 성능 향상을 하는 글을 봤습니다. 실제로 실무에서 이런 방법을 주로 쓰는지 궁금합니다.
-
해결됨[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
로그아웃 관련해서 질문 있습니다.
import {useEffect} from 'react'; import {useMutation, useQuery} from '@tanstack/react-query'; import {queryClient} from 'containers/TanstackQueryContainer.tsx'; import {getAccessToken, logout, postLogin, postSignup, socialLogin} from 'apis'; import {UseMutationCustomOptions} from 'types/mutations/common.ts'; import { numbers, removeEncryptStorage, removeHeader, setEncryptStorage, setHeader, } from 'utils'; import {queryKeys, storageKeys} from 'constants/storageKeys/keys.ts'; function useSignup(mutationOptions?: UseMutationCustomOptions) { return useMutation({ mutationFn: postSignup, throwOnError: error => Number(error.response?.status) >= 500, ...mutationOptions, }); } function useLogin(mutationOptions?: UseMutationCustomOptions) { return useMutation({ mutationFn: postLogin, onSuccess: data => { // 토큰 저장. const accessToken = data.result.accessToken; const refreshToken = data.result.refreshToken; setEncryptStorage(storageKeys.ACCESS_TOKEN, accessToken); setEncryptStorage(storageKeys.REFRESH_TOKEN, refreshToken); setHeader('Authorization', accessToken); }, onSettled: () => { queryClient.refetchQueries({ queryKey: [queryKeys.AUTH, queryKeys.GET_ACCESS_TOKEN], }); }, throwOnError: error => Number(error.response?.status) >= 500, ...mutationOptions, }); } function useSocialIdTokenLogin(mutationOptions?: UseMutationCustomOptions) { return useMutation({ mutationFn: socialLogin, onSuccess: ({result}) => { setHeader('Authorization', result.accessToken); setEncryptStorage(storageKeys.REFRESH_TOKEN, result.refreshToken); }, onSettled: () => { queryClient.refetchQueries({ queryKey: [queryKeys.AUTH, queryKeys.GET_ACCESS_TOKEN], }); }, throwOnError: error => Number(error.response?.status) >= 500, ...mutationOptions, }); } function useGetRefreshToken() { const {data, error, isSuccess, isError, isPending} = useQuery({ queryKey: [queryKeys.AUTH, queryKeys.GET_ACCESS_TOKEN], queryFn: getAccessToken, staleTime: numbers.ACCESS_TOKEN_REFRESH_TIME, refetchInterval: numbers.ACCESS_TOKEN_REFRESH_TIME, refetchOnReconnect: true, refetchIntervalInBackground: true, }); useEffect(() => { if (isSuccess) { setHeader('Authorization', `Bearer ${data?.result.accessToken}`); setEncryptStorage(storageKeys.ACCESS_TOKEN, data.result.accessToken); setEncryptStorage(storageKeys.REFRESH_TOKEN, data.result.refreshToken); console.log(isSuccess, '성공'); } }, [isSuccess]); useEffect(() => { if (isError) { removeHeader('Authorization'); removeEncryptStorage(storageKeys.REFRESH_TOKEN); } }, [isError]); return {isSuccess, isError, error, data, isPending}; } function useLogout(mutationOptions?: UseMutationCustomOptions) { return useMutation({ mutationFn: logout, onSuccess: () => { removeHeader('Authorization'); removeEncryptStorage(storageKeys.REFRESH_TOKEN); queryClient.resetQueries({queryKey: [queryKeys.AUTH, 'getAccessToken']}); queryClient.clear(); }, throwOnError: error => Number(error.response?.status) >= 500, ...mutationOptions, }); } function useAuth() { const signUpMutation = useSignup(); const loginMutation = useLogin(); const socialIdTokenMutation = useSocialIdTokenLogin(); const getNewAccessToken = useGetRefreshToken(); const logoutMutation = useLogout(); const isLogin = getNewAccessToken.isSuccess; const isLoginLoading = getNewAccessToken.isPending; return { signUpMutation, loginMutation, socialIdTokenMutation, isLogin, logoutMutation, isLoginLoading, getNewAccessToken, }; } export default useAuth; // RootNavigator.tsx import FeedTabNavigator from '../tab/FeedTabNavigator.tsx'; import AuthStackNavigator from '../stack/AuthStackNavigator.tsx'; import {useEffect} from 'react'; import SplashScreen from 'react-native-splash-screen'; import useAuth from '../../hooks/queries/AuthScreen/useAuth.ts'; export default function RootNavigator() { const {isLogin, getNewAccessToken} = useAuth(); console.log(isLogin); useEffect(() => { setTimeout(() => { SplashScreen.hide(); }, 1000); }, []); return <>{isLogin ? <FeedTabNavigator /> : <AuthStackNavigator />}</>; } 안녕하세요, 강사님, 강사님 강의를 전체 모두 듣고, 비슷한 느낌으로 풀스택으로 앱개발을 진행하고있습니다.강사님 강의처럼 쿼리를 활용하여 로그인 기능을 구현하고 싶어 useLogout훅에 onSettled를 넣었을 때는 강사님처럼 동일한 이상증상이 발생했고, 이를 해결하기 위해 강사님께서는onSuccess부분에queryClient.resetQueries({queryKey: [queryKeys.AUTH]});이 부분을 넣어주셔서 해결을하셨는데, 저는 해당 부분을 넣어도, 로그아웃이 되었다가, 바로 refreshToken으로 accessToken을 재발급받아, 로그인이 되지 않는 현상이 일어나고있습니다. clear()나 이런 것들을 활용했지만, 제대로 로그아웃이 동작하지 않아. 어떻게 해결할 수 있을지 의견을 구하고자 질문을 남깁니다.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
음 Action에 없는 내용들은 어떻게 활용해야할지 질문드립니다.
현재 문제자동적으로 여러개의 선택상자를 입력하고어떤것이 체크되었는지 확인하여 리턴할 것을 정해야하는 함수를 구현하려 합니다. 1번, 3번이 선택 되었다면 1, 3을 리턴하는 방식을 구현하려 했습니다. 제가 질문드린 내용을 구현하려면[HwpAutomation.hwp 내부 사진]다음사진에서 IHwpObject - IXHwpDocuments - IXHwpFormCheckButtons의IXHwpFormCheckButton:양식 개체 체크 버튼 오브젝트에서caption값을 수정하는 방법value 값을 리턴하는 것 여기에서 사실 XHwpDocuments.XHwpFormCheckButtons를 해야한다고 생각했는데 안되는거 같아서 혹여 이 부분을 참고하여서 개발을 하려면 어떻게 이해를 해야할까요 ㅠㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 db table 생성안됨
h2 db 연결은 되었는데 member테이블 생성이 안됩니다. spring: #띄어쓰기 없음 datasource: #띄어쓰기 2칸 url: jdbc:h2:tcp://localhost/~/jpashop #4칸 username: sa password: driver-class-name: org.h2.Driver jpa: #띄어쓰기 2칸 hibernate: #띄어쓰기 4칸 ddl-auto: create #띄어쓰기 6칸 properties: #띄어쓰기 4칸 hibernate: #띄어쓰기 6칸 show_sql: true #띄어쓰기 8칸 format_sql: true #띄어쓰기 8칸 logging.level: #띄어쓰기 없음 org.hibernate.SQL: debug #띄어쓰기 2칸 # org.hibernate.type: trace #띄어쓰기 2칸 ```
-
미해결[핵집] 2025 빅데이터 분석기사(필기)_과목 1~2
통합 강의안 요청
강의 자료 통합본 자료 공유 요청드립니다. jungsu9017@gmail.com 감사합니다.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
R.A.G를 통한 구현의 Scope 문의
저는 R.A.G를 통한 LLM 챗봇을 개발을 하기위해 본 강의를 수강하기 시작했는데 너무 유읙합니다. 이럴 경우에도 embedding을 해서 R.A.G를 통해 retrieve가 가능한지 여쭤보고 싶어요.데이터 크롤링 (컬럼 중에 리뷰데이터)의 데이터를 전처리해서 바로 Embedding을 통해 vector database에 넣어서 RAG를 활용할 수 있나요?결과물에 대한 시나리오는 User가 챗봇에게 피부관련 사진 또는 문제에 대해서 고민을 입력하면 특정 논문 (강사님 강의에서 tax 파일과 같은 의미)을 기반으로 답변을 주게 되며 동시에 특정 쇼핑몰의 화장품의 리뷰들을 요약해주며 해당 제품을 추천하는 형태의 서비스입니다.지금 생각으로는 데이터크롤링을 통해 긁어온 모든 자료들을 embedding해서 RAG할 수 있을 것 같은데 그것에 가능한지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 질문 드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/2fabda49b9824800982906f0ee7e106a어디가 틀린지 모르겠습니다...
-
해결됨Next.js 시작하기
스페이스 + 컨트롤 눌러도 활성화 안되시는분 참고하세요...
인텔리센스 단축키 (Intellisense shortcut)¶https://stackoverflow.com/questions/51341555/visualcode-shortcut-to-display-autocomplete-list-before-typing-in-macos인텔리센스 사용시 한영 전환(ctrl + space)와 스팟라이트(cmd + space) 단축키와 충돌이 발생하므로 (option + esc) 조합을 사용합니다.메인 메뉴 Code > Preferences > Keyboard Shortcuts (cmd + K, cmd + S)에서 단축키(Trigger Suggest)를 (ctrl + .)로 변경할 수 있습니다.
-
미해결C# OpenCV 컴퓨터비전 입문 강좌
20강 threshold 질문이요.
안녕하세요 대희님. 대희님 강의 들으며 컴퓨터비전 맛보고 있는 학생입니다.20강 수강하면서 질문이 생겼습니다. 7분 정도(강의 지점)에서 FindContour 메소드에서 bin 필드 정의할 때bin = this.Binary(src, 150); 이라고 Binary 메소드에 threshold를 150으로 주셨는데150 말고 다른 숫자 이것저것 넣어봤더니 88 미만의 숫자를 입력하면 polygon.png 이미지의 외부에 빨간선이 그려지고, 88 이상의 숫자를 입력하면 polygon.png 이미지의 2열 4행 사각형의 내부에 빨간선이 그려지더라구요.혹시 threshold를 150으로 준 이유가 있으실까요?
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
이미지 데이터 학습 및 응답
안녕하세요 강사님먼저 훌륭한 강의 공유해주셔서 너무 감사합니다저는 지금 사내 위키를 크롤링해서 그 내용을 학습하고 이에 대한 내용을 GPT에게 질문했을 때 답변하는 챗봇을 개발하고 있습니다.가이드 문서에는 이미지 파일을 통한 예시와 함께 작성된 가이드 문서가 많은데 이를 어떻게 학습시키거나 이용자에게 뿌려줄 수 있을지 궁금합니다첨부된 GPT답변을 보시면 예제 스크린샷이라고 나오지만 제가 문제로 예상하는것은 위키가 로그인 된 사용자만 열람이 가능하기 때문에 이미지 링크 파일 또한 로그인되지 않은 상태에서는 접근이 불가능하기 때문입니다.혹시 답변에 도움이 될까 싶어 제가 구현한 단계를 마지막으로 질문 마치겠습니다크롤링(selenium)을 통해 wiki를 탐색하며 .txt파일로 긁어옵니다표 같은경우 강사님 조언대로 table -> markdowncode태그는 ```code``` 태그로 감싼다image데이터의 경우 src에서 파일 링크를 추출해서 text로 변환 (ex https://cdn.inflearn.com/public/files/courses/324145/9b8f6df3-8278-446f-b0da-394371126807/inflearn_python_07.png)DirectoryLoader로 파일들을 embedding해서 벡터화강의 따라가며 나머지 동일하게 구현
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part3]
아나콘다를 사용하지 않고 파이토치 사용하는 방법
회사에서는 라이선스 문제로 아나콘다를 설치하여 사용하지 못하고 있습니다. 그래서 이전 강의부터 계속 VS CODE에서 주피터노트북 확장자를 사용하여 강의를 듣고있습니다. 머신러닝 강의 때는 VS CODE에서 라이브러리가 문제 없이 설치되었는데, 파이토치의 경우 터미널에서 pip install torch torchvision torchaudio 한 후, 셀에서 import torch를 하면 계속 "[WindError 126] 지정된 모듈을 찾을 수 없습니다.~~~~" 에러가 뜹니다. 혹시 VS CODE에서 주피터노트북을 활용하여, PIP를 통해 파이토치 설치법을 알려주실수있는지 문의드립니다. 추가로 CUDA를 지원하지 않는 경우 cpu only로 설치해도 강의를 따라하기에 무리가 없는지 궁금합니다. - 강의 영상에 대한 질문이 있으시면, 주말/휴일 제외, 2~3일 내에 답변드립니다- 우선 질문전에 검색을 꼭 해보세요. 저희 목표는 스스로 이슈를 해결하는 역량을 기르는 것이고, 이는 즉 검색역량을 기르는 것입니다- 강의 영상 외적인 질문은 인프런 커뮤니티 (https://www.inflearn.com/community/questions) 도 활용해보세요~
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
섹션2 Grid Search 예제에서 Test data분리시 계층 적용 여부
섹션2의 Grid Search 예제에서 학습/테스트 데이터 분리시 train_test_split()함수에서 stratify옵션없이 사용되었는데요, 계층 분할을 위해 stratify=iris_data.target 옵션을 넣어야 하는거 아닌가요?stratify옵션 넣고 테스트해보니 학습데이터 score는 강의동영상의 점수보다 낮았는데, test data에 대한 스코어는 강의 동영상과 동일하게 나왔습니다.
-
미해결디스이즈 디스커버 디스코드 파이썬봇
똑같이 따라했는데 안되요
디스코드 봇 만들기봇만드는 강의에서 똑같이 따라했고 파일명과 토큰명등 제꺼로 등록해서 했음에도 가장 기본인 인사가 작동하지 않습니다. ㅠㅠ GPT도 토큰확인해보라는데 토큰리셋해봐도 안되요....ㅠㅠ 도와주세요 ! import discordfrom discord.ext import commands app = commands.Bot(command_prefix='/') @app.eventasync def on_ready(): print(f'{app.user.name} 연결 성공') await app.change_presence(status=discord.Status.online, activity=None) @app.command()async def hi(ctx): await ctx.send('Hi there!') app.run('토큰')
-
미해결카프카 완벽 가이드 - 커넥트(Connect) 편
offset 커밋 관련 질문
커넥터와 별개긴 한데, 카프카 관련하여 문의드립니다.현재 프로젝트 디폴트 설정이 자동 커밋인데, 리스너를 내리거나 서버를 내릴때에 예외적으로 커밋을 치고 싶습니다. 이런 경우 수동커밋이 가능한지 문의드립니다.
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
JSON을 딕셔너리, 튜플 같은 데이터 구조로 볼 수 있을까요?
안녕하세요.패턴으로 실습하며 익히기: 네이버 Open API로 클롤링하기강의를 듣고 있습니다.강의들 듣다 보면 JSON을 '데이터 포맷'이라고 부릅니다.Q1 그런데 이 데이터 포맷이 파이썬 에서 나왔던 변수를 표현하는 데이터 구조인 딕셔너리, 튜플과 비교하면 어떻게 정리할 수 있을까요?인터넷에 찾아보고 다음과 같이 정리했는데, 코멘트 해주시면 감사하겠습니다.딕셔너리는 파이썬에서 일반적인 데이터 구조의 한 종류입니다.JSON은 자바스크립트에서 데이터 교환의 상황에서 쓰이는 데이터 포맷입니다.데이터 구조와 데이터 포맷의 공통점은 둘다 문자열로 표기된다는점입니다.차이점은 데이터 포맷은 포맷 즉 껍데기 이기에 딕셔너리 이외 형태로 불러올 수 있습니다.이에 반해 데이터 구조는 다른 데이터 형태로 불러올 수 없습니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
section11 - event-bubbling 에러 문의있습니다
새 pc에서 강의를 듣는 중에 yarn dev 후 웹페이지에서 이런 에러가 뜹니다 ㅜㅜ node_modules 삭제 후 재설치 해도 이렇게 뜨는데 어떻게 해결해야 할까요?
-
해결됨독하게 시작하는 C 프로그래밍
질문은 아니지만, VS가아닌 VScode를 통하여 메모리 보는법 공유해봅니다
강사님께서는 VS를 통하여 영상을 올리셨습니다만,많은 분들께서는 저처럼 VScode를 사용하고 있을거라 생각합니다 제가 서칭하여 얻은 결과가 도움이 될까하여 공유해봅니다혹시 문제가 된다면 글 내리겠습니다! @@ 아래 과정은 영상의 코드를 그대로 사용합니다-- 수정 --VScode Extension에서 MemoryView를 검색하여 다운영상의 예제코드, F5 클릭으로 디버깅 수행그러면 하단 터미널 레이아웃 목록에서, MEMORY 목록이 뜰겁니다 클릭해당 레이아웃 상단의 + 버튼을 클릭합니다영상에서처럼 변수 이름을 입력합니다 ( &test )( 변수일 경우 &변수이름 , 배열일 경우 배열이름 입력 )이어서 디버깅 수행하시면 메모리 값을 볼 수 있습니다저는 성공적으로 메모리값을 보고 있지만 혹시나 안되시는분들은 MemoryView Extension 관련해서 직접 찾아보길 바랍니다 :)
-
해결됨GraphQL 완전정복 (키오스크를 만들며 배우는 풀스택 과정) - [2024 부분 리뉴얼]
Upload, 파일사이즈 코드 질문있습니다.
안녕하세요import GraphQLUpload from 'graphql-upload' import mutations from './mutations' import queries from './queries' const resolvers = { Upload: GraphQLUpload, Mutation: mutations, Query: queries, } export default resolvers 위에서 Upload: GraphQLUpload, 이 코드가 어디서 쓰이는지 궁금합니다.혹시 뮤테이션문에서 Upload 타입으로 쓰일까요?아래의 Upload 가 위의 코드의 Upload일까요ㅠㅠconst UPLOAD_FILE = gql` mutation ($file: Upload) { uploadFile(file: $file) { fileName fileType filePath } } `스트림으로 파일을 처리하는 방식과 browser-image-compression 라이브러리로 이미지를 압축해서 서버에올리는것과 어떤 차이가 있는지 궁금합니다.스트림으로 파이프 연결해서 하는방식은 처음 써봐서 생소해서그런지 좀 헤매고있습니다 ㅠㅠ..보통 프론트쪽에서 browser-image-compression 라이브러리를 사용해서 이미지를 압축하고 서버에 전송하여 서버에서는 s3에 올리는식으로했었거든요..강사님이 스트림 사용하신이유는 파일전송은 용량이크기때문에 일정크기로 작게나누어 서버로 전송하여 메모리효율성과 성능을 향상시키기위해서 하신걸로 알고있는데요, 그러면 스트림 + browser-image-compression 라이브러리를 같이사용해서 서버에 전송후 s3로 업로드하면 금상첨화일까요?어떻게하는게 좋을까요?.. 최대한 질문을 간소하게하려고했는데 죄송합니다..
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
client_id vs client_key
안녕하세요. 패턴으로 실습하며 익히기: 네이버 OpenAPI로 크롤링하기 강의배우고 있습니다.본 강의에서는 header_params 의 키와 값으로 {'X-Naver-Client-Id':client_id, 'X-Naver-Client-Secret':client_secret}를 쓰시더라구요. 그런데 이게 계속 오류가 나서 GPT에 오류를 점검해달라고 했더니 id대신 key를 쓰라 말했습니다.실제 써보았더니 그제서야 크롤링이 되더라구요. 왜 그런까요?