inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

REQUIRES_NEW와 예외 핸들링의 상관 관계

미해결

REQUIRES_NEW 를 올바르게 사용하기 위해선, 다시 말해 외부 트랜잭션과 내부 트랜잭션(신규 트랜잭션)을 제대로 분리 하기 위해선 아래와 같이 이해했습니다. 외부 트랜잭션의 로직은 REQUIRES_NEW 로직에서 발생될 수 있는 예외를 반드시 핸들링 해야 한다. 이렇게 이해한 이유는 아래와 같습니다. 가정: 트랜잭션A는 외부 트랜잭션, 트랜잭션B는 내부 트랜잭션(신규 트랜잭션) 상황: 트랜잭션 A는 성공, 트랜잭션 B는 실패 트랜잭션B에서 발생된 예외가 트랜잭션A까지 전파 되면, 결론적으로 트랜잭션A까지 실패한 것으로 취급 된다. 결국 의도했던 트랜잭션 A는 성공 -> 커밋 , 트랜잭션 B는 실패 -> 롤백 이 되지 않고, 트랜잭션 A 실패 → 롤백 , 트랜잭션 B 실패 → 롤백 되어버린다. 따라서, REQUIRES_NEW 를 본래의 의도대로 사용하기 위해선, 반드시 예외 핸들링을 하여 예외 정상처리(예외를 catch하여 먹어버림)해주어야 한다고 이해하였는데, 제가 이해한게 맞을지 여쭤보고 싶습니다 🙂

김준기 댓글 1 좋아요 0 조회수 62

연결 유지 상태에서의 이중화 노드 무중단 재기동 방법

해결됨

외워서 끝내는 네트워크 핵심이론 - 응용

안녕하세요. 대외 통신 연계 업무를 맡고 있는 주니어입니다. 네트워크 지식에 부족함을 느껴 강의를 수강하게 되었습니다. 어렴풋이만 알고 있는 지식에 대해 살을 붙임에 있어 많은 도움이 되고 있습니다. 요즘은 거래량이 많이 급증함에 따라 연결 유지 세션(전용 망)으로 많은 대외 기관들과 연결되어 있습니다. 노드는 이중화가 되어있으나, 연결 유지 세션에 대해서는 액티브-스탠바이로만 운영중입니다. 때문에 배포 등으로 재기동 시 순단이 발생하고 있어 이를 없애는게 주요 과업 중 하나입니다. 대외기관 - L4 사이에는 연결유지 세션으로 유지한 상태로 무중단 재기동을 할 방법이 있을까요?

  • 네트워크
  • 비동기
daroguzo 댓글 1 좋아요 0 조회수 194

AxiosError {message: 'Request failed with status code 401/500', name: 'AxiosError', code: 'ERR_BAD_RESPONSE',

미해결

따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)

로그인 페이지에서 로그인을 하면 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)) })

  • react
  • node.js
  • postgresql
  • docker
  • typescript
  • 클론코딩
  • next.js
마곡동김두팔 댓글 1 좋아요 0 조회수 699

logit 모델 구성시 독립변수 교호작용은 안구해도 되는지요

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

logit 모델 구성시 독립변수 교호작용은 안구해도 되는지요? 7회 1-2에서 강의에서는 주효과만 구해서 풀어주셔는데, 교호작용까지 하면 값이 좀 달라져서 문의드립니다

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
rainyshiny 댓글 2 좋아요 0 조회수 100

wrapper, bitstream 오류

미해결

설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)

안녕하세요 맛비님. 비트스트림을 완료해서 위에 ready가 떠도 초록색 바가 왔다갔다 하는게 안사라지고(generating hdl wrapper) 비트스트림도 write bitstream complete가 떠있는데 로딩창이 안사라집니다.뭐가 잘못된건지 궁금합니다

  • fpga
  • 임베디드
손환민 댓글 3 좋아요 1 조회수 197

[4-0] 로그인하고 아무 반응이 없어요/axios.ts

해결됨

맛집 지도앱 만들기 (React Native & NestJS)

❗ 질문 작성시 꼭 참고해주세요 현재 문제(또는 에러)와 코드(또는 github) 를 첨부해주세요. 맥/윈도우, 안드로이드/iOS, ReactNative, Node 버전 등의 개발환경 을 함께 적어주시면 도움이 됩니다. 에러메세지는 일부분이 아닌 전체 상황 을 올려주세요. ( 일부만 자르거나 복사하지말아주세요 .) 개발환경/코드에 대한 정보가 없을경우 답변이 어렵습니다. axios.ts에서 BaseURL 바꿔도 로그인이 안됩니다...

  • react-native
  • typescript
  • nestjs
  • react-query
  • zustand
댓글 3 좋아요 0 조회수 288

랜더링 걸었을때 결과물이 이상하게 나옵니다.

해결됨

친절한 블렌더 - [LV.1] 기초 모델링

