묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
ACF 사용시 choice를 입력 박스 안보임
워드프레스 완전정복 122강을 수강중에 ACF를 이용하던 중 새로운 필드를 작성하는데 Choice란이 보이질 않네요. 현재 무료 버전을 쓰고 있는데 혹시 유료버전을 구입해야 되는 건가요?
-
미해결[보안] Wazuh+ELK(SIEM)를 활용한 위협헌팅(Threat Hunting) 시스템 구축 및 운영실습 (기초)
로그 한글 지원 등
안녕하세요. 제로미니 강사님 덕분에 wazuh 설치 및 에이전트 적용까지 할 수 있었습니다.추가로 wazuh에서 기본으로 제공하는 document 문서 이해방법도 늘었습니다. 추가로 궁금한 점이 있어 질문드립니다.파일명 : 한글파일내용 : 한글이 포함된 웹쉘파일 일때, wazuh 이벤트로그에서 보면 한글이 깨져있메일알람도 연동시켜서 받아봤는데 같이 깨지고 있습니다. 한글 안깨지게 하는 방법은 없는지 질문드립니다. wazuh 서버 리눅스는 ko_KR.utf8로 설정되어 있습니다. 감사합니다.
-
미해결[리뉴얼] 처음하는 MongoDB(몽고DB) 와 NoSQL(빅데이터) 데이터베이스 부트캠프 [입문부터 활용까지] (업데이트)
db.movies.aggregate() 질문
MongoDB Aggregateion 기본 명령 이해하기1 수업 3분쯤에 db.movies.aggregate([{$match:{year:1995}]) 문법을 그대로 따라 쳤는데, 에러같은건 전혀 나지 않고이 화면이 나옵니다. movies콜렉션에 데이터가 아무것도 안들어있는건가요?? 뭐가 문제인건지 모르겠습니다 ㅠㅠ 이것저것 찾아보니 제가 설치한 movies 컬렉션에는 데이터가 0건인거 같은데 왜 이런건가요? 강의에서 하라는대로 그대로 따라했습니다 ㅠ 몇 번 삭제하고 다시 해봐도 똑같이 데이터가 0건인거같아요
-
해결됨Godot Engine 으로 시작하는 첫 게임 개발
레이싱 배경이미지 자동스크롤시 연속이미지 실행안됨
자식노드 '흐르는배경' 씬을 플레이실행 할 때 '현재상태에서 시작 버튼'이 두번이상 안뜨는데 괜찮은건가요?흐르는배경씬에서 parallaxLayer>모션>미러링 y축 1024로변경 했는데 이미지 크기가 안바뀌고 플레이해보니 자동스크롤되는데 이미지가 자동으로 이어지지 않아요
-
해결됨토비의 스프링 6 - 이해와 원리
멀티 스레드를 사용하는 테스트에서 트랜잭션 사용에 대해서..
멀티 스레드를 사용하는 테스트에서는 @Transactional 을 어떻게 사용해야 할까요..? 동시성 이슈를 확인하는 테스트에서는 주로 ExecutorService 를 통해 스레드 풀을 생성해서 동시에 서비스 로직을 호출하는 식으로 테스트를 진행하면서 여러 문제를 겪었는데 어떻게 해결하면 좋을지 고민을 하다가 토비님에게 질문드려봅니다 ㅠㅠ다른 스레드에서 save() 한 오브젝트를 조회할 수 없는 문제.테스트 코드에 @Transactional 를 사용하게 되면 테스트 코드가 하나의 트랜잭션으로 묶이게 되는데, 다른 스레드에서 서비스를 호출 하기 전에 테스트를 위한 데이터를 save() 하고 다른 스레드가 서비스에서 save 한 데이터를 가져오려고 할 때 아직 DB에 commit 되지 않은 상태여서 가져오지 못하는 이슈가 있더라구요. -> db isolation level이 read uncommited 보다 높기 때문에 발생하는 것 같음. @Test @DisplayName("밖에서 저장한 데이터는 스레드 내부에서 가져올 수 없음") @Transactional void outsideTransaction() throws InterruptedException { Member member = new Member(1L, "테스트유저"); memberRepository.saveAndFlush(member); entityManager.clear(); TimeUnit.SECONDS.sleep(2); // 일정 시간 대기. try (ExecutorService executorService = Executors.newFixedThreadPool(32)) { executorService.submit(() -> { long count = memberRepository.count(); Optional<Member> optionalMember = memberRepository.findById(1L); System.out.println("member count: " + count); System.out.println("optionalMember.isEmpty: " + optionalMember.isEmpty()); }); } System.out.println("================================="); long count = memberRepository.count(); Optional<Member> optionalMember = memberRepository.findById(1L); System.out.println("member count: " + count); System.out.println("optionalMember.isEmpty: " + optionalMember.isEmpty()); }member count: 0 optionalMember.isEmpty: true ================================= member count: 1 optionalMember.isEmpty: false테스트 코드에 @Transactional 을 선언해도 테스트 코드 내부에서 생성한 스레드에서는 트랜잭션이 존재하지 않는 문제. @Test @DisplayName("내부 스레드는 트랜잭션이 존재하지 않음.") @Transactional void activeTransaction() { System.out.println("쓰레드 밖에서 트랜잭션 상태: " + TransactionSynchronizationManager.isActualTransactionActive()); try (ExecutorService executorService = Executors.newFixedThreadPool(32)) { executorService.submit(() -> { System.out.println("쓰레드 안에서 트랜잭션 상태: " + TransactionSynchronizationManager.isActualTransactionActive()); }); } } 위와 같은 테스트를 실행 했을 때, 출력되는 결과는 다음과 같았습니다.쓰레드 밖에서 트랜잭션 상태: true 쓰레드 안에서 트랜잭션 상태: false멀티 스레드를 사용하는 테스트에서 @Transactional 를 사용 했을 때 이런 문제점이 있었는데요.. 여러가지 시도해보다가 해결을 하지 못해서 결국 @Transactional 을 사용하지 않고.. 테스트가 끝날 때 마다 @AfterEach 통해서 DB를 직접 제거하는 방식으로 하고 있습니다... 이렇게 테스트는 @Transactional 을 사용하지 않고 서비스 로직에는 @Transactional 사용하고 있다보니, 실제 애플리케이션을 띄워서 api 부하 테스트를 해보면 원하는 결과가 나오지 않았습니다. 테스트 코드가 테스트 코드의 역할을 수행하고 있지 않네요이런 경우에는 어떻게 해결하는 것이 좋을까요? 감사합니다.
-
미해결Next + React Query로 SNS 서비스 만들기
refresh token rotation 질문
안녕하세요 강의를 듣고 next-auth를 활용하여 개발 중에 궁금한 점이 생겨 질문 드립니다.프로젝트에서 일반 로그인과 소셜 로그인을 모두 사용하고 있어next-auth의 signin callback에서 로그인일 경우 자체 서버에 요청하여 accessToken과 refreshToken을 발급 받고 jwt callback에서 엑세스 토큰의 만료 시간을 체크하여 만료 시에 재발급 요청이 되도록 구현하고 있습니다.이렇게 구현했을 경우 간헐적으로 서버 시간과의 타이밍 이슈 때문인지 api 요청 시에 401 토큰 만료 에러가 발생하는 순간이 존재합니다.따라서 401 상태코드일 경우에 refreshToken 토큰 재발급 요청을 하려고 하는데 refreshToken이 현재 next-auth에서 jwt 콜백에서 리턴되어 jwt토큰으로 생성되어 있습니다.이 401일 경우 재발급 요청 처리를 클라이언트 단에서 할 경우 refreshToken이 노출되어 보안상 이슈가 있을 것으로 예상이 되는데 서버단에서 처리를 하려면 next에서 어디서 처리를 하면 좋을 지 문의드립니다. async signIn({ account, user, credentials }) { const cookieStore = cookies(); const authorizationParams = JSON.parse( cookieStore.get("authorization-params")?.value ?? "" ); const action = authorizationParams.action; user.platform = authorizationParams.platform; if (!account?.provider || !sns_type_map[account.provider]) { throw new Error("Unsupported provider"); } user.snsType = sns_type_map[account.provider]; if (action === auth_action_type.signin) { return handleSignIn(user); // getAccessToken } if (action === auth_action_type.signup) { return handleSignUp(); } return false; }, async jwt({ token, account, user }) { // Initial sign in if (account && user) { return { ...token, ...user, accessToken: user.refreshToken, expiresAt: new Date( Date.now() + (user?.expiresIn ?? 0) ).toISOString(), refreshToken: "refreshtoken", }; } // Return previous token if the access token has not expired yet if (new Date() < new Date(token.expiresAt as string)) { console.log("@@@@@@valid"); return token; } else { // Access token has expired, try to update it console.log("@@@@@@expired"); const cookieStore = cookies(); const authorizationParams = JSON.parse( cookieStore.get("authorization-params")?.value ?? "" ); const body = { .... }; const tokenData = await authApi.reissueAccessToken(body); // reissue token return { ...token, ...user, accessToken: tokenData.accessToken, expiresAt: new Date( Date.now() + (tokenData.expiresIn ?? 0) ).toISOString(), refreshToken: tokenData.refreshToken, }; } }, 미들웨어에서 401 상태 코드 처리하는 것도 알아보았으나 일반적인 방식인지 궁금합니다.미들웨어에서 401일때 재발급 요청 시 새로운 엑세스 토큰으로 재요청이 정상적으로 되는 것은 확인했으나 다시 next-auth의 jwt토큰에 재발급된 값을 세팅해줘야 하는데 어떻게 해야할지도 궁금합니다.import { NextResponse } from 'next/server'; import { getToken } from 'next-auth/jwt'; export async function middleware(request) { const token = await getToken({ req: request, secret: process.env.AUTH_SECRET }); if (request.nextUrl.pathname.startsWith('/gateway')) { const accessToken = token?.accessToken; const headers = new Headers(request.headers); if (response.status === 401) { const refreshToken = token?.refreshToken; const refreshResponse = await fetch("/reissueToken") const refreshData = await refreshResponse.json(); if (refreshResponse.ok) { const newAccessToken = refreshData.accessToken; headers.set('Authorization', `Bearer ${newAccessToken}`); const newResponse = NextResponse.next({ request: { headers: request.headers, }, }); } // 토큰 재발급 실패 시 처리 return NextResponse.redirect('/login'); } return NextResponse.next(response); } return NextResponse.next(); }
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
소스 코드 git에 있나요?
소스 코드가 git에 있는건가요? 강의 중간에 git commit 하시던데 소스 코드를 어디서 볼수 있나요?
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
pinecone 이 더이상 무료가 아닌거 같은데요;;
pinecone에서 인덱스를 생성하려고 봤더니 더이상 무료로는 인덱스 생성이 안되는 것 같아서요;; 그런데 강의 후반부는 전부 pinecone 사용하는걸로 하셔서 실습을 따라하기 좀 불편하네요;;
-
미해결딥러닝을 활용한 자연어 처리 (NLP) 과정 (기초부터 ChatGPT/생성 모델까지)
130_Transformer.ipynb transformer.summary() 에러
130_Transformer.ipynb를 수정없이 colab에서 모두 실행하였을 때, transformer.summary() 블럭에서 다음과 같은 에러가 나옵니다. 어떤 부분을 수정하면 좋을지 알 수 있을까요?--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-51-b0463e4f27a6> in <cell line: 1>() ----> 1 transformer.summary() 1 frames /usr/local/lib/python3.10/dist-packages/keras/src/utils/traceback_utils.py in error_handler(*args, **kwargs) 120 # To get the full stack trace, call: 121 # `keras.config.disable_traceback_filtering()` --> 122 raise e.with_traceback(filtered_tb) from None 123 finally: 124 del filtered_tb /usr/local/lib/python3.10/dist-packages/optree/ops.py in tree_map(func, tree, is_leaf, none_is_leaf, namespace, *rests) 745 leaves, treespec = _C.flatten(tree, is_leaf, none_is_leaf, namespace) 746 flat_args = [leaves] + [treespec.flatten_up_to(r) for r in rests] --> 747 return treespec.unflatten(map(func, *flat_args)) 748 749 TypeError: 'int' object is not iterable
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
1회 코드해석 문제 질문있어요
25분4초 영상 질문입니다. 1번에서 int*a가 미리 선언되었기 때문에 스왑이 정상작동 하는것일까요? 2번답 nx라는건 이상하게 보자말자 감이 오던데요..!혹시 sizeof(a)-1 를 했다면 답으로 되었을까요..? 궁금하네요 29분 12초 상속문제 입니다. 이상하게 상속문제만 보면 손댈 엄두가 안나네요..시작만 하면 풀리는데 그 시작이 안됩니다 ㅠㅠ...Venicle obj = new Car("Spark")에서new Car가 클래스 이름을 지칭하기 때문에 같은 클래스 이름을 찾아보면 되는걸까요?
-
미해결스프링 배치
Transition - on() / to() / stop(), fail(), end(), stopAndRestart() 강의의 38:39에 대한 내용 질문
FlowJob에 대한 강의를 듣다가궁금한 점이 있어서 질문드립니다. from()에 관한 질문인데요,from()의 역할이 현재 트랜지션에서 벗어나새로운 트랜지션을 다시 재정의하는 것으로 이해했습니다. 그래서 38:39 부분에서,step1()은 처음에 start()에서 정의하고,30번 째 라인에서, 다시 step1()의 기준을 재정의하FAILED가 아닌 모든 경우에 대한 flow를 재구성하는 것으이해했습니다. 질문은 step2()에 관한 것입니다.step2()는 첫번째 트랜지션인]on("FAILED") 하위에 to()를 통해서 최초에 정의되었습니다. 하지만, 그리고 step2()는 "FAILED" 상태인 경우에,FlowJob을 Stop하고 그 결과로 Job을 상태를 Stopped로 만듭니다. step2의 중점 Flow는step1() -> FAILED -> step2() -> FAILED -> STOPED인 것을 알 수 있습니다. 그런데, 34번 라인에서 다step2를 가져와서 이전에 정의 FAILED를 제외한 나머지 경우를 진입시키는 Transtion을 작성하였습니다. 코드만 보면, 계층이 step1과 나란한 구조라서,헷갈릴 것 같습니다. 그래서, 저는 34~36번 라인의 코드를,29번 라인 이후에,작성해도 같은 결과를 보장하는지 궁금합니다. from절이 어디에 사용돼도,항상 from절 내부에 있는 StepBean을 기준으다시 flow가 재정의 된다고 봐도 되는걸까요?
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
js 받아오는 타이밍
link component 에 prefect 을 false 로 넘겨줄때,직접 이동하진 않지만 마우스 hover시 js 를 받아오네요 그런데 프로그래미틱한 방법으로 /test 로 이동시에는 왜 해당 페이지로 이동하고 나서 받아오나요 ?
-
해결됨AWS로 쉽고 빠르지만 아주 견고한 서버 환경을 구축하는 방법
EC2 하나만 운용시 로드밸런서를 설정해야하는지
만약 스프링 부트 서버용 EC2 한 개만 운용한다면 굳이 로드밸런서를 설정하지 않아도 괜찮을까요? 그리고 만약 스프링부트 서버용 EC2를 2, 3개 더 만든다면 프리티어단계에선 탄력적 IP에 대한 요금만 부과되는 것인지, EC2 인스턴스 갯수만큼 요금이 나오는 것인지 궁금합니다.
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
리덕스나 리코일 등 상태관리 집중 교육은 계획이 없으신가요?
리덕스나 리코일 등 상태관리 집중 교육은 계획이 없으신가요?
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
최종 과제 제출
안녕하세요. 최종 과제 노션으로 작성해서 링크 공유드립니다.감사합니다!https://staticstic.notion.site/9c91ee729d734edeb5a85cc8fa6bf2b6?pvs=4
-
미해결ElasticSearch Essential
ES 트러블슈팅 사례분석 강의 내용중 궁금한 게 있습니다.
안녕하세요 강사님 좋은 강의 만들어주셔서 도움이 많이 되었습니다.특시 트러블슈팅 강의는 운영시 큰 도움이될 것 같아요. 강의 수강중 아래 2가지 내용이 궁금하여 글 남깁니다. 트러블슈팅 사례분석 #2 (문서색인 불가) 에서 디스크 사용량에 따른 제한을 주는 클러스터 세팅 옵션이 있었는데요. 아래 두가지 옵션에 대하여 궁금한게 있습니다.cluster.routing.allocation.disk.watermark.low: 85% cluster.routing.allocation.disk.watermark.high: 90%위와 같이 워터마크 설정을 % 로 설정을 할 수도 있지만, 절대값으로도 가능한것 같은데요.저희쪽 설정을 보니 아래와 같이 되어 있는데 이럴때 의미가 어떻게 되는지 궁금합니다cluster.routing.allocation.disk.watermark.low: 25.0gb cluster.routing.allocation.disk.watermark.high: 22.0gblow 설정의 경우 디스크가 25.0gb 남았을경우 더이상 샤드를 배치하지 않는다. 로 이해되는데 high 설정이 어떤 의미인지 잘 이해가 안되어요. 트러블슈팅 샤례분석 #3 (간헐적 색인 누락)에서 문제해결 방법으로 데이터 노드 증설 혹은 큐 증설을 말씀 주셨는데요. 아래와 같은 상황에서 데이터 노드 증설이 해답이 되는지 궁금합니다.프라이머리 노드가 3개이고 데이터 노드가 3개인 상황에서 색인이 누락되고 있으면, 이때 데이터 노드를 증설해도 결국에는 추가된 노드는 색인 작업에 참여치 못하것 같은데요. 제가 이해한게 맞는지 궁금합니다. 이럴경우에는 프라이머리 샤드 갯수를 조정할 수 없는 상황일 것 같아서 어떤식으로 문제를 해결 할 수 있을지 궁금합니다.
-
미해결김영한의 실전 자바 - 중급 2편
해시 충돌 구현 링크드리스트 사용이유!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요! 강사님께서 링크드 리스트를 사용하시는 이유를 설명해주셨는데 잘 이해가 안가서 질문을합니다!어레일이스트를 사용하는것보다 링크드 리스트를 사용하는 이유가.. 충돌?이 덜나서라고 하셨는데 이부분을 자세하게 설명해주실수있나요? 잘 이해가 안가네요 ㅜㅜ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jsp 페이지 인식 안되는 문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.jsp 페이지가 인식되지 않습니다./jsp/members/new-form.jspgradle gradle 적용후 새로 적용했고 했고 서버도 재시작 했는데 jsp 페이지 접근이 안됩니다.index.html 정상 접근됩니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
build 실행 안되시는 분들 이렇게 해결하시면 됩니다.
CRITICAL WARNING: [Common 17-183] Failed to open handle xvlog.log. Please check access permission of directory '/home/j/Matbi_VerilogHDL_Season1'. You should restart the application from a writable working directory. 이런 경고문 뜨시는 분들은 build 파일이 들어있는 폴더에 접근 권한이 없어서 발생하는 문제인데, " Matbi_VerilogHDL_Season1"이 설치 되어있는 폴더로 가셔서sudo chmod -R 777 Matbi_VerilogHDL_Season1==> "Matbi_VerilogHDL_Season1" 디렉토리 하위 모든 폴더, 실행파일에 대하여 모든 사용자가 접근가능하게 변경하는 명령어이렇게 하시면 xvlog, xelab, xsim 접근이 가능해져서 문제가 해결됩니다... 저처럼 헤매시는 분들 계실까봐 공유해봐요!
-
미해결
Comparable, Comparator의 차이
두개의 차이를 모르겠습니다.어쩔때 comparable을 써야하고 어쩔떄는 Comparator를 써야하는지 잘모르겠습니다