묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Next + React Query로 SNS 서비스 만들기
로그인 에러 질문입니다.
안녕하세요 제로초님 강의 듣던 중 동작이 원하는대로 안되어서 질문 드립니다.로그인 후 로그아웃 후 다른 아이디로 로그인 해도 로그아웃 버튼에는 전 계정의 정보가 뜹니다.아래는 로그인 모달의 코드입니다."use client"; import style from "@/app/(beforelogin)/_component/login.module.css"; import { ChangeEventHandler, FormEventHandler, useState } from "react"; import { redirect, useRouter } from "next/navigation"; import { signIn } from "next-auth/react"; export default function LoginModal() { const [id, setId] = useState(""); const [password, setPassword] = useState(""); const [message, setMessage] = useState(""); const router = useRouter(); const onSubmit: FormEventHandler<HTMLFormElement> = async (e) => { e.preventDefault(); setMessage(""); try { const response = await signIn("credentials", { username: id, password, redirect: false, }); console.log(response, "1"); router.replace("/home"); console.log("2"); } 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={style.modalBackground}> <div className={style.modal}> <div className={style.modalHeader}> <button className={style.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={style.modalBody}> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="id"> 아이디 </label> <input id="id" className={style.input} value={id} onChange={onChangeId} type="text" placeholder="" /> </div> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="password"> 비밀번호 </label> <input id="password" className={style.input} value={password} onChange={onChangePassword} type="password" placeholder="" /> </div> </div> <div className={style.message}>{message}</div> <div className={style.modalFooter}> <button className={style.actionButton} disabled={!id && !password}> 로그인하기 </button> </div> </form> </div> </div> ); } 아래는 로그아웃 버튼의 코드입니다. "use client"; import { useRouter } from "next/navigation"; import style from "./logoutButton.module.css"; import { signOut } from "next-auth/react"; import { Session } from "@auth/core/types"; type Props = { me: Session | null; }; export default function LogoutButton({ me }: Props) { const router = useRouter(); const onLogout = async () => { try { const response = await signOut({ redirect: false, }); console.log("signout", response); router.replace("/"); } catch (err) { console.log(err); } }; console.log("me", me); if (!me?.user) { return null; } return ( <button className={style.logOutButton} onClick={onLogout}> <div className={style.logOutUserImage}> <img src={me.user?.image as string} alt={me.user?.email as string} /> </div> <div className={style.logOutUserName}> <div>{me.user?.name}</div> <div>@{me.user?.email}</div> </div> </button> ); } 로그아웃 버튼에는 알려주신대로 레이아웃의 const session = await auth();session을 prop으로 내려주어서 사용하였습니다.처음 test 계정으로 로그인 했을 때의 콘솔을 찍어보면이렇게 test 계정이 정상적으로 나옵니다.이후 로그아웃 후에(session token 쿠키는 정상적으로 지워진 상태입니다) test4 계정으로 다시 로그인 하면이렇게 콘솔에 me 데이터가 test로 찍혀있고 test4의 정보가 로그아웃 버튼에 있습니다. 하지만 서버쪽 콘솔은 이렇게 test4로 나옵니다.이 상태에서 페이지 새로고침을 하면 정상적으로 로그아웃 버튼에는 test4의 데이터가 다시 들어가게 됩니다.로그아웃을 누를 때 세션 토큰이 정상적으로 지워지는 것을 확인했고, 재 로그인을 했는데 서버쪽에는 test4데이터가 찍히고 클라이언트 콘솔에는 test데이터가 찍히는 이유가 궁금합니다..2. 틀린 아이디 비밀번호를 입력했을 때에 제로초님과 응답이 다르게 날라옵니다.로그인 시에 틀린 아이디 비밀번호를 입력시에 저는 401에러가 아닌 이런 응답이 날라옵니다.이 부분은 에러인지 아니면 버전이 달라서 응답이 다른 것 인지는 잘 모르겠습니다. error는 credentialSignIn으로 날라오지만 ok와 status는 true에 200으로 날라오는데, 버전차이인가요 ..? next-auth 버전은 5.0.0-beta.17 입니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
에어비엔비 가격 문제 중 오브젝트 컬럼 삭제 관련 문의입니다.
오브젝트 컬럼을 인코딩 하지 않고 삭제해도 성능에는 지장이 없나요?추가로 test에는 id를 쓸거라 pop으로 빼논 이유는저장해야되는 값에 id를 요구해서 그런건가요?test에 id값이 있으면 안되는 이유나 오류가 나는 이유가 train값이랑 컬럼이 동일해야 해서인가요?
-
해결됨김영한의 실전 자바 - 중급 2편
섹션 2. 문제풀이 질문드립니다.
class Suttle<T extends BioUnit> 으로 상한이 정해져있고, 타입 매개변수로 받아서public class UnitPrinter { static <T extends Shuttle> void printV1(T t) { t.showInfo(); } static void printV2(Shuttle<?> t) { t.showInfo(); } } UnitPrinter를 구현할 때 직접 셔틀에 있는 메서드를 호출할 수 있기 때문에 위와 같은 코드로 구현했습니다.동작은 제대로 하지만, 혹시 문제점이 존재하는 코드인지, 실무에서 지양하는 코드 구현 방식인지 궁금해서 질문드립니다.감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-E 메모리제이션 질문 있습니다.
큰돌님 안녕하세요?해당문제 메모리제이션 질문 있어서 들고 왔습니다. 아래는 제가 짠 코드고, 전체적인 로직은 해설하고 같은데 mem 쪽이 좀 달라서 질문 들고 왔습니다.http://boj.kr/5fac53ce112b4d7a8781f7c8f21ea24a 저는 mem 쪽을 아래와 같이 처리했는데요,&ret = dp[F][H];(ret !=0) return ret; 큰돌님 해설에는 조금 다르게 되어 있는 것 같아서요if(dp[whole][not_whole]) return dp[whole][not_whole];&ret = dp[whole][not_whole]; Q1. 왜 해설에서(ret !=0) return ret;이거를 쓰지 않는건가요? Q2. 아래 두 코드는 사실상 의미가 같은건가요?&ret = dp[F][H];(ret !=0) return ret;if(dp[whole][not_whole]) return dp[whole][not_whole];&ret = dp[whole][not_whole]; Q3. 강의 1분 54에서도 "dp가 있으면 그냥 dp를 반환한다"고 설명해주셨는데 위 질문과 관련이 있을까요?"dp가 있으면 그냥 dp를 반환한다"는 말도 이해가 어려워서 추가로 설명 받을 수 있을까요? 답변 미리 감사합니다.수강자 올림
-
해결됨데이터베이스 중급(Modeling)
15:29 수강 테이블 BCNF 질문
위 가정과 설명해주시는 내용을 봤을 때, (교수번호) -> (과목번호) 에 대한 FD가 있다고도 보이는데 맞을까요? "교수를 알면 과목을 알 수 있다"는 가정은 없기 때문에 종속성이 없다고 가정하신 건지 궁금합니다.테이블 이름이 '수강'이기 때문에 학생이 과목을 수강하는 것이 더 적절하다고 설명하시는 맥락이 있는데, BCNF 정규화 보다도 테이블 pk를 학생, 교수를 대상으로 설정한 것 자체가 문제인 것 같아 보이기도 하네요.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
7회 기출문제 원핫인코딩 관련 질문입니다.
원핫인코딩 시, 만약에 test 데이터에 train에서 포함하지 않은 값이 있어 컬럼이 하나 더 생기는 상황이 발생한다면레이블인코딩으로 진행해야 하나요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
itemservice-db 프로젝트
controller가 없는데 Front만으로도 controller처럼 처리를 할 수 있는건가요?아니면 이전에 memory에서 해서 모델에서 변환시켜줬어야 했는데, db를 이용하니까 model view controller가 다 필요없어진 건가요? items.html에서 이렇게 코드가 있는데th:onclick="|location.href='@{/items/add}'|" 이게 addForm.html로 가는 건가요?어디에서 변환이 되는건지 모르겠는데 관련 코드좀 찾아주실 수 있나요?
-
미해결데이터 분석 SQL Fundamentals
with 문, 인라인 서브쿼리 등 사용하는 기준이 궁금합니다
with 절이나 인라인 서브쿼리처럼 그룹을 나눠서 쓰시는 것과 그냥 한 뭉터기로 푸는 것과 기준이 감이 잡히지 않습니다 그룹을 나누는 기준이 궁금합니다 또 그룹을 나누어야 한다면 temp_01 , temp_02 처럼 몇 번을 나눠야 할지의 기준도 궁금합니다
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
자바란? 5분30초
자바를 직접 설치하고 실행하는 내용은 별도로 다룬다. 라고 하셨는데 혹시 어디에서 찾아 볼 수 있을까요?그리고 윈도우, 맥 os 두 가지 버전 각각 다뤄주시는건가요?
-
미해결
What are the services provided by Qatar Airways Seychelles Office ?
Qatar Airways Seychelles Office offers individualized assistance and helps with bookings,reservations, and inquiries. Experience the ultimate in luxury and comfort with Qatar Airways' legendary hospitality, which provides unmatched facilities and top-notch service. With Qatar Airways, you may explore the Seychelles, and every aspect of the trip is designed to surpass your expectations.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Spring Cloud Gateway - Filter 적용에서 yml적용과 java 코드 적용시
선생님께서 Spring Cloud Gateway - Filter 적용에서 yml적용과 java 코드 적용시 두가지 방법이 있다고 알려주셨습니다.둘다 방과 같은 기능이라는걸 알게되었지만 어떤경우나 환경에 yml 이나 java코드를 사용하는지 궁금합니다.또한 두가지 방법중 실무에서는 어떤방법을 선택해서 사용하는지 질문드립니다
-
미해결프로그래밍 시작하기 : 웹 입문 (Inflearn Original)
강의에 사용하는 예제 코드 자료 있나요?
안녕하세요. 강의에 사용하는 예제 코드 자료 있나요? PPT(https://www.inflearn.com/course/lecture?courseSlug=%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%9E%85%EB%AC%B8-%EC%9D%B8%ED%94%84%EB%9F%B0-%EC%98%A4%EB%A6%AC%EC%A7%80%EB%84%90&unitId=51363)자료만 있는 게 맞나요? 감사합니다.
-
해결됨데이터베이스 중급(Modeling)
수업중 99.99%의 정밀도에 관한 설명
안녕하세요.수업 보다가 질문드립니다.(1정규화 강의인데 왜인지 전체질문으로 등록이 되었네요)1%의 오차율이면 1/100 = 0.01 즉, 100건당 1건의 오류99.99%의 정밀도를 갖는다는 말은 0.01%의 오차율을 뜻하는데요. 0.01%의 오차율이면 1/10000 = 0.0001. 10000건당 1건의 오류로 알고 있는데요.강의 내용에서 다르게 설명 하신 듯 한데 맞을까요? (9:23 부근 설명) 제가 잘못알고 있다면 말씀 부탁드려요.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
main에서 적용 vs app.modules에서적용
main에 ValidationPipe를 적용 했었는데요! app.module에서도 app전반적으로 사용되는 Pipe를 적용 할 수 있어 보이는데 두 적용 방식의 차이는 무엇일까요?
-
미해결처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
MYSQL 맥북 오류
안녕하세요 mysql 을 설치 했습니다 인텔맥북프로 입니다. 수십번깔아보고 지워보고 했는데도 스타트가 안됩니다. ㅠㅠ 심지어 8.0.31 버전 맞춰서 설치했는데도 안됩니다. 터미널 상태도 올립니다. 그전에 도커에서 mysql 이미지 생성도 잘됐는데... 빠른 답변 부탁드려요 ㅠㅠ
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
Security 에서 사용되는 Filter 의 @Bean 등록에 관하여 질문있습니다.
안녕하세요 선생님, 제가 읽은 spring security 문서와 제공해주신 ppt 의 내용에 약간 다른 점이 있어서 질문드립니다. [인증 관리자 - AuthenticationManager - 1] 강의 20:54 에 나오는 ppt 에는 CustomAuthenticationFilter 를 @Bean 으로 등록하라고 나옵니다. 그런데 제가 읽은 spring security 문서에서는 spring security 전용 Filter 는 단순히 @Bean 으로만 등록하면 servlet container 에 의해서 자동으로 Filter 로 등록되버리기 때문에 FilterRegistrationBean 까지 사용해서 이를 우회하라는 글을 본적이 있습니다. 참고: Architecture :: Spring Security 혹시 ppt 오타일까요?
-
미해결[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
Local Notification 예제 문의
예제를 전부 구현한 상태에서아래 코드를 통해서 뱃지 숫자를 1씩 올려서 보내게되어 있습니다. func scheduleNotification() { //notification 내용 설정 let content = UNMutableNotificationContent() content.title = "Local Notification 테스트 1" content.subtitle = "앱 알람 테스트 중입니다." content.sound = .default content.badge = NSNumber(value: UIApplication.shared.applicationIconBadgeNumber + 1)하지만 아래 코드에 의해 뱃지가 0 으로 리셋되기에항상 1만 발송하게 됩니다..onChange(of: scenePhase) { newValue in if newValue == .active { UIApplication.shared.applicationIconBadgeNumber = 0 } }추가적으로 5초 딜레이로 설정후 로컬노티 여러번 누른후에앱을 종료하고 기다리면 노티가 여러개 오지만모두 뱃지 1로 오기 때문에 앱아이콘에 뱃지는 1로 계속옵니다. 실무에서 로컬노티에 카운터를 현재 뱃지 카운터에 + 1 해서보내는건 실효성이 없어보이는데요. 따로 해결할 방법이 있을까요 ? 조언 부탁드립니다. 강의 관련된 질문은 언제나 환영입니다 😄코드 관련 상세하게 작성해주시면 더 좋아요! (상세코드를 붙여넣기 해주세요)마크다운을 사용해서 편리하게 글을 작성하세요먼저 유사한 질문이 있었는지 먼저 검색 해보는 습관~인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요
-
미해결[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기
Local Notification 강의 편집오류 있어요
17:29 부분에서 변수명 scenePhase 타이핑중 sce 까지만 타이핑 하고 바로 화면 이동 됩니다.컷 편집 잘못된거 같아요. 강의 관련된 질문은 언제나 환영입니다 😄코드 관련 상세하게 작성해주시면 더 좋아요! (상세코드를 붙여넣기 해주세요)마크다운을 사용해서 편리하게 글을 작성하세요먼저 유사한 질문이 있었는지 먼저 검색 해보는 습관~인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
아주 기초적인 질문입니다.
현재 next.js 를 생성시킨후, 서버 start를 시킨후, 화면을 수정하면, 화면이 리로딩되고 있지 않습니다. 계속 새로 빌드를 해야지만, 화면 소스가 바꼈을 경우, 리로딩이 되는건가요?
-
해결됨[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
동적 페이지 이동 크롤링 방법 문의
안녕하세요, 상세 페이지 내용 크롤링에서 막혀 있다가 이번에 올려주신 리뉴얼 강의 덕분에 해결했습니다.그런데 페이지 이동에서 다시 막혔습니다.아래는 제가 만든 코드입니다. 첫번째 페이지는 잘됩니다.from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from bs4 import BeautifulSoup import time import requests from webdriver_manager.chrome import ChromeDriverManager chrome_options = Options() chrome_options.add_experimental_option("detach", True) service = Service(executable_path=ChromeDriverManager().install()) driver = webdriver.Chrome(service=service, options=chrome_options) driver.implicitly_wait(5) driver.maximize_window() driver.get("https://www.dbpia.co.kr/search/topSearch?searchOption=all&query=%EA%B0%80%EC%A7%9C%EB%89%B4%EC%8A%A4") html = driver.page_source soup = BeautifulSoup(html, 'html.parser') articles = soup.select("article.thesisWrap") for article in articles: title = article.select_one("h2.thesis__tit").text info = article.select_one(".thesisAdditionalInfo").text link = 'https://www.dbpia.co.kr' + article.select_one(".thesis__summary > a").attrs['href'] response = requests.get(link, headers={'User-Agent':'Mozilla/5.0'}) html = response.text soup = BeautifulSoup(html, 'html.parser') try: abstract = soup.select_one("div.abstractTxt").text except: " " print(title,info,abstract) 수업에서는 1페이지, 2페이지.... 이렇게 바뀔 때 url이 바뀌는 경우를 알려주셨는데제가 크롤링하려는 페이지는 매우 고약하게도...url이 바뀌지 않습니다.첫페이지 다음의 두번째 페이지부터 계속 url에 '#a'만 붙습니다. 이런 경우 1페이지 다음 2페이지, 3페이지 등 다음 페이지 내용을 크롤링할 수 있는 방법이 있을까요? 해당 사이트 url입니다.https://www.dbpia.co.kr/search/topSearch?searchOption=all&query=%EA%B0%80%EC%A7%9C%EB%89%B4%EC%8A%A4#a 1.<전체 화면> <확대 화면: URL> <확대 화면 : F12 - 소스코드> driver.find_element(By.CSS_SELECTOR, ".dpPaging__link:nth-of-type(1) ").click()이렇게 페이지에 따라 CSS 선택자를 만들고 숫자만 바꿔서 하려고 했는데for문을 적용할 수가 없네요.... 실전편에서 동적 페이지 크롤링 강의 오픈 예정이던데 이런 내용도 다뤄주시면 감사하겠습니다.