안녕하세요. 열심히 수업을 듣고있는 수강생입니다. 도넛스토어를 만든 후에 랜더링을 걸어보고 궁금한 부분이 있어서 질문드립니다. 뷰포트와 랜더링 결과물을 같이 찍은 스크린샷입니다 도넛 아이싱이 렌더링 했을때 이상하게 나옵니다. 혹시 버그인가 해서 파일을 저장해서 다시 불러왔는데요 솔리디파이 오프셋에 녹색이 칠해져 있고 아이싱이 뒤집혀있습니다. 옵션값 1로 바꿔서 제대로 바꾸어놓고 찍었는데도 이상하게 나옵니다. 혹시 이게 원인일까요? 또 녹색은 왜 생기는지 궁금합니다. 앞서 파일을 저장했다가 다시 열었습니다. 색이 이상한 부분이 있어 수정하고 렌더를 걸었는데 수정 전 색깔로 결과물이 나옵니다. (창문유리,화초,바닥,빵색)이상해서 세이브하고 다시 껏다 켰는데 수정한게 반영이 안된 채로 리셋되어 있습니다. 왜 잘 안되는지 궁금합니다. 상세하고 알차게 강의해주셔서 재미있게 잘 공부하고 있습니다. 앞으로도 잘 부탁드립니다:D!

  • blender
  • 3d
  • 3d-modelling
  • 3d-rendering
오윤주 댓글 3 좋아요 1 조회수 428

공식 문서 링크가 바뀐 것 같습니다

해결됨

스프링 DB 2편 - 데이터 접근 활용 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 6. 데이터 접근 기술 - 스프링 데이터 JPA.pdf (v20240526) 4페이지에 나온 두 링크를 눌러도 주소가 바뀌어서 원래 페이지로 이동하지 않습니다. https://docs.spring.io/spring-data/jpa/reference/jpa/query-methods.html#jpa.query-methods.query-creation https://docs.spring.io/spring-data/jpa/reference/repositories/query-methods-details.html#repositories.limit-query-result 이 링크로 바뀐 것 같습니다.

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
11 1 댓글 2 좋아요 0 조회수 145

강의 수강신청하고 듣기 전입니다 질문있습니다.

미해결

스프링 시큐리티 OAuth2

제가 만든 두 서버 사이트끼리 sso 인증으로 로그인을 공유하려고 합니다. 이 강의에 그것에 관한 내용이 있나요? 있다면 몇강쯤에 있나요? 없다면 이 강의를 어떤식으로 활용해야 구현할 수 있을까요 ?

  • java
  • spring
  • spring-boot
  • oauth
열심인 참새 댓글 1 좋아요 0 조회수 133

비주얼 스튜디오 코드 Bracket Pair Colorizar 설치

미해결

퍼블리싱 핵심이론 PDF 교재 및 예제파일(HTML+CSS+FLEX+JQUERY)

비주얼 스튜디오 코드 필수 앱 설치 및 사용법 영상을 보고 있는데 'Bracket Pair Colorizar' 이라는 프로그램이 기능 제공을 더 이상 하지 않는다고 적혀있습니다. 해당 프로그램 외에 어떤걸 설치 해야 하나요???

  • HTML/CSS
  • jquery
  • flex
강현경 댓글 1 좋아요 0 조회수 183

작업형2 질문

미해결

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

작업형2 모델 분석 및 결과 제출에 대해 질문이 있습니다. 회귀분석을 예로들면 랜덤포레스트회귀, XGB회귀, 릿지, 라쏘 등 다양한 모델을 사용해서 모델 마다 도출하는 값이 다른고 그 중 가장 높은 값(r2값이나 mse 값 등 문제에서 평가로 제시된 지표)을 사용한다고 알고 있습니다. val데이터로 학습을하고 가장 높은 값을 찾아서 마지막에 pred = model.predict(test)로 대입하는데, 모델을 선택하는 과정이 없는 것 같습니다. 이렇게 두개의 모델을 사용해서 각각 값을 도출해서 위와 같은 값이 나왔고 이런식으로 test데이터를 예측값에 적용하는데 위 두개에 모델중에 더 나은 모델을 선택하는 과정이 없는건가요?? 두개의 모델이 다 활성화 되어있는데 저렇게 밑에 model.predict만 적어놓으면 이 모델이 xgb인지 랜덤포레스트인지 어떻게 인식하는걸까요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
expk 댓글 2 좋아요 0 조회수 121

ModelMapper에 대해 질문드립니다 !!

미해결

안녕하세요! 엔티티 -> DTO, DTO -> 엔티티 변환 모두 STRICT 전략을 사용하는 modelMapper.map을 사용하고있습니다. DTO를 쓰는 이유 -> 엔티티가 바뀌어도, dto는 그대로이므로 api 스펙이 바뀌지않음. 그런데 STRICT 전략을 쓰는 modelMapper를 사용하면, dto와 엔티티 필드이름이 정확하게 일치해야하므로 엔티티가 바뀌면 dto 필드도 바뀌어야함. 이렇게 되면 엔티티 변경 시에 api 스펙이 바뀌지않는다는 장점이 없어지게됨 이런 생각이 들었는데, 그럼 STRICT 전략은 지양해야하나요, 아님 다른 방법이 있는 것인가요?

  • spring
  • modelmapper
  • java
  • 스프링
