묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
target 값이 object이면 검증하기전에 항상 int형으로 변경해야되나요?
안녕하세요? target 값이 object이면 검증하기전에 항상 int형으로 변경해야되나요? RandomForest 나 lgb 사용할 경우에는 그냥 안해도 되는거죠....
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 스트림즈와 커넥트 활용 사례가 더 궁금합니다.
안녕하세요 먼저 좋은 강의를 제공해주셔서 감사합니다. 바로 본론으로 들어가서, "카프카 기반 아키텍처" 섹션에서 스트림즈와 커넥트의 차이는 결국 Stateful 한 데이터에 대한 처리냐 아니냐 라고 말씀해주신거 같은데, 좀 더 구체적인 상황 사례가 있을까요? 스트림즈가 Stateful 한 데이터에 처리가 가능하다고 하는 것은 결국 스트림즈는 단일 파이프라인?, 단일 애플리케이션? 으로 구성되어야 한다는 의미일까요? (여러 파이프라인으로 분산 모드가 가능한 커넥트는 데이터 처리에 대해서 Stateful 할 수 없으니깐 말이죠)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
다시 학습을 할 필요가 있을까요?
안녕하세요검증용 데이터로 나눈 후 학습을 하면 비교적 적은 데이터로 학습이 될텐데요. 그러면 성능 확인 후 검증용데이터로 나누기전의 데이터로 다시 학습시키는 것이 좋을까요?
-
미해결빅데이터분석기사 실기대비 (R 활용)
작업형 2유형 인덱스값
구체적으로 설명이 될 줄 모르겠습니다... 앞에서 tst <- tst[,-1]로 X값을 날려서 tst로 새롭게 저장이 됐는데,,, 인덱스 생성을 위해 마지막 답안 제출 시 tst$X로 실행 시 왜 X가 살아있는건지 이해가 잘 되지 않습니다..
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
13-2. 녹화된 스크립트매크로를 파이썬에서 활용하는 방법 --- 강의 내용이 안보입니다.
한글 자동화 관련해서 공부할 강의 분량이 너무 많아서 완강은 아직 엄두도 안나고, 그냥 쭉 한 번씩 구경(?)하던 중이었는데요. 13-2. 녹화된 스크립트매크로를 파이썬에서 활용하는 방법이 강의에서는 내용이 전혀 뜨지 않네요. (아래 캡처) 제 컴퓨터 환경에 문제가 있는 것일까요?
-
해결됨C개발자를 위한 최소한의 C++
인스턴스의 개념에 대해 int a(3), int(5) 예시를 바탕으로한 질문입니다.
안녕하세요, 강사님.int a(3)은 인트형식(혹은 클래스)의 인스턴스 a를 3으로 초기화 한것이고, 상수 5가 int(5) 인트형식(클래스)의 인스턴스 5라고 한다면,Q1 인트형식의 상수들은 다 인스턴스인 것인가요?Q2 int(5)라는건 식별자가 없는 인스턴스 인거고 가령, int(5) + int(3) == int(7) 이렇게 기술했을때 참이 되나요?
-
미해결
dvwa setup 이후 하얀 화면
setup을 끝내고 create / Reset Database 를 클릭하면 사진과 같이 하얀 화면만 나오네요... 해결 방법이 있을까요?만약 제가 뭔갈 잘못 건드렸다면 dvwa를 삭제하고 하려고 하는데 삭제 방법은 무엇인가요?
-
미해결
Mac 설치
안녕하세요! 대세는 쿠버네티스 수업을 듣고 싶습니다.맥 밖에 없는데 맥용 설치 튜토리얼은 없나요? 감사합니다!
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
로그인을 해도 LoggedInGuard쪽에서 false값이 나옵니다.
import { createParamDecorator, ExecutionContext } from '@nestjs/common'; //저장된 사용자 정보에 접근 가능 export const User = createParamDecorator( (data: unknown, ctx: ExecutionContext) => { const request = ctx.switchToHttp().getRequest(); console.log('사용자', request.user.id); return request.user; }, );위에있는것은 로그인을 하게되면 유저의 아이디값을 가져오는데 로그인가드쪽을 보면 여기서는 자꾸 false값이 나옵니다.다른쪽 로직도 작업하신 코드 그대로 사용을 했는데 왜자꾸 false값만 나올까요....import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common'; import { Request } from 'express'; import { Observable } from 'rxjs'; @Injectable() export class LoggedInGuard implements CanActivate { canActivate( context: ExecutionContext, ): boolean | Promise<boolean> | Observable<boolean> { const request = context.switchToHttp().getRequest() as Request; console.log('로그인햇니?????????', request.isAuthenticated()); return request.isAuthenticated(); } } 로그인 유지가 안되는거로 보이기는 하는데 해결법이 있을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
교재 내용 질문, 결측치 인코딩 관련
안녕하세요, 강의와 교재로 공부하고 있습니다.교재 작업형2 ch4 회귀 부분에서트레인 테스트 데이터를 합친 후범주형 데이터를 레이블 인코딩 한 후 다시 트레인 테스트로 쪼개고결측치를 채우는 최솟값, 최빈값으로 채우는 과정으로 진행이 되는데요, 레이블 인코딩 과정에서 범주형데이터의 결측치가 하나의 값으로 인코딩이 되어서결측치가 존재하지 않아 중앙값으로 결측치를 대체하는 과정이 불필요한 것 같은데 맞을까요? 또한 원핫 인코딩을 사용하려는 경우 결측치를 먼저 대체한 후에 인코딩을 해야 오류가 안나는게 맞을까요?일반적으로 결측치 처리를 인코딩 후에 하는지 전에 하는지 궁금합니다.감사합니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
@Import
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 전 강의에서 @Configuration 파일은 하나의 파일에서 대부분 설정 한다고 하셨던거 같은데 @Import 를 사용하면 설정파일도 분리해서 사용 하는경우도 있을까요 ? 예를 들면 DB 부분, 인증부분 등등 .. 좀 큰 프로잭트에서 사용하는 방법인지 궁금합니다!
-
미해결개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
메모리맵 입출력과 고립형 입출력의 물리적 차이가 이게 맞나요?
"메모리 맵 입출력은 메모리에 접근하기 위한 주소공간과 입출력 장치에 접근하기 위한 주소공간을 하나의 주소공간으로 간주하는 방법입니다." 는 한마디로 같는 램 안에 섞여잇단 말씀인가요? 예시로 1024개의 주소를 나타내는 램에 반은 일반적인 메모리를 위해, 반은 입출력장치를 위해 사용된다는 말씀인가요?그렇다면 고립형 입출력에서 메모리에도 1024, 입출력장치도 1024개의 주소를 사용할수 잇다는 말씀은...램이 두배로 증가한것도 아닐테고...메모리를 위한 주소공간은 램에 표현되고 입출력장치를 위한 주소공간은 입출력장치 내의 레지스터나 입출력장치내의 램을 뜻하는게 맞을까요?좀 두서없어서 죄송합니다...정리하자면 메모리맵 입출력에서 메모리를 위한 주소공간과 입출력을 위한 주소공간은 램에 존재하는 것이고 고립형 입출력에서 메모리를 위한 주소공간은 램에, 입출력장치를 위한 주소공간은 장치 컨트롤러 내의 기억장치에 존재하는 것..이 맞을까요?
-
미해결
지식공유를 하려고 하는데요
수학강의로 지식공유를 하려고 하는데요교재료 사용할 문제집은 교과서나 시중에서 판매중인 교재를 사용해도 되는건가요?그게 저작권에 문제가 있다면 어떤방식으로 수학 강의를 하면 좋은지 알려주세요
-
해결됨얄코의 떠먹여주는 객체지향 디자인 패턴
빌더패턴 질문있습니다!
2분대에 나오는 PizzaBuilder static내부 클래스에 기본 생성자가 없으면 뒤에 나오는 main문에서 new Pizza.PizzaBuilder()가 가능한가요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@ResponseBody나 HttpEntity를 사용하는 경우
@ResponseBody나 HttpEntity를 사용해서 뷰를 렌더링하지 않는 경우에도HandlerAdapter에서 DispatcherServlet으로 ModelAndView를 반환하나요?만약 반환한다면 ModelAndView에는 그냥 빈 값이 들어 있는건가요?빈 값이 들어 있으면 DispatcherServlet은 이게 View Path가 빈 값인지 아닌지에 따라 View를 렌더링 할지 말지 결정하는 건가요??
-
미해결한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
npm init 을 터미널에 입력하면 사진과 같은 오류가 납니다.
3.3)Node.js 사용하기강의 3분10초입니다.npm init 을 터미널에 입력하면 사진과 같은 오류가 납니다.
-
미해결Vue3 완벽 마스터: 기초부터 실전까지 - "기본편"
checkedbox 다중에서 ref 대신 reactive를 쓰면 v-model이 작동 안되는 이유가 궁금합니다.
배열이나 객체를 사용할 때는 reactive()를 사용하는 것으로 알고있습니다. 해당 코드에서는 reactive([]) 대신 ref([])를 사용했더라구요.const checkboxValues = ref([]) reactive([])를 사용하니 checkbox에 v-model이 제대로 동작하지 않았습니다. 그 이유는 무엇인가요?
-
미해결
REQUIRES_NEW와 예외 핸들링의 상관 관계
REQUIRES_NEW를 올바르게 사용하기 위해선, 다시 말해 외부 트랜잭션과 내부 트랜잭션(신규 트랜잭션)을 제대로 분리하기 위해선 아래와 같이 이해했습니다.외부 트랜잭션의 로직은 REQUIRES_NEW 로직에서 발생될 수 있는 예외를 반드시 핸들링 해야 한다. 이렇게 이해한 이유는 아래와 같습니다.가정: 트랜잭션A는 외부 트랜잭션, 트랜잭션B는 내부 트랜잭션(신규 트랜잭션)상황: 트랜잭션 A는 성공, 트랜잭션 B는 실패 트랜잭션B에서 발생된 예외가 트랜잭션A까지 전파되면, 결론적으로 트랜잭션A까지 실패한 것으로 취급된다.결국 의도했던 트랜잭션 A는 성공 -> 커밋, 트랜잭션 B는 실패 -> 롤백이 되지 않고,트랜잭션 A 실패 → 롤백, 트랜잭션 B 실패 → 롤백 되어버린다. 따라서, REQUIRES_NEW 를 본래의 의도대로 사용하기 위해선, 반드시 예외 핸들링을 하여 예외 정상처리(예외를 catch하여 먹어버림)해주어야 한다고 이해하였는데, 제가 이해한게 맞을지 여쭤보고 싶습니다 🙂
-
해결됨외워서 끝내는 네트워크 핵심이론 - 응용
연결 유지 상태에서의 이중화 노드 무중단 재기동 방법
안녕하세요.대외 통신 연계 업무를 맡고 있는 주니어입니다.네트워크 지식에 부족함을 느껴 강의를 수강하게 되었습니다.어렴풋이만 알고 있는 지식에 대해 살을 붙임에 있어 많은 도움이 되고 있습니다. 요즘은 거래량이 많이 급증함에 따라 연결 유지 세션(전용 망)으로 많은 대외 기관들과 연결되어 있습니다.노드는 이중화가 되어있으나, 연결 유지 세션에 대해서는 액티브-스탠바이로만 운영중입니다. 때문에 배포 등으로 재기동 시 순단이 발생하고 있어 이를 없애는게 주요 과업 중 하나입니다.대외기관 - L4 사이에는 연결유지 세션으로 유지한 상태로 무중단 재기동을 할 방법이 있을까요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
AxiosError {message: 'Request failed with status code 401/500', name: 'AxiosError', code: 'ERR_BAD_RESPONSE',
로그인 페이지에서 로그인을 하면 500, 커뮤니티 생성 페이지에서 생성을 하면 401 AxiosError가 뜹니다. <login.tsx>import axios from 'axios'; import InputGroup from '../components/InputGroup' import Link from 'next/link' import { useRouter } from 'next/router'; import React,{ FormEvent, useState } from 'react' import { useAuthDispatch } from '../context/auth'; axios.defaults.withCredentials = true; const Login = () => { let router = useRouter(); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [errors, setErrors] = useState<any>({}); const dispatch = useAuthDispatch(); const handleSubmit = async (event: FormEvent) => { event.preventDefault(); try{ const res = await axios.post("/auth/login", {password, username}, {headers: {'Access-Control-Allow-Origin': 'http://localhost:3000'}}) dispatch("LOGIN", res.data?.user); } catch(error: any){ //console.log(error); setErrors(error.response?.data || {}) } } return ( <div className='bg-white'> <div className='flex flex-col items-center justify-center h-screen p-6'> <div className='w-10/12 mx-auto md:w-96'> <h1 className='mb-2 text-lg font-medium'>로그인</h1> <form onSubmit={handleSubmit}> <InputGroup placeholder='Username' value={username} setValue={setUsername} error={errors.username} /> <InputGroup placeholder='Password' value={password} setValue={setPassword} error={errors.password} /> <button className='w-full py-2 mb-1 text-xs font-bold text-white uppercase bg-gray-400 border border-gray-400 rounded'> 로그인 </button> </form> <small> 아직 아이디가 없으신가요? <Link href="/register" legacyBehavior> <a className='ml-1 text-blue-500 uppercase'>회원가입</a> </Link> </small> </div> </div> </div> ) } export default Login<create.tsx>import axios from "axios"; import { GetServerSideProps } from "next"; import InputGroup from "../../components/InputGroup" import {useState, FormEvent} from "react"; import {useRouter} from "next/router" axios.defaults.withCredentials = true; const SubCreate = () => { const [name, setName] = useState(""); const [title, setTitle] = useState(""); const [description, setDescription] = useState(""); const [errors, setErrors] = useState<any>({}); let router = useRouter(); const handleSubmit = async (event: FormEvent) => { event.preventDefault(); try { const res = await axios.post("/subs", {name, title, description}, {headers: {'Access-Control-Allow-Origin': 'http://localhost:3000'}}) router.push(`/r/${res.data.name}`); } catch (error: any) { // console.log(error); setErrors(error.response?.data || {}); } } return ( <div className="flex flex-col justify-center pt-16"> <div className="w-10/12 mx-auto md:w-96"> <h1 className="mb-2 text-lg font-medium"> 그룹 만들기 </h1> <hr /> <form onSubmit={handleSubmit}> <div className="my-6"> <p className="font-medium">Name</p> <p className="mb-2 text-xs text-gray-400"> 그룹 이름은 변경할 수 없습니다. </p> <InputGroup placeholder="이름" value={name} setValue={setName} error={errors.name} /> </div> <div className="my-6"> <p className="font-medium">Title</p> <p className="mb-2 text-xs text-gray-400"> 주제를 입력해 주세요. </p> <InputGroup placeholder="주제" value={title} setValue={setTitle} error={errors.title} /> </div> <div className="my-6"> <p className="font-medium">Description</p> <p className="mb-2 text-xs text-gray-400"> 그룹에 대한 설명을 입력해주세요. </p> <InputGroup placeholder="설명" value={description} setValue={setDescription} error={errors.description} /> </div> <div className="flex jstify-end"> <button className="px-4 py-1 text-sm font-semibold rounded text-white bg-gray-400 border" > 그룹 만들기 </button> </div> </form> </div> </div> ) } export default SubCreate<subs.ts>import {Router, Request, Response} from "express"; import jwt from "jsonwebtoken" import { User } from "../entities/User"; import userMiddleware from "../middlewares/user" import authMiddleware from "../middlewares/auth" import { AppDataSource } from "../data-source"; import Sub from "../entities/Sub"; import { isEmpty } from "class-validator"; const createSub = async (req: Request, res: Response, next) => { const {name, title, description} = req.body; try { let errors: any = {}; if (isEmpty(name)) errors.name = "이름은 비워둘 수 없습니다."; if (isEmpty(title)) errors.title = "제목은 비워둘 수 없습니다."; const sub = await AppDataSource.getRepository(Sub) .createQueryBuilder("sub") .where("lower(sub.name) = :name", { name: name.toLowerCase() }) .getOne(); if (sub) errors.name = "서브가 이미 존재합니다."; if (Object.keys(errors).length > 0) { throw errors; } } catch (error) { console.log(error); return res.status(500).json({ error: "문제가 발생했습니다." }); } try { const user: User = res.locals.user; const sub = new Sub(); sub.name = name; sub.description = description; sub.title = title; sub.user = user; await sub.save(); return res.json(sub); } catch (error) { console.log(error); return res.status(500).json({ error: "문제가 발생했습니다." }); } }; const router = Router(); router.post("/", userMiddleware,authMiddleware, createSub); export default router; <server.ts>import express, { response } from "express"; import morgan from "morgan"; import { AppDataSource } from "./data-source"; import authRoutes from './routes/auth' import subRoutes from './routes/subs' import cors from 'cors'; import dotenv from 'dotenv'; import cookieParser from "cookie-parser"; const app = express(); const origin = process.env.ORIGIN; const corsOption = { origin: "http://localhost:3000", credentials: true } app.use(cors(corsOption)) app.use(express.json()); app.use(morgan('dev')); app.use(cookieParser()); dotenv.config(); app.get("/", (_, res) => {res.send("running")}); app.use("/api/auth", authRoutes) app.use("/api/subs", subRoutes) console.log(process.env.ORIGIN) let port = 4000; app.listen(port, async () => { console.log('server running at http://localhost:${port}'); AppDataSource.initialize().then(async () =>{ console.log("database initialized") }).catch(error => console.log(error)) })