묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
깃액션을 이용한 CI&CD 자동배포시 appspec.yml was not found 에러 발생합니다.
학습과 관련 없는 질문이지만 ㅠㅠㅠ 아무리 찾아도 해결방법을 찾지 못해 올립니다. ci . yml 을 통해 ci 는 정상적으로 작동 하고 있습니다. 그리고 deploy.yml 작성하고 , 인텔리제이에서는 필요한 appspec.yml 과 실행관련 스크립트 폴더를 생성 하여 다 됐다고 생각되어 깃허브에 새로운 머지를 했는데 , 아래와 같은 에러가 발생합니다. aws 의 codedeploy에서 배포 로그를 확인 할 수 있다고 해서 들어가봤지만 배포이력자체도 남지 않아 로그확인은 불가 했습니다. ㅠㅠ 무엇이 문제 일까요... appspec.ymlversion: 0.0 os: linux files: - source: / destination: /home/ubuntu/app overwrite: yes permissions: - object: / pattern: "**" owner: ubuntu group: ubuntu hooks: AfterInstall: - location: scripts/stop.sh timeout: 60 runas: ubuntu ApplicationStart: - location: scripts/start.sh timeout: 60 runas: ubuntustart.sh#!/usr/bin/env bash PROJECT_ROOT="/home/ubuntu/app" JAR_FILE="$PROJECT_ROOT/blog-project-0.0.1-SNAPSHOT.jar" APP_LOG="$PROJECT_ROOT/application.log" ERROR_LOG="$PROJECT_ROOT/error.log" DEPLOY_LOG="$PROJECT_ROOT/deploy.log" TIME_NOW=$(date +%c) # build 파일 복사echo "$TIME_NOW > $JAR_FILE 파일 복사" >> $DEPLOY_LOG cp $PROJECT_ROOT/build/libs/*.jar $JAR_FILE # jar 파일 실행echo "$TIME_NOW > $JAR_FILE 파일 실행" >> $DEPLOY_LOG nohup java -jar $JAR_FILE > $APP_LOG 2> $ERROR_LOG & CURRENT_PID=$(pgrep -f $JAR_FILE) echo "$TIME_NOW > 실행된 프로세스 아이디 $CURRENT_PID 입니다." >> $DEPLOY_LOGstop.sh#!/usr/bin/env bash PROJECT_ROOT="/home/ubuntu/app" JAR_FILE="$PROJECT_ROOT/blod-project-0.0.1-SNAPSHOT.jar" DEPLOY_LOG="$PROJECT_ROOT/deploy.log" TIME_NOW=$(date +%c) # 현재 구동 중인 애플리케이션 pid 확인 CURRENT_PID=$(pgrep -f $JAR_FILE) # 프로세스가 켜져 있으면 종료if [ -z $CURRENT_PID ]; then echo "$TIME_NOW > 현재 실행중인 애플리케이션이 없습니다" >> $DEPLOY_LOG else echo "$TIME_NOW > 실행중인 $CURRENT_PID 애플리케이션 종료 " >> $DEPLOY_LOG kill -15 $CURRENT_PID fideploy.ymlname: Deploy to Amazon EC2 on: push: branches: - develop # 본인이 설정한 값을 여기서 채워넣습니다. # 리전, 버킷 이름, CodeDeploy 앱 이름, CodeDeploy 배포 그룹 이름 env: AWS_REGION: ap-northeast-2 S3_BUCKET_NAME: [S3 버킷이름 ] CODE_DEPLOY_APPLICATION_NAME: [코드디플로이 어플리케이션 이름 ] CODE_DEPLOY_DEPLOYMENT_GROUP_NAME: [코드디플로이 그룹이름 ] permissions: contents: read jobs: deploy: name: Deploy runs-on: ubuntu-latest environment: production steps: # (1) 기본 체크아웃 - name: Checkout uses: actions/checkout@v3 # (2) JDK 17 세팅 - name: Set up JDK 17 uses: actions/setup-java@v3 with: distribution: 'temurin' java-version: '17' - name: make application.yml run: | touch ./src/main/resources/application.yml echo "${{ secrets.APPLICATION }}" > ./src/main/resources/application.yml shell: bash # (3) Gradle build (Test 제외) - name: Build with Gradle uses: gradle/gradle-build-action@0d13054264b0bb894ded474f08ebb30921341cee with: arguments: clean build -x test # (4) AWS 인증 (IAM 사용자 Access Key, Secret Key 활용) - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ env.AWS_REGION }} # (5) 빌드 결과물을 S3 버킷에 업로드 - name: Upload to AWS S3 run: | aws deploy push \ --application-name ${{ env.CODE_DEPLOY_APPLICATION_NAME }} \ --ignore-hidden-files \ --s3-location s3://$S3_BUCKET_NAME/$GITHUB_SHA.zip \ --source . # (6) S3 버킷에 있는 파일을 대상으로 CodeDeploy 실행 - name: Deploy to AWS EC2 from S3 run: | aws deploy create-deployment \ --application-name ${{ env.CODE_DEPLOY_APPLICATION_NAME }} \ --deployment-config-name CodeDeployDefault.AllAtOnce \ --deployment-group-name ${{ env.CODE_DEPLOY_DEPLOYMENT_GROUP_NAME }} \ --s3-location bucket=$S3_BUCKET_NAME,key=$GITHUB_SHA.zip,bundleType=zip
-
미해결
r studio shiny 과정 중 해당 오류를 알려주실 분이 있으실까요?
shiny 앱으로 이러한 화면을 구현 했는데토글을 클릭하면 대시보드의 내용이 사라지지 않고 지금처럼 깨집니다.제가 구현하고 싶은 화면은 토글을 클릭하면 위 화면처럼 사이드바가 사라지는걸 구현하고 싶습니다. (내용은 다른 내용이라 무시해도 됩니다.) 코드 내용은 아래와 같습니다.# 라이브러리 library(shiny);library(shinydashboard);library(tidyverse) # install.packages("shinydashboardPlus") library(shinydashboardPlus);library(dplyr);library(tidyr);library(ggplot2);library(plotly);library(readxl);library(plyr);library(stringr) # 전처리 데이터 불러오기 load("hbp_pop_pro.RData") # setwd("C:/guro/guro_01/SpyderBD_01/data/guro_01/shiny01/data/shiny_pop") # ------------------------------------------------------------- # 인터랙티브 시각화 / 다시 확인 # 1 ggplotly(hbp_pop_ggplot) # 2 ggplotly(hbp_pop_ggplot_male) ggplotly(hbp_pop_ggplot_female) # 3 hbp_sal_ggplot #---------------------------------------------------------- #---------------------------------------------------------- #---------------------------------------------------------- #---------------------------------------------------------- #---------------------------------------------------------- #---------------------------------------------------------- # 1. 샤이니 앱 시작 ui <- dashboardPage( dashboardHeader( title = "4조 실버" )#대시보드 헤더 마지막 , #---------------------------------------------------------- # 대시보드바 dashboardSidebar( tags$head(tags$style(HTML('.shiny-server-account { display: none; }'))), selectInput("region", HTML("2018-2021년도 <br> 만성 질환 카테고리"), choices = c("고혈압", "치매", "당뇨")), tags$head(tags$style(HTML('.shiny-server-account { display: none; }'))), selectInput("sex", HTML("세부 카테고리"), choices = c("성별/연령", "지역")), conditionalPanel( condition = "input.region == '고혈압' & input.sex == '성별/연령'", checkboxInput("hbp_checkbox1", "연도에 따른 내원일수 추이(남성)", value = FALSE), checkboxInput("hbp_checkbox2", "연도에 따른 내원일수 추이(여성)", value = FALSE), checkboxInput("hbp_checkbox3", "연도별 요양급여 비용총액 추이", value = FALSE), checkboxInput("hbp_checkbox4", "2018년~2021년 요양급여 비용총액 비율", value = FALSE), checkboxInput("hbp_checkbox5", "요약통계량", value = FALSE), ) #고혈압 체크박스 조건문 (고혈압/성별&연령) , conditionalPanel( condition = "input.region == '치매'", checkboxInput("dem_checkbox1", "연도에 따른 내원일수 추이(남성)", value = FALSE), checkboxInput("dem_checkbox2", "연도에 따른 내원일수 추이(여성)", value = FALSE), checkboxInput("dem_checkbox3", "연도별 요양급여 비용총액 추이", value = FALSE), checkboxInput("dem_checkbox4", "2018년~2021년 요양급여 비용총액 비율", value = FALSE), checkboxInput("dem_checkbox5", "요약통계량", value = FALSE) ) #치매 체크박스 조건문 , conditionalPanel( condition = "input.region == '당뇨'", checkboxInput("dm_checkbox1", "연도에 따른 내원일수 추이(남성)", value = FALSE), checkboxInput("dm_checkbox2", "연도에 따른 내원일수 추이(여성)", value = FALSE), checkboxInput("dm_checkbox3", "연도별 요양급여 비용총액 추이", value = FALSE), checkboxInput("dm_checkbox4", "2018년~2021년의 요양급여 비용총액 비율", value = FALSE), checkboxInput("dm_checkbox5", "요약통계량", value = FALSE), ) #당뇨 체크박스 조건문 )# 대시보드사이드바 마지막 , dashboardBody( h3(""), uiOutput("info"), # div(class = "bottom-div", "Chicken123") # Add this output element verbatimTextOutput("summary_stats") ) #대시보드바디 마지막 )#대시보드페이지 마지막 #---------------------------------------------------------- # 서버 server <- function(input, output, session) { output$info <- renderUI({ if(input$region == "고혈압" & input$sex == "성별/연령" ) { h4("North America") p("Information about North America") # 고혈압 체크박스 인풋 입력값 checkboxes_selected <- c(input$hbp_checkbox1, input$hbp_checkbox2,input$hbp_checkbox3,input$hbp_checkbox4,input$hbp_checkbox5) # 체크박스 리스트 plots_list <- list() if (checkboxes_selected[1]) { plots_list[[1]] <- ggplotly(hbp_pop_ggplot_male) } # 고혈압 체크박스 조건문 1 if (checkboxes_selected[2]) { plots_list[[2]] <- ggplotly(hbp_pop_ggplot_female) } # 고혈압 체크박스 조건문 2 if (checkboxes_selected[3]) { plots_list[[3]] <- ggplotly(hbp_pop_ggplot) } # 고혈압 체크박스 조건문 3 if (checkboxes_selected[4]) { plots_list[[4]] <- hbp_sal_ggplot } # 고혈압 체크박스 조건문 4 if (input$hbp_checkbox5) { output_list <- list(renderPrint({ HTML(paste0(" *키워드 정의 환자수 : patient 내원일수 : hospital 청구건수 : claims 요양급여비용총액 : salary 보험자부담금 : Insurance * 해당 데이터는 2018년~2021년의 성별,연령의 총 요약통계량을 산출한 결과임. * 주목해야 할 정보는 patient, hospital, claims, salary, Insurance의 각각 최솟값, 중앙값, 최댓값임")) }), # 제목 타이틀 renderPrint({ hbp_pop_summary }))# 고혈압 요약통계량 plots_list[[5]] <- output_list } # 고혈압 체크박스 조건문 5 (요약통계) #리턴 반환문 do.call(tagList, plots_list) } # 고혈압 조건문 else if(input$region == "치매") { h4("Europe") p("Information about Europe") } else if(input$region == "당뇨") { h4("Asia") p("Information about Asia") } }#조건문의 마지막 ) } #---------------------------------------------------------- # 샤이니, 서버 실행 shinyApp(ui = ui, server = server)
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
넷플릭스 table cell 관련해서 질문이 있습니다.
안녕하세요. 넷플릭스 프로젝트를 따라하면서 제가 수강하면서 뭔가를 놓친건지 막혔었다가 해결한 부분이 있습니다. 테이블 섹션마다 영화, 팟캐스트 등의 이미지를 보여주는 콜렉션뷰의 높이는 UICollectionViewDelegateFlowLayout로 sizeForItemAt 메소드로 설정해줬는데 테이블뷰의 row 높이를 설정해주지 않아서 콜렉션 셀의 높이와 너비를 지정했음에도 사진처럼 적용되지 않는 현상이 있었습니다.해결은 테이블뷰 델리게이트로 heightForRowAt으로 높이값을 콜렉션 셀의 높이값보다 크게 지정해줘서 해결은 됐습니다. 해결은 했는데 강의를 수강하면서 테이블뷰 row의 높이값을 설정하는 부분을 못본 것 같은데 제가 뭔가 놓친건지 질문드립니다.P.S. 좋은 강의 감사합니다 🙏
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
파이어베이스 vs AWS
배포에서 대표적인 클라우드 서비스로 AWS, GCP, Azure 를 알려주셨는데요혹시 파이어베이스도 같은 묶음으로 봐도 될까요?? 파이어베이스는 AWS처럼 사용할 수 없나요??파이어베이스는 DB, 서버 용으로만 배우는게 좋을까요??
-
미해결
@Builder에 대해서 질문이 있습니다.
스프링 부트에서 DTO를 만들 때 @setter을 빼고 @Builder로 하는게 좋다고 들었습니다.근데 책이랑 구글을 찾아보다 보니 두 가지의 방법으로 하는 것을 봤는데 무슨 차이인지 무엇이 더 좋은 방법인지를 모르겠어서 질문드립니다. 생성자 위에 @Builder를 사용하는 방법@Getter //Getter 생성 public class LombokPerson { private String name; private String grade; private int age; @Builder // 생성자 만든 후 위에 @Build 어노테이션 적용 public LombokPerson(String name, String grade, int age) { this.name = name; this.grade = grade; this.age = age; } 클래스 위에 @Builder를 사용하면서 @Setter도 사용하는 방법@ToString @Setter @Getter @Builder @NoArgsConstructor @AllArgsConstructor public class UserDTO { private String token; private String userName; private String password; private String id; } 2번째의 방법이 책에서 나온 방법인데 @Setter이 바뀔 수도 있어서 @Builder로 생성자로 받는거로 알고 있는데 여기서는 @Setter과 @Builder을 같이 쓰더라구여. 이거에 대해서 알려주세요 ㅠㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
테스트코드 소스입니다.
@AfterEach를 주석처리해서 @Test가 끝날 때 마다 초기화를 안하도록 코드를 바꾸고 20번 가량 테스트를 돌려봤는데 왜 실패할 때가 없는 건가요 ?? 영한님 말대로 테스트 순서는 보장하지 않기 때문에 save() 메서드가 먼저 호출되고 findAll 메서드가 호출되면 result.size()는 3이 되기 때문에 실패하는 테스트 케이스가 있어야하지 않나요 ?package hello.servlet.domain; import static org.assertj.core.api.Assertions.assertThat; import java.util.List; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; class MemberRepositoryTest { MemberRepository memberRepository = MemberRepository.getInstance(); @AfterEach void afterEach() { // memberRepository.clearStore(); } @Test void save() { Member member = new Member("hello", 20); Member savedMember = memberRepository.save(member); Member findMember = memberRepository.findById(savedMember.getId()); assertThat(findMember).isEqualTo(savedMember); } @Test void findAll() { Member member1 = new Member("member1", 20); Member member2 = new Member("member2", 30); memberRepository.save(member1); memberRepository.save(member2); List<Member> all = memberRepository.findAll(); assertThat(all.size()).isEqualTo(2); assertThat(all).contains(member1, member2); } }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
오류 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강사님 test 부분에서 계속 오류가 나네요...
-
미해결
Could not find javax.xml.bind:jsxb-api:.
java11, springboot2.7.1로 프로젝트 진행했던 프로젝트를 열어 실행하니 에러가 발생합니다.해결하지 못하여 질문드립니다!발생에러11:46:16 AM: Executing ':RandomApplication.main()'... > Task :compileJava FAILED Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. See https://docs.gradle.org/7.4.1/userguide/command_line_interface.html#sec:command_line_warnings 1 actionable task: 1 executed FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > Could not resolve all files for configuration ':compileClasspath'. > Could not find javax.xml.bind:jsxb-api:. Required by: project : * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 652ms 11:46:16 AM: Execution finished ':RandomApplication.main()'.Execution failed for task ':compileJava'. > Could not resolve all files for configuration ':compileClasspath'. > Could not find javax.xml.bind:jsxb-api:. Required by: project : Possible solution: - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html시도java JDK 버전 확인, 빌드 자동 실행 설정 등.. 구글링해서 찾아봤으나 해결하지 못했습니다ㅠㅠ검색해보면 jaxb-api:. 를 기준으로 나오는데, 제 에러는 jsxb-api 입니다 이 둘의 차이는 무엇인가요?
-
미해결실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지
강의 자료 파일은 없나요?
강의 자료 파일은 없나요?
-
미해결[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]
url 접속 실패
* Running on http://127.0.0.1:8080 * Running on http://192.168.100.29:8080 위와 같이 한 번 실행 시 url 주소가 두가지가 나오게 되고 둘 다 404에러로 사이트를 찾을 수 없다고 나옵니다
-
해결됨시스템엔지니어가 알려주는 리눅스 실전편 Bash Shell Script
실습환경
전에 질문드린 사진입니다 . 이렇게 실습환경을 구성하고 싶습니다!
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
질문사항
맛비님 안녕하세요 ! 궁금사항이 생겨 글 남기게 되었습니다. NVIDIA의 GPU 같은 경우 '쿠다'라는 소프트웨어 플랫폼을 제가 이용해봤습니다. 수업시간에 설명해주신 inference를 위한 NPU 소프트웨어 플랫폼도 학생이 무료로 이용할 수 있는게 있을까요 ?MNIST 모델에 대해 설명해주실때 0~9까지 표현하기 위해 one-hot label을 10bit를 사용하셨는데, 4 bit를 사용해도 0~9가지 다 표현 가능하지 않나요 ?
-
미해결실전! Querydsl
querydsl bulk연산 수행시 join조건
안녕하세요! Querydsl강의를 들으며 직접개발을해보며 적용해보고 있습니다!근데 예제에 나와있지 않고 궁금증이 해소되지 않아 질문 남기게 되었습니다.bulk연산 수행시 join 조건을 사용할 수 없나요?member에서 그 전에 활동한 내역이 있는 사람이면, haveBeenActive값을 모두 true로 만들고 싶습니다..(member의 email정보는 unique해서 식별자로 같은 사람인지 인식하게 했습니다)2023-03-24 07:45:35.099 ERROR 33353 --- [nio-8080-exec-1] o.s.m.i.c.GlobalExceptionHandler : [Unknown Error] : null이러한 오류가 납니다..bulk연산 수행할때 join을 사용할 수 없나요?계속해서 골머리를 앓다가 질문 남깁니다..감사합니다!public void 함수(Integer activityNum) { val member = QMember.member; val sub_member = new QMember("sub"); // 자기 자신과 join queryFactory.update(member) .set(member.haveBeenActive, true) .where(member.activity.eq(activityNum) .and(member.id.eq( JPAExpressions.select(member.id) .from(member) .join(sub_member) .where(member.activity.between(1,activityNum - 1) .and(member.email.eq(sub_member.email))) .fetchOne() ))).execute(); }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
"org.springframework.dao.InvalidDataAccessApiUsageException: Table name is required" 에러가 발생합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의 듣다가 MemberServiceIntegrationTest를 실행하면 아래 에러가 발생하고 있어서요. 어떻게 해결하면 좋을까요?? MemberServiceIntegrationTest 내용입니다. package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional; import static org.junit.jupiter.api.Assertions.assertThrows; @SpringBootTest @Transactional class MemberServiceIntegrationTest { @Autowired MemberService memberService; /*MemberService memberService = new MemberService(); MemoryMemberRepository memoryMemberRepository = new MemoryMemberRepository();*/ @Autowired MemberRepository memoryMemberRepository; //각 테스트당 데이터를 삭제하려고 저장된 데이터를 날리기 위해 MemoryMemberRepository를 생성하고 아래 afterEach로 데이터를 날린다. @Test void 회원가입() { //given 데이터를 기반으로 검증을 한다. Member member = new Member(); member.setName("spring"); //when 이걸 검증하는구나 Long saveId = memberService.join(member); // join에 member을 넣으면 저장한 saveId가 튀어 나오게 //then 여기가 검증하는 곳 Member findMember = memberService.findOne(saveId).get(); // 저장된 member를 찾아서 findMember에 저장하고 Assertions.assertThat(member.getName()).isEqualTo(findMember.getName()); // member에 저장된 것과 findMember에 저장된 것이 같은지 검증 } @Test public void 중복_회원_예외() { //given Member member = new Member(); member.setName("spring"); Member member1 = new Member(); member1.setName("spring"); //when memberService.join(member); IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member1));// 아래처럼 try, catch를 사용하면 좋지만 번거롭다. asserThrows를 사용하면 쉽게 사용 가능하다. //then Assertions.assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다. ");// 메시지를 검증하는 것 /*memberService.join(member); try{ memberService.join(member1); fail(); } catch (IllegalStateException e){ Assertions.assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다. "); } */ //then } @Test void findMembers() { } @Test void findOne() { } } Table name is required org.springframework.dao.InvalidDataAccessApiUsageException: Table name is required at app//org.springframework.jdbc.core.simple.AbstractJdbcInsert.compile(AbstractJdbcInsert.java:253) at app//org.springframework.jdbc.core.simple.AbstractJdbcInsert.checkCompiled(AbstractJdbcInsert.java:309) at app//org.springframework.jdbc.core.simple.AbstractJdbcInsert.doExecuteAndReturnKey(AbstractJdbcInsert.java:380) at app//org.springframework.jdbc.core.simple.SimpleJdbcInsert.executeAndReturnKey(SimpleJdbcInsert.java:132) at app//hello.hellospring.repository.JdbcTemplateMemberRepository.save(JdbcTemplateMemberRepository.java:35) at app//hello.hellospring.service.MemberService.join(MemberService.java:36) at app//hello.hellospring.service.MemberServiceIntegrationTest.회원가입(MemberServiceIntegrationTest.java:35) at java.base@11.0.18/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base@11.0.18/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base@11.0.18/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base@11.0.18/java.lang.reflect.Method.invoke(Method.java:566) at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688) at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) at app//org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) at app//org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) at app//org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) at app//org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210) at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206) at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131) at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base@11.0.18/java.util.ArrayList.forEach(ArrayList.java:1541) at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base@11.0.18/java.util.ArrayList.forEach(ArrayList.java:1541) at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32) at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75) at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62) at java.base@11.0.18/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base@11.0.18/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base@11.0.18/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base@11.0.18/java.lang.reflect.Method.invoke(Method.java:566) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) at com.sun.proxy.$Proxy2.stop(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65) at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
-
미해결
[나프1탄] 13강 자동으로 만든 웹프로젝트 브라우저 오류
박매일 선생님 강의 잘 듣고 있습니다.강의 들으면서 잘 따라하고 있었는데,나프1탄의 13_Dynamic Web Project만들기에서실습한 내용이 브라우저 실행시 오류가 발생합니다.기존 수동으로 만든 웹프로젝트는 동일한 환경에서 반영이 됩니다.자동으로 만든 웹프로젝트 시작하자 마자 반영이 안되고 있습니다.화면을 캡처했습니다.Context 등록도 잘 된 것 같은데, 뭐가 문제일까요?강의는 eGovFrame-3.9.0으로 진행되는데,저는 eGovFrame-4.0.0에서 하고 있습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-C 2468번 문제 왜 틀렸는지 모르겠어요
안녕하세요 강사님, 2468번 안전 영역 문제를 풀었고 예제도 다 맞는데 제출하면 틀렸다고 뜹니다. 풀이 강의도 들었는데 어디에서 틀렸는지 모르겠어요.#include<bits/stdc++.h> using namespace std; int N,h,ret,H,maxx; int a[100][100],visited[100][100]; int dy[] = {-1,0,1,0}; int dx[] = {0,1,0,-1}; void DFS(int y, int x) { visited[y][x] = 1; for(int i=0; i<4; i++) { int ny = y + dy[i]; int nx = x + dx[i]; if(ny<0|| nx<0|| ny>=N|| nx>=N) continue; if(!visited[ny][nx] && a[ny][nx]>H) DFS(ny,nx); } return; } int main() { cin>>N; for(int i=0; i<N; i++) { for(int j=0; j<N; j++) { cin>>h; a[i][j]=h; } } for(H=0; H<=N; H++) { fill(&visited[0][0], &visited[0][0]+100*100, 0); ret = 0; for(int i=0; i<N; i++) { for(int j=0; j<N; j++) { if(a[i][j]>H && !visited[i][j]) { DFS(i,j); ret++; } } } if(maxx < ret) maxx = ret; } cout<<maxx; }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberServiceTest 도중 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]테스트 하려고 하면 자꾸 이렇게 뜨네요..ㅠpackage jpabook.jpashop.service; import jpabook.jpashop.domain.Member; import jpabook.jpashop.repository.MemberRepository; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import static org.junit.jupiter.api.Assertions.*; @RunWith(SpringRunner.class) @SpringBootTest @Transactional class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test public void 회원가입() throws Exception { //given Member member = new Member(); member.setName("kim"); //when Long saveId = memberService.join(member); //then assertEquals(member, memberRepository.findOne(saveId)); } @Test public void 중복_회원_예제() throws Exception{ //given //when //then } }package jpabook.jpashop.domain; import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; import java.util.ArrayList; import java.util.List; @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String name; @Embedded private Address address; @OneToMany(mappedBy = "member") private List<Order> orders = new ArrayList<>(); }package jpabook.jpashop.service; import jpabook.jpashop.domain.Member; import jpabook.jpashop.repository.MemberRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service @Transactional(readOnly = true) public class MemberService { @Autowired private MemberRepository memberRepository; //회원 가입 @Transactional public Long join(Member member){ validateDuplicateMember(member); memberRepository.save(member); return member.getId(); } private void validateDuplicateMember(Member member) { //EXCEPTION List<Member> findMembers = memberRepository.findByName(member.getName()); if (!findMembers.isEmpty()){ throw new IllegalStateException("이미 존재하는 회원입니다."); } } //회원 전체 조회 public List<Member> findMembers() { return memberRepository.findAll(); } public Member findOne(Long memberId){ return memberRepository.findOne(memberId); } } 아 수정해서 올렸습니다!/Users/changha/Documents/Infrun/jpashop/src/main/java/jpabook/jpashop/service/MemberService.java:24: error: cannot find symbolreturn member.getId();^symbol: method getId()location: variable member of type Member
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
antd로 회원가입 폼을 만들때 질문입니다
<Form.Item label="아이디" name="username" rules={[{ required: true, message: "Please input your username!" }]} //rules을 통해 유효성검사로직이 들어가 잇다 //hasFeedback //username의 끝 부분에 체크표시? {...fieldErrors.username} > <Input />위의 코드에서 {...fieldErrors.username} 은 spread한 것을 하나의 오브젝트로 {validateStatus: "error", help: "User with this username already exists."} 이렇게 구성되어 있는걸로 이해가 되는데 form.item에서는 각 항목마다 쉼표도 없이 그냥 띄어쓰기로 속성을 정의하는데 {...fieldErrors.username}이렇게 표현한 것이 어떻게 바로 속성으로 적용되는지 궁금해서 질문드립니다!
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
백엔드가 html을 타임리프를 사용해여 프론트엔드에게 보낸다면 프론트는 어떤 식으로 개발을 진행하는지 궁금합니다.
[질문 내용]안녕하세요 강의를 듣다가 문뜩 궁금한 부분이 있어 질문글을 작성합니다. 앞쪽 강의에서 이제 백엔드가 html을 동적으로 만들어서 프론트에게 페이지를 전달한다 라고 하셨습니다 그리고 이때 html을 동적으로 만들기 위해 타임리프를 주로 사용한다고 하셨습니다. 그러면 만약에 프론트와 백엔드가 협업을 하고 백엔드가 타임리프를 사용해서 html을 동적으로 만든 후 프론트에게 전송을 하면 프론트는 할 일이 무엇인가요? 백엔드가 타임리프를 사용해여 html을 만든다면 프론트는 어떤 역할을 수행해야 하는지 궁금합니다.감사합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
docker 생성 후 gateway userservice 연결 시 에러
게이트 웨이를 도커에만 올리면 에러가 나옵니다 500 Server Error for HTTP POST "/user-service/login"io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: /127.0.0.1:8889 유레카에서 유저 서비스 클릭 시 : /127.0.0.1:8889요렇게 나오는데 http://localhost:8888/user-service/default에서는{token.expireDate: 20002666,order_service.url: "http://order-service/order-service/%s/orders",order_service.exception.user_empty: "user's ord exist3333",user_service.url: "http://user-service/user",user_service.exception.user_empty: "user_Empty",token.secret: "1234"}gateway.host: "172.18.0.6",token.expireDate: 20002666,이렇게 나옵니다 http://localhost:8000/user-service/default이건 에러가 나구요도커의 네트워크는 추가 했구요"Containers": { "11a12dd45aaa3274226b1b462e1997b50e9b7ed61b405595c0c3b89393d6e036": { "Name": "rabbitmq", "EndpointID": "3425a23e5c021d2bcc307bed1d9b4ac03c17b92d4828f8b633469d8bbe8df8ac", "MacAddress": "02:42:ac:12:00:04", "IPv4Address": "172.18.0.4/16", "IPv6Address": "" }, "28da3474585596f6a3a435e48cfc9084e7d397fafaea751537ac7c82ac81bfd1": { "Name": "user-service1", "EndpointID": "543022aef70070d571f9d193151af692e59c5bc752feb15b5a0d75d23338ff34", "MacAddress": "02:42:ac:12:00:03", "IPv4Address": "172.18.0.3/16", }, "47dbfe92f425d933ca6e72018eb11b95f0cba48434be9b28f571570787db0d02": { "Name": "gateway-service", "EndpointID": "f3cfa36a9b73a2a925d62f0d8045d51dd8bdb4afe3b2926cae6a4997bac92114", "MacAddress": "02:42:ac:12:00:06", "IPv4Address": "172.18.0.6/16", "IPv6Address": "" }, "b4910d66fee36364691710a189c79f47c2a7fac7675166bbb102b6dfba83ef80": { "Name": "eureka", "EndpointID": "23d981be13ce1a1e7f1f4b85ea61553a13d73dfcf5af6039e6befa68d0cea497", "MacAddress": "02:42:ac:12:00:02", "IPv4Address": "172.18.0.2/16", "IPv6Address": "" }, "e5326aa441bdcf8133c66384251212b14d1d0a452291a462a667de21e3f23c6c": { "Name": "config", "EndpointID": "5f8de35288b1d51927f840e050203671ff0c880b0b8f39c2dd614055c49306bc", "MacAddress": "02:42:ac:12:00:05", "IPv4Address": "172.18.0.5/16", "IPv6Address": "" } 어디가 문제일까요?