묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
lead, lag로 풀이할 시 id 값이 존재하지 않는 경우의 오답
안녕하세요 선생님~해당 문제를 윈도우함수로 풀었는데, submit을 하니 일부 테스트케이스에서 오답으로 되어 질문드립니다. 아래 input에서 id 3이 존재하지 않아, 해당 테이블의 num컬럼을 1,1,null,1,1,2,1 로 정의하고 풀어야 할 것 같습니다.(실제로 expected output에 아무 값도 나오지 않아야 함) 강의에 나오는 쿼리로는 id가 빠져있는 경우를 처리하지 않고, 명시적으로 나와있는 데이터의 연속성만 판단하고 있습니다. 아래와 같은 예외케이스를 포괄할 수 있는 쿼리를 어떻게 짜야할지 조언주시면 감사하겠습니다.제가 작성한 쿼리도 첨부합니다!
-
해결됨Vue3 완벽 마스터: 기초부터 실전까지 - "실전편"
페이징 구현 질문드려요!
페이지 구현을 모두 완료했지만 게시글이 나오지 않습니다.여기저기 찾아봐도 알 수가 없네요.뭔가 문제인 건가요?.. Axios API, 컴포넌트 매핑도 확인했고 dev서버, db서버도 모두 확인했습니다. { path: '/posts', name: 'PostList', component: PostListView, },import axios from 'axios'; export function getPosts(params) { return axios.get('http://localhost:5000/posts', { params }); }// PostListView.vue <template> <div> <h2>게시글 목록</h2> <hr class="my-4" /> <form @submit.prevent> <div class="row g-3"> <div class="col"> <input v-model="params.title_like" type="text" class="form-control"> </div> <div class="col-3"> <select v-model="params._limit" class="form-select"> <option value="3">3개씩 보기</option> <option value="6">6개씩 보기</option> <option value="9">9개씩 보기</option> </select> </div> </div> </form> <hr class="my-4" /> <div class="row g-3"> <div v-for="post in posts" :key="post.id" class="col-4"> <PostItem :title="post.title" :content="post.content" :createdAt="post.createdAt" @click="goPage(post.id)"> </PostItem> </div> </div> <nav class="mt-5" aria-label="Page navigation example"> <ul class="pagination justify-content-center"> <li class="page-item" :class="{ disabled: !(params._page > 1) }"> <a class="page-link" href="#" aria-label="Previous" @click.prevent="--params._page"> <span aria-hidden="true">«</span> </a> </li> <li v-for="page in pageCount" :key="page" class="page-item" :class="{ active: params._page === page }"> <a class="page-link" href="#" @click.prevent="params._page = page">{{ page }}</a> </li> <li class="page-item" :class="{ disabled: !(params._page < pageCount) }"> <a class="page-link" href="#" aria-label="Next" @click.prevent="++params._page"> <span aria-hidden="true">»</span> </a> </li> </ul> </nav> <hr class="my-5" /> <AppCard> <PostDetailView :id="1"></PostDetailView> </AppCard> </div> </template> <script setup> import PostItem from '@/components/posts/PostItem.vue'; import PostDetailView from './PostDetailView.vue'; import AppCard from '@/components/AppCard.vue'; import { getPosts } from '@/api/posts'; import { ref, watchEffect } from 'vue'; import { useRouter } from 'vue-router'; import { computed } from '@vue/reactivity'; const router = useRouter() const posts = ref([]) const params = ref({ _sort: 'createdAt', _order: 'desc', _page: 1, _limit: 3, title_like: '' }) // Pagination const totalCount = ref(0) const pageCount = computed(() => { Math.ceil(totalCount.value / params.value._limit) }) const fetchPost = async () => { try { const { data, headers } = await getPosts(params.value); posts.value = data; totalCount.value = headers['x-total-count'] } catch (error) { console.error(error) } } watchEffect(fetchPost) const goPage = (id) => { router.push({ name: 'PostDetail', params: { id } }) } </script> <style lang="scss" scoped></style>
-
미해결Practical Testing: 실용적인 테스트 가이드
동시성 이슈 - 3회 이상 재시도를 자동으로 하게 하는 방법
안녕하세요,동시성 이슈에 대한 이야기를 해주시면서 "등록 시도를 했는데 유니크에서 튕겼다면 누군가 먼저 신규 번호를 선점했다는 뜻이니 3회 이상 재시도를 자동으로 하게 하는 방법으로 풀 수 있다"란 말씀을 해주셨습니다.그래서 아래 예시 코드처럼 DataIntegrityViolationException 을 try-catch로 잡아서 재시도를 하라는 뜻으로 이해했습니다. (하지만 로컬에서 동시성 문제를 발생시키는 방법을 찾지 못해 맞는 코드인지 모르겠습니다.. @Transactional이 있다면 DataIntegrityViolationException 를 잡기 위해서 try-catch 블럭 내부에서 flush()를 호출하기 위해 saveAndFlush() 를 사용한다는 말도 있더라구요?)public ExampleEntity save(ExampleEntity entity) { for (int i = 0; i < 3; i++) { try { // 저장 시도 return repository.save(entity); } catch (DataIntegrityViolationException e) { // 유니크 제약 조건 위배 예외 처리 log.info("저장 실패"); } } throw new RuntimeException("저장에 실패했습니다."); }이러한 방법이 맞다면 더 좋은 방법이 있는지, 혹시 만약 이 방법이 아니라면 어떤 방법으로 해결할 수 있는지 알려주시면 감사하겠습니다. 좋은 강의 항상 감사드립니다.
-
미해결15일간의 빅데이터 파일럿 프로젝트
hue 설치 중 psycopg2 설치 오류
휴 설치 강의에서 실습 중 psycopg2 설치 오류가 발생합니다. 해결방법이 있을지 문의드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-D (백준2573 영역구하기) 백터사용시 메모리 초과
안녕하세요!(질문글 올리다가 제코드를 다시보니 왜 메모리초과가 나는지.. 알게돼서 글쓴게 아까워서 정보공유차 남깁니다)요즘 코딩테스트에 vector를 넘겨받는 케이스가 많아서연습삼아 함수인자로 vector를 넘겨주는 방식으로 문제를 풀고있습니다. 전역배열로 문제를 풀면, 메모리초과가 안나는데, vector를 넘기니 메모리초과가 발생하네요. ----------- 함수 선언은 아래와 같이 했습니다.-----void dfs(vector<vector<int>> map, vector<vector<int>>& visited, int x, int y, int num)----------------------------원인 ) 재귀호출하면서 매번 map이 복사가 되면서 메모리를 잡아먹는게 원인 이였습니다. & 참조 연산 붙여주니 바로 통과되네요. 다른 분들은 이런 실수 안하시길.. 수정) void dfs(const vector<vector<int>>& map, vector<vector<int>>& visited, int x, int y, int num)교안대로 전역변수쓰는게 확실히 실수를 줄여줘서 좋긴하지만 이것도 좋은 경험이라고 생각하고 넘어가게습니다.
-
미해결김영한의 실전 자바 - 중급 1편
안녕하세요 작은 질문 하나 드립니다!
혹시 영한님께서 강의 진행하실 때 아래에 단축키 어떤 걸 사용했는지 나타내주는? 플러그인 이름을 좀 알 수 있을까요..?
-
미해결처음 만난 리액트(React)
node js 설치 문의
node js 설치 후 파워쉘에서 검색하면 이렇게 나와요. 파워쉘 최신 버전 설치하라는 글씨도 보이는데, 파워쉘 최신 버전을 설치해야하나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
유니티 싱글톤 패턴 질문있습니다
강의 내용에 따르면 GameObject go = GameObject.Find("@Managers");Managers mg = go.GetComponent<Managers>(); 이 부분이 부하가 많이가는 부분이라 싱글톤기법을 이용한다고 하셨는데요 싱글톤을 구현하는 도중에 GameObject go = GameObject.Find("@Managers");Managers mg = go.GetComponent<Managers>();이 부분을 다시 쓰던데 위의 코드를 안쓰기 위해서 싱글톤패턴을 배우는건데 저 코드를 또 쓴다는게 인과관계가 좀 안맞는거 같아서 질문올립니다
-
해결됨MFC Windows 프로그래밍 - 기본
mfc 내부에서 콜백 함수 구현 방법
안녕하세요 현재 상황mfc를 이용해서 모든 창(window)의 이름을 전부 나열 해서 리스트 박스에 텍스트로 넣는 것을 구현 하려고 하는 중입니다.도중에 함수중EnumWindows(콜백함수, NULL)요 함수를 사용하려 했지만 콜백함수(인자)로 인해 사용이 안됩니다.win32를 통해 사용하여 위에 것은 다 구현했지만 mfc에서는 구현을 못한 상태 입니다. 이유는 위에와 같습니다....ㅠㅠ 구글 검색부터 이것저것 다해봤는데 도저히 방법이 안나와서 질문 합니다ㅜㅜ 궁금한점Enumwindows를 대체하는 함수가 존재합니까?mfc에서 콜백함수를 구현 하는 방법이 있습니까?Enumwindows를 구현할 방법이 있습니까?(콜백함수 빼고)
-
해결됨1000만 Traffic을 견디며 적용한 RPC 통신에 대해 학습하고 구현해보기
소스코드 깃 제공 문의
안녕하세요, Akaps님혹시 소스코드는 따로 얻어볼 수 없을까요?
-
해결됨팀 개발을 위한 Git, GitHub 입문
ls -al 명령어가 안먹네요
windows 사용자 인데요cd 명령어는 되는데ls -al 명령어가 안되네요Power Shell 화면과 명령프롬프트 화면 보내드립니다. 2) 강의 자료 보내주세요cdway@hanmail.net
-
해결됨AWS SAA-C03 자격증 대비-문제 풀이
핵심정리 pdf 에 있는 '문제 유형 확인' 에 대한 답은 따로 없는걸까요?
안녕하세요.강의를 잘 듣고 있는 학생입니다.다름이 아니라 문제를 풀고 강의를 듣고 모르는 부분들에 대해 핵심정리 pdf 로 찾아보고 있는데 여기에 있는문제유형확인 에 대한 답은 따로 없는 것 같더라구요.문제풀이 강의만 결제했는데 해당 문제에 대한 답은 따로 없는걸까요?
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
ResultMap은 굳이 사용 안해도 되는것 아닌가요?
마이바티스 강의 섹션 초반에 application.properties에Mybatis.configuration.map-underscore-to-camel-case=true를 해주었기 때문에 컬럼명 변환을 위한 맵은 해주지 않아도 되는것 아닌가요?추가적인 질문으로 영한님 강의의 로드맵중에 jpa를 집중적으로 강의해주시는 로드맵이 있는데 해당 스프링 로드맵만 수강한 상태에서 개인 프로젝트를 진행할 때 jpa의 지식이 부족할 수 있으니(jpa는 내용이 방대하여 많은 공부가 필요하다고 하셔서) 마이 바티스로 프로젝트를 진행후 jpa로드맵 까지 수강 후 jpa로 프로젝트를 하는게 더 좋은가요?
-
미해결[최신] Vue 강의 끝판왕 : Nuxt 3 완벽 마스터
definePageMeta 리랜더링이 안됩니다..
<template> <div class="q-pa-xl"> <AppCard> <template #header> <div class="text-h5 text-weight-medium">{{ course?.title }}</div> <div class="flex q-gutter-x-sm items-center q-mt-sm text-grey-8"> <span class="flex items-center"> <q-icon name="star" size="16px" color="orange" /> <span>{{ course?.rating }}</span> </span> <span>{{ course?.reviewsCount }}</span> <span>·</span> <span>{{ course?.studentCount }}</span> <q-space /> <a class="text-bold" :href="course?.reviewsUrl" target="_blank"> 수강평 보기 </a> </div> </template> <div class="q-mb-md"> <VideoPlayer :src="course?.video" /> </div> <div class="row q-col-gutter-md"> <div class="col-6"> <q-btn label="인프런에서 수강하기" unelevated class="full-width" color="primary" :href="course?.inflearnUrl" target="_blank" /> </div> <div class="col-6"> <q-btn label="짐코딩 클럽에서 수강하기" unelevated class="full-width" color="red" :href="course?.gymcodingUrl" target="_blank" /> </div> </div> <p class="q-mt-lg text-grey-8"> {{ course?.content }} </p> <template #footer> <q-btn v-if="prevCourse" label="이전 강의" color="primary" unelevated :to="prevCourse.path" /> <q-space /> <q-btn v-if="prevCourse" label="쿼리추가" color="primary" unelevated :to="{ path: $route.path, query: { timestamp: Date.now() } }" /> <q-space /> <q-btn v-if="nextCourse" label="다음 강의" color="primary" unelevated :to="nextCourse.path" /> </template> </AppCard> </div> </template> <script setup lang="ts"> const route = useRoute(); const courseSlug = route.params.courseSlug as string; const { course, prevCourse, nextCourse } = useCourse(courseSlug); console.log('re'); definePageMeta({ key: (route) => route.fullPath, }); </script> <style scoped></style> <template> <NuxtLayout> <NuxtPage /> <!-- <RouterView /> --> <!--layouts>default.vue의 slot부분--> </NuxtLayout> </template> <script setup lang="ts"></script> 해당 코드처럼 넣은후 쿼리파라미터를 넣어도 리랜더링이 안되네요.. ㅠ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강의 4분 디버깅기능 이용하는데 질문있습니다
강의대로 똑같이 따라했는데 중단점을 사용할수 없다고 뜨네요 인터넷 검색해서 나온것들을 따라해봤는데 여전히 작동하질 않습니다 여기에라도 올려봐요
-
미해결[입문자를 위한 UE5] Part4. 언리얼 엔진 C++
블루프린트 클래스 옮기는 과정 오류
평소 비주얼 스튜디오 코드 사용하고 있어서 환경바꾸기 귀찮아 그냥 그대로 쓰고 있었습니다.MainActor.cpp 에서 BP_R1Actor 찾는데는 성공했지만, ActorClass 에 대입이 안 되서 속 썩이다가 혹시나 하는 마음에 비주얼 스튜디오 2022로 옮기니 잘 되네요.비주얼 코드에서는 자꾸 타입 불일치로 Null 로 나려버리던데 이유는 아직도 찾지 못했습니다.저 같은 분 계실가봐 적어봅니다.
-
해결됨독하게 시작하는 C 프로그래밍
섹션14 최대값 실습문제
안녕하세요 교수님!개린이(개발자어린이) 실무자 입장에서오랜만에 잊고있던 C언어를 써야할 일이 생겨서강의를 신청했는데 너무 재미있고 유익합니다.완전 입문 보다는 더 심도깊고 폭넓게 알려주셔서 너무 좋습니다.저는 아래와 같이 코드를 작성해봤는데한번 봐주시면 감사하겠습니다. 1.int MaxValue(int a, int b, int c) { int max = a; if (max < b) max = b; if (max < c) max = c; return max;}int main(void){ int num1 = 0, num2 = 0, num3 = 0, finalValue = 0; printf("정수를 3개 입력하시오. "); scanf_s("%d%d%d", &num1, &num2, &num3); finalValue = MaxValue(num1, num2, num3); printf("최대값은 %d 입니다\n", finalValue); return 0;}
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
서블릿이 제공하는 HttpSession 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 스프링 부트 내에는 서블릿 컨테이너와 스프링 컨테이너가 있다고 알고 있습니다.또한, 서블릿 컨테이너는 스프링 컨테이너 외부에 존재하기 때문에 bean에 직접 접근할 수 없습니다.그리고 DB에 직접 접근하여 요청을 처리하는 것은 스프링 컨테이너 내에서 이루어집니다. 이때, 궁금한 점이 있습니다.1."서블릿이 제공하는 HttpSession"이라는 개념이 잘 이해가 안됩니다. 서블릿이 제공하는 HttpSession은 스프링 컨테이너에서 bean으로 등록되어 사용되는게 맞나요? 아니면 서블릿 컨테이너에서 관리하는 것이 HttpSession인가요? 서블릿 컨테이너, 톰캣, WAS 그리고 스프링 컨테이너에 대해서 고민하다 보니 HttpServletRequest가 헷갈립니다HttpServletRequest는 서블릿이 HTTP 요청 메시지를 파싱한 결과를 담은 객체인데 그러면 HttpServletRequest는 서블릿 컨테이너 안에 존재하는 서블릿이 스프링 컨테이너에게 넘겨주고, 스프링 컨테이너는 HttpServletRequest를 받아서 스프링 컨테이너 안에서 처리를 하는 건가요??아니면, 스프링 부트 내에는 서블릿 컨테이너가 있고 스프링 컨테이너가 존재하기 때문에 각각의 그냥 아래와 같이 작성하면 서블릿 컨테이너 내에 존재하는 HttpServletRequest 객체를 처리한 것인가요?설명 부탁드립니다. 감사합니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 gradle.bat build 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.처음에 한글이름의 사용자 폴더에 hell-spring폴더가 있어서 오류가 생긴 줄 알고, DEV폴더를 c드라이브에 새로 만든 뒤, 다시 실행해도 오류가 생기네요. 구글링을 해보니 한글 이름의 폴더가 있을 시 이런 오류가 생길 수 있다는데, 혹시 제 사용자명이 여전히 한글이어서 이런 오류가 생기는 것일까요?(자바 버전은 21입니다.)
-
미해결Next + React Query로 SNS 서비스 만들기
next-auth 질문 + 새소식 올려주신거 참고해서 await signIn('credentials', { ...data, redirect: true });수정한후 로그인 후 홈으로 이동안됩니다.
안녕하세요 선생님새소식 올려주신거 참고해서 await signIn('credentials', { ...data, redirect: true });수정한후 로그인 후 홈으로 이동안됩니다.home 갔다가 로그인화면으로 이동해버리는데 어디서 이동시키는건지 뒤저봐도 못 찾겠더라구요. 로그인화면으로 새로고침되는듯 합니다...true만 하고 이전 코드와 다 똑같은데 조언 부탁드립니다 ㅠ/src/app/(beforeLogin)/_component/Loginmodal.tsxconst onSubmit: SubmitHandler<formProps> = async (data: formProps) => { console.log(data); try { await signIn('credentials', { ...data, redirect: true }); router.replace('/home'); console.log('---------------------------------------after LoginModal login') } catch(error) { console.error(error); console.log('아이디와 비밀번호가 일치히자 않습니다.'); } }; src/middleware.tsexport async function middleware() { const session = await auth(); console.log(session, '------------------------------middleware session') if (!session) { return NextResponse.redirect('http://localhost:3001/i/flow/login'); } } // See 'Matching Paths' below to lean more // 미들웨어를 적용할 라우트로 로그인을 해야하는 페이지 // 페이지 접근관리 하기 쉬워짐 export const config = { matcher: ['/compose/tweet', '/home', '/explore', '/messages', '/search'] } /src/auth.tsimport NextAuth, {CredentialsSignin} from "next-auth" // import CredentialsProvider from "next-auth/providers/credentials" import Credentials from "next-auth/providers/credentials" import { NextResponse } from 'next/server'; export const { // api 라우트 handlers: { GET, POST }, // auth 함수 실행하면 로그인 유무알 수 있다. auth, // 로그인 하는 함수 signIn } = NextAuth({ pages: { signIn: "/i/flow/login", newUser: '/i/flow/signup', }, providers: [ Credentials({ // You can specify which fields should be submitted, by adding keys to the `credentials` object. // e.g. domain, username, password, 2FA token, etc. credentials: { id: {}, password: {}, }, authorize: async (credentials) => { console.log('-------------------------------------------auth.ts'); const authResponse = await fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/api/login`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(credentials) }) // 여기 주목!!! 서버에서 에러가 발생할 때 그 에러 내용이 서버에 담겨 있을 겁니다. console.log(authResponse.ok, authResponse.status, authResponse.statusText) if (!authResponse.ok) { const credentialsSignin = new CredentialsSignin(); if (authResponse.status === 404) { credentialsSignin.code = 'no_user'; } else if (authResponse.status === 401) { credentialsSignin.code = 'wrong_password'; } throw credentialsSignin; } // 로그인 성공 const user = await authResponse.json(); console.log('user', user); // return user object with the their profile data return { ...user, name: user.nickname, email: user.id, } }, }), ] }) next-auth 소식이나 말쓰하시는거 들어봐도 아직 안정화가 되지 않은것같은데 선생님은 next-auth를 실무에 도입해도 된다고보시나요? 아니면 nodebird 처럼 express로 하는걸 더 추천하실지 궁금합니다. 넥스트오쓰에서 가입한 사용자를 데이터베이스로 볼수있는지도 궁금하구 어차피 배워야할것이니 이런저런 부족한게 좀 있더라도 밀고나가야하는지.. 여유되실때 확인해주시면 감사하겠습니다.