묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)
Project Rules 추가부분
안녕하세요 강사님의 강의 항상 정말 잘 듣고있습니다! 프로젝트 세팅 관련 질문이 있습니다!강의 자료의 Project Rules 추가 부분은 커서ai 업데이트로 살짝 달라진 부분이 있는데요추가로 주신 rules 강의 자료 봤는데 잘 모르겠어서 질문드립니다!이런식으로 하는거 맞나요? 그리고 Notepads 역할 설정도 rules manual로 대체 가능하다고 하신거 같은데 이 경우 파일 확장자가 .mdc로 되는데 이렇게 해도 되는건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링부트 프로젝트를 위해 자바강의와 스프링부트강의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]안녕하세요.잘 듣고 있는 수강생입니다. 지금 스프링부트로 프로젝트를 하려고하는데 자바문법기본도 아직 익숙치 않은 상황입니다. 그래서 지금 강의를 자바 기본편부터 듣고 스프링부트강의를 듣는게 나을까요? 아니면 프로젝트를 위해서 스프링부트 강의를 먼저 듣는게 나을까요?
-
미해결Next + React Query로 SNS 서비스 만들기
fetch 캐싱과 revalidate 관련
안녕하세요 제로초님 fetch 캐싱과 revalidate 관련해서 궁금한 점이 있어 질문드립니다. await fetch('https://api.example.com/posts', { next: { revalidate: 60 }, });A가 /posts를 최초 요청합니다.→ API에서 데이터를 받아오고, 해당 데이터는 Next.js 서버 캐시에 저장이후 60초 동안은 다른 누구든지 이 캐시된 데이터를 그대로 받음그런데 60초가 지나기 전에 DB에서 게시글 1번의 제목이나 내용이 수정됨60초가 지나고 A가 다시 목록을 요청→ 이 시점은 revalidate 만료 시점 이후이므로 재검증 타이밍→ 하지만 A는 여전히 이전 캐시 데이터를 먼저 받고,→ A의 요청을 계기로 Next.js가 백그라운드에서 API를 다시 fetch하여 캐시를 갱신곧이어 B가 /posts를 요청하면→ B는 A 덕분에 갱신된 최신 데이터를 바로 받음 제가 이해한 것이 맞을까요? 만약 저런식으로 동작하면 상세 페이지와 데이터 불일치 문제가 발생할 수 있지 않을까 해서요 만약 상세 페이지 요청도 이렇게 작성되어 있다면await fetch('https://api.example.com/posts/1', { next: { revalidate: 60 }, });A는 목록 요청만 했고, 상세 페이지는 요청하지 않음B는 A 이후에 목록을 보고 → 최신 제목을 확인한 뒤,→ 게시글 1번의 상세 페이지를 클릭그런데 상세 페이지의 제목은 여전히 수정 전의 이전 제목으로 보임→ 목록과 상세 페이지 간에 데이터가 불일치할 수 있음정리하자면 제가 이해한 Next.js의 fetch + revalidate 캐시 동작이 맞는지 궁금하고위와 같은 목록-상세의 데이터 불일치 현상은 실제로 발생 가능한 문제인지 궁금합니다. 제가 실제로 테스트해봤을 때 위 시나리오대로 목록과 상세 페이지에서 서로 다른 제목이 보이는 걸 확인했습니다. 혹시 제가 잘못 이해하고 테스트한 부분이 있는 건지, 아니면 실제로도 발생할 수 있는 동작인지 궁금합니다.
-
미해결홍정모의 따라하며 배우는 C++
intialization list
선언시에 바로 초기화하는 것과 intialization list를 활용하는 방안이 있는데,예전에 제가 배울 때는 선언시에 초기화하는 것보다는 intialization list를 활용하는 것이 더 깔끔하고 좋다!라고 배웠었는데, 딱히 상관이 없는건가요? 그저 스타일의 차이인가요?
-
해결됨[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
forwardRef 지원 중단에 대한 대응?
https://ko.react.dev/reference/react/forwardRef공식문서를 보면 앞으로는 forwardRef 지원을 중단한다고 나와있는데 이에 대응하려면 코드 작성을 어떻게 하면 될까요?
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
대시보드 cpu쿼리 관련
기존 대시보드에서 쿼리를 가져오는데cpu 패널 그리는데 쿼리가A Query :sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace="a-anotherclass-434",container!=""})by(pod, container)/sum(kube_pod_container_resource_requests{job="kube-state-metrics", namespace="a-anotherclass-434", resource="cpu"})by(pod, container) 이렇게 되어있던데...두번째 kube_pod_container_resource_requests 함수의 sum값으로 왜 갑자기 나누기를 했는지가 궁금합니다. 어떤 의도이신지요?그리고 앞 쿼리를 나누기 전에 대략 cpu값들이 20~30%라면 뒤에 request는 0.1%에 해당됩니다. 그러면 20/0.1로 나눠버리면 200이 나오는게 맞는데..강사님은...그렇게 안나오는게 좀 이해가 안가네요 ? 추가로 메모리할때는 requests는 메모리와 1:1 비율이니까 max값을 1로 했는데 request가 메모리와 1:1비율이라는게 무슨의미안가요?
-
미해결실무자를 위한 구글애널리틱스(GA4+GTM) 활용법(25년 Update)
옴니버그>m 오류
안녕하세요. 실습을 진행하다보니 gtm에서 미리보기 연결도 안되고 옴니버그도 오류가 떠서 문의드립니다. gtm도 잘 설치한거 같은데 실습하다 어느순간 gtm 미리보기에서 오류가 뜨더라구요. 어느 부분이 문제인지 모르겠어서 참고하실만한 부분들 캡쳐해서 전달드립니다! + koonbus8093@gmail.com gtm 사용자 권한도 부여했습니다! <gtm 미리보기 오류> <옴니버그 오류> <확장프로그램>
-
미해결그림으로 쉽게 배우는 자료구조와 알고리즘 (심화편)
터미널노드는 루트노드?
안녕하세요, 워밍업클럽4기 정예은 입니다. 서브트리 설명해주실 때, 터미널 노드는 루트노드 만 있는 트리로 볼 수 있다고 하셨습니다. 그러면, 터미널노드만 두고 볼때 루트노드 인가요?
-
미해결스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
메일 보내는 메서드에서
MemberEntity updateMember = memberRepository.save(findedMemberEntity);if(updateMember != null) {메일전송} 여기서 if(updateMember != null) 대신try catch 로 묶어서 하는것도괜찮나요 ?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
11:29 C언어 문제
gets(n)이 n을 입력받는 함수라는 거 이해했고,근데 name() 에 ()가 있어서 () 에 홍길동을 입력받는건가요? name이 똑같이 n에다가 덮어쓴다는게 뭘 보고 알 수 있는건가요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
7회 작업형3 2-1문제
예를 들어, Feature4가 있다고 가정하고 이것이 ERP와의 상관관계가 -0.999라고 한다면 답은 Feautre1인가요? Feature4인가요?(즉, 상관관계가 높은 값을 고를 때는 절대값을 취해서 고려하나요?)
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
docker mariadb 실행
백업은 안하려고 한참 헤메다, 결국 백업으로 해결했네요..ㅎ..환경: window pc에 mariadb client 버전을 설치함dump 생성client 버전이기 떄문에, “mariadb prompt” 를 실행해서 아래의 명령어 실행(cmd에서 mariadb, mysql 명령어 동작 안함)# 생성할 위치로 이동하시거나, 덤프 생성할때 경로 작성하시요. cd "어느 경로"/docker_file # 덤프 생성 mysqldump -u root -p --all-databases > all.sql Dockerfile 생성# Docker Hub에서 공식 MariaDB 이미지 사용 FROM mariadb:latest # 초기화 시 자동 실행될 SQL 복사 COPY ./all.sql /docker-entrypoint-initdb.d/ # 포트 개방 EXPOSE 3306 이미지 생성 및 컨테이너 실행docker build -t [당신의 게정은?]/mariadb:1.0 . docker run -d \\ -p 13306:3306 \\ --name mariadb \\ --network ecommerce-network \\ -e MARIADB_ROOT_PASSWORD=[당신의 root 비번]\\ kimjinwon1432/mariadb:1.0 =============== 추가 ==============강사님께서 알려주신 방법으로 진행해봤어요.일단, 제 pc의 mariadb 설치경로가 "C:\Program Files" 였기 때문에, mariadb폴더 내의 data 폴더와 그 하위 파일 및 디렉터리를 C: 밑에 우리가 사용하는 docker_file 폴더에 넣었습니다* Program Files를 경로로 잡으시면 13에러 코드가 발생합니다. 이는 권한 관련 문제이므로 cli에서 사용하시는 계정에 대해서 mariadb 폴더 내부에 권한을 주셔도 소용이 없어요.* 이 과정은 이전에 설치한 mariadb 이미지가 있으면 삭제?하거나 이미지의 이름을 변경해서 진행하세요.(전 삭제함) * 제 pc의 mariadb 의 버전이 11.4.2여서, docker에서 사용할 수 있는 가장 근접한 버전으로 진행했습니다. docker run -d -p 13306:3306 --network ecommerce-network \ -e MARIADB_ROOT_PASSWORD=[비번] \ --name mariadb -v "C:\study\SpringCloud\docker_files\data:/var/lib/mysql" \ mariadb:11.4.7이렇게 하시면 docker exec -it ~~~ /bin/bash를 통해서 db에 접속 후 데이터베이스를 확인하면 로컬에서 작업했던 db의 데이터가 docker로 전해진 것을 확인 할 수 있어요.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
406 Not Acceptable에러 발생
현재 테스트 코드 작성하고 있는데 다음과 같이 에러 발생합니다.코드package board.article.api; import board.article.service.request.ArticleCreateRequest; import board.article.service.response.ArticleResponse; import lombok.AllArgsConstructor; import lombok.Getter; import org.junit.jupiter.api.Test; import org.springframework.web.client.RestClient; public class ArticleApiTest { RestClient restClient = RestClient.create("http://localhost:9000"); @Test void createTest() { ArticleResponse response = create(new ArticleCreateRequest( "hi", "my content", 1L, 1L )); System.out.println("response = " + response); } ArticleResponse create(ArticleCreateRequest request) { return restClient.post() .uri("/v1/articles") .body(request) .retrieve() .body(ArticleResponse.class); } @Getter @AllArgsConstructor static class ArticleCreateRequest { private String title; private String content; private Long writerId; private Long boardId; } @Getter @AllArgsConstructor static class ArticleUpdateRequest { private String title; private String content; } } 에러 > Task :common:snowflake:compileJava UP-TO-DATE> Task :common:snowflake:processResources NO-SOURCE> Task :common:snowflake:classes UP-TO-DATE> Task :common:snowflake:jar UP-TO-DATE> Task :service:article:compileJava> Task :service:article:processResources UP-TO-DATE> Task :service:article:classes> Task :service:article:compileTestJava> Task :service:article:processTestResources NO-SOURCE> Task :service:article:testClassesorg.springframework.web.client.HttpClientErrorException$NotAcceptable: 406 Not Acceptable: "{"timestamp":"2025-05-29T06:00:40.838+00:00","status":406,"error":"Not Acceptable","path":"/v1/articles"}" at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:118) at org.springframework.web.client.StatusHandler.lambda$defaultHandler$3(StatusHandler.java:86) at org.springframework.web.client.StatusHandler.handle(StatusHandler.java:146) at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.applyStatusHandlers(DefaultRestClient.java:672) at org.springframework.web.client.DefaultRestClient.readWithMessageConverters(DefaultRestClient.java:195) at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.readBody(DefaultRestClient.java:659) at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.body(DefaultRestClient.java:605) at board.article.api.ArticleApiTest.create(ArticleApiTest.java:26) at board.article.api.ArticleApiTest.createTest(ArticleApiTest.java:15) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)> Task :service:article:testArticleApiTest > createTest() FAILED org.springframework.web.client.HttpClientErrorException$NotAcceptable at ArticleApiTest.java:261 test completed, 1 failed> Task :service:article:test FAILEDFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':service:article:test'.> There were failing tests. See the report at: file:///C:/Users/zxc86/Desktop/study/springboot/board/service/article/build/reports/tests/test/index.html* Try:> Run with --scan to get full insights.BUILD FAILED in 4s6 actionable tasks: 3 executed, 3 up-to-dategpt에서는 accept 설정이 없어서 그렇다는데 강사님 코드에는 없어서요원인이 뭘까요?
-
해결됨실무자를 위한 구글애널리틱스(GA4+GTM) 활용법(25년 Update)
이벤트 설계2에서 검색 버튼을 클래스로 할 때, 안잡히는 이유
css선택자로 했을 때는 이상이 없는데, 클래스로 잡고 싶어서 시도했습니다.eSearch로 클래스로 설정을 해서 계속 시도해봤는데 안되서요. 왜 그럴까요?
-
해결됨코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드
redis node에서 timeout 에러발생
volumes: n8n_storage: postgres_storage: ollama_storage: qdrant_storage: redis_storage: networks: demo: x-n8n: &service-n8n image: n8nio/n8n:latest networks: ['demo'] environment: - N8N_SECURE_COOKIE=false - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_USER=${POSTGRES_USER} - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD} - N8N_DIAGNOSTICS_ENABLED=false - N8N_PERSONALIZATION_ENABLED=false - N8N_ENCRYPTION_KEY - N8N_USER_MANAGEMENT_JWT_SECRET - OLLAMA_HOST=ollama:11434 env_file: - .env x-ollama: &service-ollama image: ollama/ollama:latest container_name: ollama networks: ['demo'] restart: unless-stopped ports: - 11434:11434 volumes: - ollama_storage:/root/.ollama x-init-ollama: &init-ollama image: ollama/ollama:latest networks: ['demo'] container_name: ollama-pull-llama volumes: - ollama_storage:/root/.ollama entrypoint: /bin/sh environment: - OLLAMA_HOST=ollama:11434 command: - "-c" - "sleep 3; ollama pull llama3.2" services: postgres: image: postgres:16-alpine hostname: postgres networks: ['demo'] restart: unless-stopped environment: - POSTGRES_USER - POSTGRES_PASSWORD - POSTGRES_DB volumes: - postgres_storage:/var/lib/postgresql/data healthcheck: test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}'] interval: 5s timeout: 5s retries: 10 n8n-import: <<: *service-n8n hostname: n8n-import container_name: n8n-import entrypoint: /bin/sh command: - "-c" - "n8n import:credentials --separate --input=/demo-data/credentials && n8n import:workflow --separate --input=/demo-data/workflows" volumes: - ./n8n/demo-data:/demo-data depends_on: postgres: condition: service_healthy n8n: <<: *service-n8n hostname: n8n container_name: n8n restart: unless-stopped ports: - 5678:5678 volumes: - n8n_storage:/home/node/.n8n - ./n8n/demo-data:/demo-data - ./shared:/data/shared depends_on: postgres: condition: service_healthy n8n-import: condition: service_completed_successfully qdrant: image: qdrant/qdrant hostname: qdrant container_name: qdrant networks: ['demo'] restart: unless-stopped ports: - 6333:6333 volumes: - qdrant_storage:/qdrant/storage redis: image: redis:latest container_name: redis hostname: redis restart: unless-stopped ports: - "6379:6379" volumes: - redis_storage:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 1s timeout: 8s retries: 5 command: ["redis-server", "--appendonly", "yes"] redisinsight: image: redislabs/redisinsight:latest container_name: redisinsight hostname: redisinsight restart: unless-stopped ports: - "8001:8001" depends_on: - redis ollama-cpu: profiles: ["cpu"] <<: *service-ollama ollama-gpu: profiles: ["gpu-nvidia"] <<: *service-ollama deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] ollama-gpu-amd: profiles: ["gpu-amd"] <<: *service-ollama image: ollama/ollama:rocm devices: - "/dev/kfd" - "/dev/dri" ollama-pull-llama-cpu: profiles: ["cpu"] <<: *init-ollama depends_on: - ollama-cpu ollama-pull-llama-gpu: profiles: ["gpu-nvidia"] <<: *init-ollama depends_on: - ollama-gpu ollama-pull-llama-gpu-amd: profiles: [gpu-amd] <<: *init-ollama image: ollama/ollama:rocm depends_on: - ollama-gpu-amd 위의 내용은 docker-compose.yml 이구요. redis node를 생성하는데 아래와 같이 에러발생 합니다. os는 우분투 24.04 lts desktop 버전입니다.
-
해결됨Spring Boot, AWS로 백엔드 서비스 한 사이클 완성하기
다운받은 강의자료 압축풀기가 안되요
다운은 되는데 압축풀기에서 오류가 뜨네요. 파일에 문제가 있을까요?
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
배치 애플리케이션 패키지 구조
현재 배치 강의를 20퍼 정도 수강 했는데, 배치 애플리케이션을 만들 때 step, job 등 여러 클래스가 있을 텐데 어떤 패키지 구조로 만드는지 궁금합니다.
-
해결됨기초 탄탄! 독하게 시작하는 Java Part 3(하) : 소켓과 파일 I/O
mac 사용자 폴더 생성 경로 변경
String tmpPath = "C:/Tmp";mac은 예제에 있는 경로가 맞지 않아 아래 에러가 발생합니다.Caused by: java.io.IOException: No such file or directory그래서 올바른 홈 경로를 변경해줘야 합니다.아래의 경로로 변경String tmpPath = System.getProperty("user.home") + "/Temp";이렇게 경로를 바꿔주시면 /Users/{username} 경로에 정상적으로 생성됩니다. 혹시 모르는 분이 계실까봐 작성해둡니다.
-
해결됨기초 탄탄! 독하게 시작하는 Java Part 3(하) : 소켓과 파일 I/O
createNewFile() 멱등성
방금 예제를 여러번 실행하면 어떻게 되는지 궁금해서 몇번 실행해봤는데, 최초에 생성된 시간 그대로 파일이 유지돼있네요. 파일 생성만 하고 또 실행 -> 파일 바뀌지 않음생성된 파일 수정하고 또 실행 -> 파일 바뀌지 않음(수정한 내용이 그대로 있음) 확인해보니 createNewFile() 는 true와 false를 반환하여 false일 때에는 생성을 하지 않고 있네요.해당 함수는 멱등성을 보장한다고 해야되는지 아닌지 궁금합니다.그런데 멱등성을 보장한다고 하기엔 안에 내용을 유지시켜주지는 않는거 같네요. 완전한 멱등성이라고 하면 수정된 내용도 없어지고 아무것도 없는 파일로 바뀌어야 되는거 아닐까 생각이 들어서 명확하게 확신이 없어서 질문 드립니다.
-
해결됨기초 탄탄! 독하게 시작하는 Java Part 3(하) : 소켓과 파일 I/O
잘못 작성
잘못 작성