김지호 댓글 2 좋아요 0 조회수 222

판다스 환경설정

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

판다스 환경설정을 하라고 하셨는데 어떻게 해야 set_option 코딩 없이 모든 컬럼을 한번에 볼 수 있는가요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
wsyang 댓글 2 좋아요 0 조회수 110

모의고사 문제3번 풀이

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

모의고사 문제 3번 풀이 관해서 질문 드려요! 문제 3번 풀이가 방법이 총 세가지로 풀이 해주셨는데 ( replace, map, 조건) 혹시 시험에서 저런 류의 문제에서 결측치랑 데이터값을 변경하라는 문제에서 어떤 특정한 풀이를 이용해서 풀라고도 나오기도 하나요? 아니면 저 세개중에 한가지 방법만 사용해서 답만 구해도 상관 없는건가요!?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
jnj0713 댓글 2 좋아요 0 조회수 102

이런 상황에선 어떻게 구현 하시는 지 궁금합니다.

해결됨

실전! 스프링 데이터 JPA

안녕하세요. 좋은 강의 항상 감사합니다. JPA 와 디비를 배우면서 적용 하는 과정에서 궁금한게 생겼습니다. @Transactional public Post getPostDetail(Long postId) { Post post = postRepository.findById(postId) .orElseThrow(() -> new CustomException(ErrorCode.POST_NOT_FOUND)); post.incrementViewCount(); // 조회수 증가 return post; } 상세글 조회 시 조회수가 +1 되는 간단한 로직을 가정하겠습니다. 트래픽이 크다고 가정 할 시 해당 로직 대로 하면 조회 시 마다 DB에 부하가 예상되서 질문 드립니다. 해당 로직대로 해도 DB에 크게 부하를 주지 않는 수준인가요? Redis를 써서 조회수 만 따로 캐시로 저장을 한다면 DB랑 데이터가 정합하지 않을 것으로 예상됩니다. 만약 조회수가 중요한 서비스라면 db 락을 이용하여 성 능 저하를 감안 하고 하시는지.. 실무에선 어떻게 처리하시는 지 궁금합니다

  • java
  • spring
  • spring-boot
  • jpa
토니 댓글 2 좋아요 0 조회수 194

querydsl Q class 이슈

해결됨

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

plugins { id 'java' id 'org.springframework.boot' version '3.0.5' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id "org.asciidoctor.jvm.convert" version "3.3.2" } group = 'org.spring' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } asciidoctorExt } repositories { mavenCentral() } ext { snippetsDir = file('build/generated-snippets') } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.security:spring-security-crypto' implementation 'org.springframework.session:spring-session-jdbc' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.security:spring-security-test' implementation 'org.bouncycastle:bcprov-jdk15on:1.70' implementation 'com.querydsl:querydsl-core:5.0.0' implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" annotationProcessor 'jakarta.persistence:jakarta.persistence-api' annotationProcessor 'jakarta.annotation:jakarta.annotation-api' implementation 'io.jsonwebtoken:jjwt-api:0.11.5' runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5' runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5' annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" asciidoctorExt "org.springframework.restdocs:spring-restdocs-asciidoctor:3.0.0" testImplementation "org.springframework.restdocs:spring-restdocs-mockmvc:3.0.0" annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testCompileOnly "org.projectlombok:lombok" testAnnotationProcessor "org.projectlombok:lombok" runtimeOnly 'com.h2database:h2' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'org.modelmapper:modelmapper:3.2.0' } tasks.named('test') { useJUnitPlatform() } test { outputs.dir snippetsDir } asciidoctor { inputs.dir snippetsDir configurations 'asciidoctorExt' dependsOn test } asciidoctor.doFirst { delete file("src/main/resources/static/docs") } bootJar { enabled = true dependsOn asciidoctor copy { from asciidoctor.outputDir into "src/main/resources/static/docs" } } jar { enabled = false } FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > Compilation failed; see the compiler error output for details. * Try: > Run with --info option to get more log output. > Run with --scan to get full insights. BUILD FAILED in 6s 안녕하세요 querydsl 빌드 후 Q class 임포트 하는 곳에서 에러가 발생합니다 ㅠ 구글링해서 이런 저런 방법 찾아서 혼지사 해보려고 했는데 쉽지않네요.. 그 밖에 캐시 지우고 재시작, java SDK 설정, 빌드설정 등 여러가지 방법을 해보았는데 잘 안됩니다 ㅠ 두세시간 정도 삽질중인데 도움 좀 주실 수 있을까요..

  • vue.js
  • aws
  • spring-boot
  • jpa
  • spring-security
이지창 댓글 2 좋아요 0 조회수 466

시험에서 minmax scale

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

스케일링 방법 2 한가지만 딱 알고 시험치러 가도 되나요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
wsyang 댓글 2 좋아요 0 조회수 213

인기 태그

인프런 TOP Writers

주간 인기글