묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[중급편] 코인 가격 모니터링 앱 제작 (Android Kotlin)
Notification을 실행했을때
안녕하세요Notification을 실행을 했을때 logcat 에서 Suppressing notification from package com.example.coco by user request라고 메시지가 나오고 있습니다. 그래서 알림이 안뜨는것 같습니다.
-
해결됨스프링 핵심 원리 - 기본편
스프링 컨테이너를 테스트에 통합한 경우
강의자료에 아래의 문장이 있습니다. 순수한 자바 테스트 코드에는 당연히 @Autowired가 동작하지 않는다. @SpringBootTest 처럼 스프링 컨테이너를 테스트에 통합한 경우에만 가능하다. 이 말의 의미가 아래 2가지 경우 모두 해당되는게 맞을까요?1) @SpringBootTest 이 있는 클래스 내부에서 @Autowired 를 사용해서 의존관계주입하는 경우 2) Class 내부에 @Autowired 를 사용해서 의존관계를 표시하고 new AnnotationConfigApplicationContext(test.class) 으로 스프링 컨테이너를 생성한 경우
-
해결됨김영한의 실전 자바 - 기본편
static class
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]static class 에 대해서 설명은 다음 강의에서 해주시나요? static class 혹은 inner class 에 관해서 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost8080이 실행이안됩니다...
실행 버튼도 누르고 21버전으로 모두 맞췄는데도 자꾸 안되네요
-
미해결Next + React Query로 SNS 서비스 만들기
안녕하세요 Next-auth 질문을 올려봅니다.
next-auth로 로그인하기의 강의를 듣던 도중 오류가 생겨 게시판에 글을 남겨봅니다. 문제는 Login 모달에서 로그인을 하였을 때 http://localhost:3000/api/auth/error 로 페이지가 이동 되어집니다.next-auth "next-auth": "^5.0.0-beta.3",.env .env.local 에 AUTH_URL=http://localhost:9090 를 넣어 두었고route.tsexport { GET, POST } from "@/auth";handlers.tsimport { http, HttpResponse, StrictResponse } from "msw"; import { faker } from "@faker-js/faker"; const User = [ { id: "zeroCho", nickName: "zero", image: "/yRsRRjGO.jpg" }, ]; export const handlers = [ // 로그인 http.post("/api/login", () => { console.log("로그인"); return HttpResponse.json(User[1], { headers: { "Set-Cookie": "connect.sid=msw-cookie;HttpOnly;Path=/", // Http cookie 넣어주기 }, }); }), // 로그아웃 http.post("/api/logout", () => { console.log("로그아웃"); return new HttpResponse(null, { headers: { "Set-Cookie": "connect.sid=;HttpOnly;Path=/;Max-Age=0", }, }); }), // 회원 가입 http.post("/api/users", async ({ request }) => { console.log("회원가입"); // return HttpResponse.text(JSON.stringify('user_exists'), { // status: 403, // }) return HttpResponse.text(JSON.stringify("ok"), { headers: { "Set-Cookie": "connect.sid=msw-cookie;HttpOnly;Path=/;Max-Age=0", }, }); }), ];auth.tsimport NextAuth from "next-auth"; import CredentialsProvider from "next-auth/providers/credentials"; export const { handlers: { GET, POST }, auth, signIn, } = NextAuth({ pages: { signIn: "/i/flow/login", newUser: "/i/flow/signup", }, providers: [ CredentialsProvider({ async authorize(credentials) { const authResponse = await fetch(`${process.env.AUTH_URL}/api/login`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ id: credentials.username, password: credentials.password, }), }); if (!authResponse.ok) { return null; } const user = await authResponse.json(); return { email: user.id, name: user.nickname, image: user.image, ...user, }; }, }), ], });LoginModal.tsx"use client"; import React, { ChangeEventHandler, FormEventHandler, useState } from "react"; import styles from "./loginModal.module.css"; import { redirect, useRouter } from "next/navigation"; // client import { signIn } from "next-auth/react"; export function LoginModal() { const [id, setId] = useState<string>(""); const [password, setPassword] = useState<string>(""); const [message, setMessage] = useState<string>(""); const router = useRouter(); const onSubmit: FormEventHandler<HTMLFormElement> = async (e) => { e.preventDefault(); setMessage(""); try { await signIn("credentials", { username: id, password, redirect: false, }); router.replace("/home"); } catch (err) { console.error(err); setMessage("아이디와 비밀번호가 일치하지 않습니다."); } }; const onClickClose = () => { router.back(); }; const onChangeId: ChangeEventHandler<HTMLInputElement> = (e) => { setId(e.target.value); }; const onChangePassword: ChangeEventHandler<HTMLInputElement> = (e) => { setPassword(e.target.value); }; return ( <div className={styles.modalBackground}> <div className={styles.modal}> <div className={styles.modalHeader}> <button className={styles.closeButton} onClick={onClickClose}> <svg width={24} viewBox="0 0 24 24" aria-hidden="true" className="r-18jsvk2 r-4qtqp9 r-yyyyoo r-z80fyv r-dnmrzs r-bnwqim r-1plcrui r-lrvibr r-19wmn03" > <g> <path d="M10.59 12L4.54 5.96l1.42-1.42L12 10.59l6.04-6.05 1.42 1.42L13.41 12l6.05 6.04-1.42 1.42L12 13.41l-6.04 6.05-1.42-1.42L10.59 12z"></path> </g> </svg> </button> <div>로그인하세요.</div> </div> <form onSubmit={onSubmit}> <div className={styles.modalBody}> <div className={styles.inputDiv}> <label className={styles.inputLabel} htmlFor="id"> 아이디 </label> <input id="id" className={styles.input} value={id} onChange={onChangeId} type="text" placeholder="" /> </div> <div className={styles.inputDiv}> <label className={styles.inputLabel} htmlFor="password"> 비밀번호 </label> <input id="password" className={styles.input} value={password} onChange={onChangePassword} type="password" placeholder="" /> </div> </div> <div className={styles.message}>{message}</div> <div className={styles.modalFooter}> <button className={styles.actionButton} disabled={!id && !password}> 로그인하기 </button> </div> </form> </div> </div> ); } 혹시 같은 문제를 겪으신 분이 있었을까요? 아니면 겪으신 분 중에 해결 하신 분이 있으면 도움 부탁드립니다.
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
인라인 요소 관련 질문입니다.
퍼블리싱의 모든것 인라인 요소 , 블록요소 , 인라인 블록 요소편에서인라인 요소는 크기값을 갖을수 없다고 했는데CSS로 HTML가로배치편에서 실습하실때 span태그에 width와 height값이 적용되는데 이유를 알수 있을까요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Spring EL 표현식 ${} 관련
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]일반적으로 ${}를 쓸 때는 중괄호 내에 지정된 필드에 "실제 값"을 호출하는 것으로 알고 있습니다 예를 들어 <span th:text="${item.itemName}"></span>의 경우 Item객체에 프로퍼티 접근을 통하여 itemName 필드에 들어있는 "실제 값"에 접근을 합니다즉 itemName의 실제 값인 "itemA"를 반환하게 되는 것이지요 하지만<form th:object="${item}"><label for="itemName"></label><input type="text" th:field ="${item.itemName}"></form>와 같이 th:object=${item}으로 폼에서 item 객체를 지정해서 th:field=*{itemName} 하게 되면 이때는 "실제 값"을 꺼내는 게 아닌 itemName이라는 "변수 이름"을 꺼내서 id , name , value값으로 지정하게 됩니다 [핵심 질문]이에 따라 일반적인 상황에선 Spring EL 문법인 ${}의 용도가 "실제 값"을 꺼내는 거지만 th:field같은 예외적인 상황에서만 "변수 이름"에 접근하는 것이라고 이해해도 될까요?
-
해결됨QML 프로그래밍 입문편
Qt 라이센스 문의
안녕하세요. Qt 라이센스 정책에 관련하여 질문이 있습니다. 오랫동안 Qt 5.6 베이스로 개발을 진행해 왔습니다. 최근 나날이 디바이스 환경이 다양화되고 있어서 Qt 디자인 쪽 개선에 관심이 많습니다. 그래서 QML을 현재 검토 중에 있습니다. 강의도 Qt 6 버전으로 진행되고 있고 개선된 QML이나 Quick Controls 모듈 때문에서라도이후 버전으로 업그레이드를 해야 할 것 같더라구요. 그래서 지금 버전 업이나 상용라이센스를 검토 중에 있있습니다. 라이센스 비용이 작은 회사에서 만만치 않아서 고민도 되구요.. ㅠ ㅠ아래처럼 나무위키에 5.7부터는 LGPL v3 영향으로 상용라이선스로 갈아타야한다고 명시되어 있던데아래 구문의 의미가 잘 이해되지가 않네요. =================================================================LGPL v3 도입에 따른 영향Qt 5.7부터 LGPL v2.1이 폐지되었다. LGPL v3 상에서 개발할 경우 디바이스에 탑재되는 Qt Framework는 반드시 유저가 기기를 해킹할 수 있도록 만들어야 하는 조건이 생겼다.(Tivoization 방지) 이로 인해 인포매틱스 업체 등 디바이스에 Qt를 넣는 기업들은 유저의 해킹을 허용하는 방안을 생각하기가 힘드므로 Qt 5.6을 쓰던가 상용 라이선스를 구매해야 한다.==================================================================버전 업을 하면서 LGPL v3 모듈 동적 링크만으로 상업적용도로 배포가 가능한지..5. 7버전 이후로는 상용라이센스가 필수 인지 궁금합니다. 참고로 저는 LGPL 모듈에 한에서만 SW 개발을 진행하고 있습니다. 읽어주셔서 감사합니다.
-
미해결다양한 사례로 익히는 SQL 데이터 분석
캐글데이터 Postgresql 사용
안녕하세요! 강의 정말 잘 보고 있습니다!.강의 참고하면서, Kaggle에서 괜찮은 데이터로 매출분석, 퍼널분석 프로젝트해서 포트폴리오 만들어 보려고 하고 있습니다.그런데 Kaggle csv데이터를 Postgresql에서 쉽게 로드할 수 있는 방법이 있을까요?검색해보니 pgAdmin이라는 툴도 있는 것 같던데, DBeaver하고는 사용하는 법이 많이 다른 것 같아서요.DBeaver에서 csv 파일 DB에 적재하려면, 어떻게 해야할까요?? 감사합니다!
-
미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
에러 처리를 위한 단위테스트 작성
에러 처리를 위한 단위테스트 작성 강의 내용 중 이해가 가지 않는 부분이 생겨 글 남김니다.errorMessage 의 message 내용은 description property missing 에러입니다. 그렇다면 테스트 상황에서 포스트맨과 동일하게 description이 빠진 객체를 저장하다 에러가 발생해야 맞는 테스트가 아닌가 하는 의문이 생기네요.it('should handle errors', async () => {const errorMessage = {message: "description property missing"}; const rejectedPromise = Promise.reject(errorMessage); productModel.create.mockReturnValue(rejectedPromise); await controller.createProduct(req, res, next); expect(next).toBeCalledWith(errorMessage);})
-
미해결
ModuleNotFoundError 해결 방법을 모르겠습니다.
안녕하세요 코드 관련 공부를 하던 중에 오류가 발생하였는데 어떻게 해결해야 할지 모르겠어서글 작성하겠습니다. 코드를 짰더니 이런 식으로 오류가 발생합니다. ! 어떻게 해결하면 좋을까요 ? ModuleNotFoundError: No module named 'travel'#practice11.py import travel.thailand trip_to = travel.thailand.ThailandPackage() trip_to.detail() #vietnam.py class VietnamPackage: def detail(self): print("[베트남 패키지 3박 5일] 다낭 효도 여행 60만원") #thailand.py class ThailandPackage: def detail(self): print("[태국 패키지 3박 5일]방콕, 파타야 여행 (야시장 투어) 50만원")
-
미해결3. 웹개발 코스 [스프링 프레임워크+전자정부 표준프레임워크]
신규강의 무료 쿠폰 신청합니다!
안녕하세요. 개발자PARK님 spring+전자정부프레임워크 수강생이빈다.EA + egovframe 신규 강의 무료쿠폰 주신다 하여 메일 보냈습니다.감사합니다!
-
해결됨코딩테스트 [ ALL IN ONE ]
climbing stairs를 top-down 방식으로 풀면 시간초과가 뜹니다
tabulation 방식의 Bottom-up은 재귀를 호출하지 않기 때문에 당연히 테케 통과하구요강의를 들었을때도 강사님은 피보나치 코드 그대로 사용하셔서 저도 그대로 제출했는데 시간 초과가 뜹니다... 원래의 코드는 아래와 같구요def climbStairs(self, n): memo = {} if n == 1 or n == 2: return n if n not in memo: memo[n] = self.climbStairs(n-1) + self.climbStairs(n-2) return memo[n]discuss를 참고해서 수정한 코드는 테케를 통과했는데 아래와 같습니다class Solution(object): def climbStairs(self, n): memo = {} return self.dp(n, memo) def dp(self, n, memo): # base cases if n == 1 or n == 2: return n if n in memo: return memo[n] memo[n] = self.dp(n-1, memo) + self.dp(n-2, memo) return memo[n]제가 봤을 때는 두 코드의 로직에 대한 차이점은 없어보입니다만 왜 아래의 코드는 시간초과가 나지 않는거죠??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
H2 데이터베이스 설치
H2 데이터베이스 설치 후 sql파일을 만드는 과정에서 아래 사진 처럼 sql파일은 Intellij IDEA ultimate 에서만 지원가능하다고 하는데 Intellij IDEA ultimate을 새로 또 설치해야 되는건가요?그 다음 강의에서 application properties에 코드를 입력 할때도 Intellij IDEA ultimate에서만 지원가능하다고 합니다..
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Spring Oracle 연동 질문입니다.
현재 사내에 연결된 다른 db 서버들은 모두 connection이 잘되는데,oracle db 서버만 연결이 이상한 상황입니다.위와같이 연결테스트도 성공을 하는데..위와같은 오류가 발생하며 위와같이 다른 db와 달리 선택된 스키마가 없는상황입니다.. Toad에서 위 oracle db연결했을 때 완전히 같은 정보를 입력했을 때, 정상적으로 작동합니다..도대체 뭐가 문제일까요 ㅠㅠ서버 ip, port도 정상적인 상황입니다.
-
미해결Next + React Query로 SNS 서비스 만들기
afterlogin beforelogin 로그인 분기처리 질문
안녕하세요. 디렉토리 구조를 afterlogin과 beforelogin구조로 나누어서 로그인을 분기치고 있고 auth.ts에서 서버로 부터 전달받은 토근값을 넣고 미들웨어에서 세션을 유무를 확인하여 login페이지로 리다이렉트 시키고 있습니다. afterlogin과 beforelogin으로 디렉토리가 어떤방식으로 나뉘는지 로직이 궁금합니다. 관련된 훅이 있는것인지??2. 실제 상용화된 서비스라고하면 로그인이 풀리는것을 방지하기 위해 BE로 토근값을 요청할텐데, 관련 로직은 어떤방식으로 구현하는게 좋은방법인지 요청드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 p147 내용 질문 있습니다!!
선생님 안녕하세요!! 다름이 아니라 p147의 재귀를 이용한 순열에서 코드 질문이 있어 질문 남깁니다.!!swap(a[i], a[depth]); makePermutation(n, r, depth + 1); swap(a[i], a[depth]);여기서 마지막에 swap함수를 한번 더 사용하는지 이유를 잘 모르겠습니다. 결국에 중간에 재귀함수로 돌면서 종료조건을 지키면 마지막에 swap을 한번 더 하는 의미가 무엇인지 모르겠습니다!! 알려주시면 감사하겠습니다!!!
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
지역변수의 범위
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 후반(10:30-) 주석에 '블록 내부에서 외부는 접근 가능'이라고 적혀있는데, 블록 외부에서 내부는 접근 가능이 아닌가요? 블록 내부에서 외부는 접근 가능하다는 것은 외부에 영향을 미친다는 뜻으로 알고 있는데 뭐가 맞는 건지 궁금합니다.
-
미해결ChatGPT 영어 상황극 채팅 서비스 만들기 (Feat. 파이썬/장고채널스)
명령행에서 음성으로 메세지 읽어주기 pygame 오류
settings에 pygame이 있어 연결된 거 같은데 실행이 안되는 것 같아요
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
어떻게 MemberForm 클래스가 선택이 되는지 과정이 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의 잘 듣고 있습니다. 재밌게 강의를 듣던 중 궁금증이 생겨 이렇게 질문 드리게 되었습니다. 7분40초~7분50초 쯤 설명에 의하면 "우리가 웹에서 입력한 name값이 MemberForm의 name 필드로 전달이 된다"라는 식으로 말씀을 하셨는데, 어떻게 Member 클래스가 아닌 MemberForm 클래스의 name을 찾아가게 되는 건가요?? 제가 워낙에 초보라서 그런지, 코드 상에서 "Member의 name이 아닌 MemberForm의 name을 찾아가도록 하는" 코드도 발견을 못하겠습니다.. 또한 다른 분들의 말씀에 의해서 질문을 드리고 싶은데, MemberForm 클래스에서 setName() 메서드가 사용이 안되는 것 같은데, 7분55초~ 8분 쯤의 설명으로는 setName() 메서드를 사용하시는 것처럼 말씀하시더라구요. 이 역시도 제가 잘 몰라서 그러는데 실제로 setName() 메서드가 사용되는 건가요?? 자세한 설명 부탁드리겠습니다.감사합니다:-)