묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Spring Boot를 활용하여 채팅 플랫폼 만들어보기
작동하는 방법
이거 작동 확인하려면 source_code에 있는 client와 server 동시에 실행 시켜서 작동 확인해보면 되나요?
-
해결됨Spring Boot를 활용하여 채팅 플랫폼 만들어보기
Package 구성
domain안에 따로 repository를 만든 이유가 있나요?
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
ExperienceRepositoryTest 실행 오류
++++테스트파일에서 오타가 난 줄 알았는데 레포지토리 파일 모두 오타가 나있었네요!!감사합니다!
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
projectRepository assertion 오류 질문입니다.
projectRepositoryTest.kt 파일을 아래와 같이 작성했는데 assertion 오류가 나서 원인을 모르겠어서 해당 파일 코드 첨부합니다. 94줄과 111줄 오류인 걸로 보아 skills를 assert할 때 뭐가 잘못된 것 같은데 어떻게 고쳐야 하는지 잘 모르겠습니다..!package com.yewon.portfolio.domain.repository import com.yewon.portfolio.domain.constant.SkillType import com.yewon.portfolio.domain.entity.Project import com.yewon.portfolio.domain.entity.ProjectDetail import com.yewon.portfolio.domain.entity.ProjectSkill import com.yewon.portfolio.domain.entity.Skill import org.assertj.core.api.Assertions import org.assertj.core.api.Assertions.* //import com.yewon.portfolio.domain.entity.* //import org.assertj.core.api.Assertions.* import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.Test import org.junit.jupiter.api.TestInstance import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest @DataJpaTest @TestInstance(TestInstance.Lifecycle.PER_CLASS) class ProjectRepositoryTest( @Autowired val projectRepository: ProjectRepository, @Autowired val skillRepository: SkillRepository ) { val DATA_SIZE = 10 private fun createProject(n: Int): Project { val project = Project( name = "${n}", description = "테스트 설명 {n}", startYear = 2023, startMonth = 9, endYear = 2023, endMonth = 9, isActive = true ) val details = mutableListOf<ProjectDetail>() for (i in 1..n) { val projectDetail = ProjectDetail(content = "테스트 ${i}", url = null, isActive = true) details.add(projectDetail) } project.addDetails(details) val skills = skillRepository.findAll() val skillsUsedInProject = skills.subList(0, n) for (skill in skillsUsedInProject) { val projectSkill = ProjectSkill(project = project, skill = skill) project.skills.add(projectSkill) } return project } @BeforeAll fun beforeAll() { println("----- 스킬 데이터 초기화 시작 -----") val skills = mutableListOf<Skill>() for (i in 1..DATA_SIZE) { val skillTypes = SkillType.values() val skill = Skill(name = "테스트 ${i}", type = skillTypes[i%skillTypes.size].name, isActive = true) skills.add(skill) } skillRepository.saveAll(skills) println("----- 스킬 데이터 초기화 종료 -----") // println("----- 데이터 초기화 이전 조회 시작 -----") // val beforeInsert = projectRepository.findAll() // assertThat(beforeInsert).hasSize(0) // println("----- 데이터 초기화 이전 조회 종료 -----") println("----- 테스트 데이터 초기화 시작 -----") val projects = mutableListOf<Project>() for (i in 1..DATA_SIZE) { val project = createProject(i) projects.add(project) } projectRepository.saveAll(projects) println("----- 테스트 데이터 초기화 종료 -----") } @Test fun testFindAll() { println("----- findAll 테스트 시작 -----") val projects = projectRepository.findAll() assertThat(projects).hasSize(DATA_SIZE) println("projects.size: ${projects.size}") for (project in projects) { assertThat(project.details).hasSize(project.name.toInt()) println("project.details.size: ${project.details.size}") assertThat(project.skills).hasSize(project.name.toInt()) println("project.skills.size: ${project.skills.size}") } println("----- findAll 테스트 종료 -----") } @Test fun testFindAllByIsActive() { println("----- findAllByIsActive 테스트 시작 -----") val projects = projectRepository.findAllByIsActive(true) assertThat(projects).hasSize(DATA_SIZE) println("projects.size: ${projects.size}") for (project in projects) { assertThat(project.details).hasSize(project.name.toInt()) println("project.details.size: ${project.details.size}") assertThat(project.skills).hasSize(project.name.toInt()) println("project.skills.size: ${project.skills.size}") } println("----- findAllByIsActive 테스트 종료 -----") } }
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
테스트코드 실행중 오류와 경고에 관한 질문 입니다.
현재 강의는 ExperienceRepository코드를 테스트하는 코드인데 interface HttpInterfaceRepository : JpaRepository<HttpInterface, Long>{ fun countAllByCreatedDateTimeBetween(start: LocalDateTime, end: LocalDateTime): Long }제가 이런식으로 HttpInterfaceRepoistory에 사용자 정의 메서드이름을 잘못 설정했어서테스트 코드 실행중에 오류가 발생하여이런식으로 실행이 안되었습니다.HttpInterfaceRepository와 관려 없는 코드 같은데 왜 오류가 발생하는 건가요?그리고 저 오류를 발견해서 HttpInterfaceRepository 를 수정하고 실행을 하니 정상적으로 실행은 되었는데이 경고가 뜹니다 이건 어떤건가요?프로젝트 리포지토리 테스트가 계속 실패하는데 왜 그런건가요? https://drive.google.com/file/d/1s2JngsdGhN_iOUf6llkkcUwwISIuCTUp/view?usp=sharing구글 드라이브에 소스코드 압축해서 업로드 했습니다
-
해결됨Spring Boot를 활용하여 채팅 플랫폼 만들어보기
@Transactional(transactionManager = "createChatTransacationMansger") 질문 있습니다.
질문1: 강의에서 saveChatMessage() 메소드 진입시 @Transactional(transactionManager = "createChatTransacationMansger") 사용하는것을 말씀 해주셨는데요. 선생님께서 말씀해주신 강의 내용을 그대로 말씀드리자면 " 웹소켓 같은 경우에는 하나의 커넥션 즉 세션을 하나에 계속 공유하고 계속 사용 중이기 때문에 이 스톰프를 사용하는 웹소켓 통신 아니면 기본적인 웹소켓 통신에서도 이 트랜잭션에 대한 경계가 되게 명확하지가 않는 경우가 있습니다. " 즉 이 말씀은 따로 이렇게@Transactional public void saveChatMessage(Message msg) { chatRepository.save(chat); } @TransactionManager() 만 추가해서 관리 하면 문제가 생기고 @Transactional(transactionManager = "createChatTransacationMansger")이렇게 별도로 TransactionManager 를 추가해서 관리 해야 문제가 없다고 이해 하면 될까요??? 왜 TransactionManager 를 따로 만들어서 관리하는지 이해가 안가네요 ㅠ,ㅠ그리고 "웹소켓 같은 경우에는 하나의 커넥션 즉 세션을 하나에 계속 공유하고 계속 사용 중이기 때문에 이 스톰프를 사용하는 웹소켓 통신 아니면 기본적인 웹소켓 통신에서도 이 트랜잭션에 대한 경계가 되게 명확하지가 않는 경우가 있습니다"즉 이 말씀은 saveChatMessage 경우는 웹소켓 전용만 사용 할때만 이용하는 오퍼레이션 이기 때문에 다른 HTTP 통신 경우에 오는 FLOW 경우는 saveChatMessage() 메소드는 사용하지 마라 라는 의미로 @Transactional(transactionManager = "createChatTransacationMansger")이렇게 별도의 TransactionManager을 사용한 것인지 궁금 합니다. 질문2 선생님이 말씀해주신 내용을 그대로 말씀드리자면플러시는 기본적으로 JPA에서 다루고자 하는 트랜잭션이 담겨있어야 되는데 담겨있지 않았다는 에러가 발생하게 될 거예요 왜냐하면 제가 말씀드렸던 것처럼 웹소켓은 하나의 통신으로만 공유를 하기 때문에 경계가 명확하지 않아서 JPA 에서 일반적으로 트랜지액션을 잘 인식을 하지 못하고 잘 넣어주지를 못합니다 이렇게 트랜젝션을 선언하지 않으면 문제가 발생된다고 해주셨는데요. @Transactional public <S extends T> S save(S entity) { Assert.notNull(entity, "Entity must not be null"); if (this.entityInformation.isNew(entity)) { this.entityManager.persist(entity); return entity; } else { return this.entityManager.merge(entity); } }JPA save 메소드를 보면 이렇게 @Transaction 을 선언하기 때문에 굳이 @Transaction 을 선언하지 않아도 문제가 없지 않을까요??
-
해결됨Real MySQL 시즌 1 - Part 1
ep11) Prepared Statement에서 질문
안녕하세요 강사님Client Side PreparedStatement 는 어떻게 SQL Injection을 막을 수 있다는게? 에 set하기전에 application에서 체크해서 막는다는의미인가요?
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
@PostCunstructer 를 사용하는 이유가 뭔가요?
DataIntialize 클래스에서 메서드에 포스트 컨스트럭터를 사용하셨는데 어떤 기능인지 잘 이해하지 못했습니다.해당 클래스를 빈으로 등록하면서 같이 초기화가 이루어 지게 하는건 안되는건가요?
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
vscode 자동완성 확장 질문
안녕하세요! 강의 잘 듣고 있는 수강생 입니다!제로초님 강의를 보면 다음과 같은 코드가 있을 때const express = require('express'); const path = require('path'); const app = express(); app.get('/',(req,res)=>{ res.sendFile(path.join(__dirname,'index.html')); console.log('GET / '); })app에 대한 HTTP METHOD 를 지원하는 라우팅 함수 및 req, res 에서 사용할 수 있는 함수들에 대해 자동 완성 되는 부분을 봤는데요. (예:`app.get()`,`res.writeHead()` 등) vscode의 각종 extensions 들을 설치해보고 vscode 자체의 옵션도 찾아봤지만 도저히 제로초님 처럼 자동 완성 되지가 않네요ㅜㅜ제가 이클립스를 사용하다가 이번에 노드 공부해보려고 다른 IDE를 사용해서 그런지 자동완성이 되지 않는 부분이 매우 불편한데 혹시 강사님 개발 환경 공유 가능할까요?강의와는 상관이 없는 질문인 점 죄송합니다
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
스프링부트로 실제 쇼핑몰을 제작해보고싶은데요..
스프링부트로 실제 쇼핑몰을 제작해보고싶은데요 혹시 결제기능관련이나 쪽지관련기능 로직짜는거 추가로 보강즘 해주실수없나요? 파이썬이나 자바스크립트 백엔드 관련강의들보면 결제기능 탑재나 쪽지기능 구현등 강의가 더러 널려있는데 유독 스프링부트관련해서는 이런기능을 구현하는 강의가 없는것같습니다
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프1탄]
response.sendRedirect / forward
어떤건 sendRedirect를 쓰고 어떤건 forward를 썼던데 쓰는 기준이 정해져 있는건가요? 아니면 방식만 다를 뿐 아무거나 써도 상관없는건가요?
-
해결됨MFC Windows 프로그래밍 - 응용
수업자료
수업자료가 외워서 끝내는 네트워크 핵심이론인데, 맞나요?
-
해결됨MFC Windows 프로그래밍 - 응용
수업자료
수업자료가 '외워서 끝내는 네트워크 핵심이론-응용'인데 이거 맞나요?
-
해결됨Spring Boot를 활용하여 채팅 플랫폼 만들어보기
강의 들으면서 블로그에 올려도 될까요?
안녕하세요! 제목처럼 강의 내용 들으면서 블로그에 정리하려고 하는데 괜찮을까요? :)
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
환경변수 설정을 yml 아니라 properties로 해도 상관 없나요?
yml과 properties의 차이가 계층구조 표현의 차이만 있는거 같은데 properties로 적용해서 강의를 진행하여도 상관이 없나요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
homebrew로 mysql 설치시 오류
안녕하세요. homebrew를 이용해서 mysql을 설치하려고 했는데 다음과 같은 오류가 떠서 질문글 남깁니다. 혼자 고쳐보려고 해도 인터넷에 레퍼런스가 없네요 .. homebrew 삭제후 재설치도 해봤는데 해결되지 않습니다. 도와주세요.
-
미해결중고급 SQL과 실전 데이터 분석 101 문제 풀이
연습문제 4번 관련
강사님, 수업 자료랑 강의 내용과 상이한 부분이 있는 것 같아서 여쭤봅니다.11:50 부분에는 RANGE가 디폴트라고 말씀해주셨는데, 강의 자료에는 ROWS가 디폴트라고 적혀있어서요. 어떤게 맞는 것일까요?
-
미해결중고급 SQL과 실전 데이터 분석 101 문제 풀이
연습문제 37번 관련
37번 문제 관련 질문이 있습니다.저는 LEFT JOIN 에서 TIMESTAMPDIFF 말고 BETWEEN '2006-01-15' AND '2006-02-14' 을 활용했는데요, 두 개의 답이 다르게 나와서 어떤 것이 정확한 방법인지 헷갈려서 문의드립니다.제가 문제를 잘못 이해한 것일까요?
-
미해결중고급 SQL과 실전 데이터 분석 101 문제 풀이
연습문제 28번 관련
안녕하세요. 풀이중에 궁금한 것이 있어서 질문 납깁니다.연습문제 28번에 2가지 방식의 쿼리문을 설명해주셨는데요, 결과값이 각각 43 row, 42 row로 반환이 되어 다른 것 같습니다. 이럴 경우 두가지 방식 중에 어떤 것이 더 확실한 방법일까요?
-
해결됨MFC Windows 프로그래밍 - 응용
자료 다운로드 관련
안녕하세요 섹션1 (알고 있어야 하는 것들)에서 자료 다운로드가 안되는데 저만 그런건가요?? 확인 부탁 드립니다.