176만명의 커뮤니티!! 함께 토론해봐요.
미해결
[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
안녕하세요. 강의 잘 보고 있습니다. 아직 답변 달아주시는지 모르겠지만 아무리 구글링해도 모르겠어서 혹시몰라 질문 남깁니다. 이전까지는 implement members하면 세 개 함수가 잘 불러와졌는데 갑자기 class rvAdapters()에서 implement하면 onCreateViewHolder이랑 onBindViewHolder이 실행되지 않습니다. error type: Unresolved type for rvAdapters.ViewHolder라는 문구가 보이는데 무슨 뜻일지..ㅠ 여기서 막혀서 진행이 안되네요..
윤희상
2022-09-26T10:31:11.121Z
댓글 3
좋아요 0
조회수 347
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
게시판을 검색해보니 H2를 찾지 못해서 나오는 오류라고 하는데 xml에 소스 추가했고 jpasho.mv .db도 만들어져 있습니다 파일은 블로그에 올려두었습니다.
2022-09-26T10:16:11.394Z
댓글 1
좋아요 0
조회수 964
미해결
[리뉴얼] React로 NodeBird SNS 만들기
이게 뭔가요...ㅠ 첨보는건데 js파일 분할하면서 꼬인건지 설치가 잘못된건지 모르겠어요 PostCardContent.js 파일에 postData?.split ~ 하면 아래 에러는 없어지는데 위에 오류 뜹니다 reducers/index.js import {HYDRATE} from 'next-redux-wrapper'; import {combineReducers} from 'redux'; import user from './user'; import post from './post'; // (이전상태, 액션) => 다음상태 const rootReducer = combineReducers({ index: (state = {}, action) => { switch (action.type) { case HYDRATE: console.log('HYDRATE', action); return {...state, ...action.payload}; default: return state; } }, user, post }); export default rootReducer; reducers/post.js import shortId from 'shortid' import produce from 'immer'; import faker from 'faker'; export const initialState = { mainPosts: [{ id: 1, User: { id: 1, nickname: 'z', }, content: '첫 번째 게시글 #해시태그 #익스프레스', Images: [{ id: shortId.generate(), src: 'https://bookthumb-phinf.pstatic.net/cover/137/995/13799585.jpg?udate=20180726', }, { id: shortId.generate(), src: 'https://gimg.gilbut.co.kr/book/BN001998/rn_view_BN001998.jpg', }, { id: shortId.generate(), src: 'https://gimg.gilbut.co.kr/book/BN001998/rn_view_BN001998.jpg', }], Comments: [{ id: shortId.generate(), User: { id: shortId.generate(), nickname: 'nero', }, content: '우와 개정판이 나왔군요~', }, { id: shortId.generate(), User: { id: shortId.generate(), nickname: 'hero', }, content: '얼른 사고싶어요~', }], }], imagePaths: [], addPostLoading: false, addPostDone: false, addPostError: null, removePostLoading: false, removePostDone: false, removePostError: null, addCommentLoading: false, addCommentDone: false, addCommentError: null, }; initialState.mainPosts = initialState.mainPosts.concat( Array(20).fill().map(() => ({ id: shortId.generate(), User: { id: shortId.generate(), nickname: faker.name.findName(), }, Content: faker.lorem.paragraph, Images: [{ src: faker.image.imageUrl(), }], Comments: [{ User: { id: shortId.generate(), nickname: faker.name.findName(), }, content: faker.lorem.sentence(), }], })), ); export const ADD_POST_REQUEST = 'ADD_POSTS_REQUEST'; export const ADD_POST_SUCCESS = 'ADD_POSTS_SUCCESS'; export const ADD_POST_FAILURE = 'ADD_POSTS_FAILURE'; export const REMOVE_POST_REQUEST = 'REMOVE_POST_REQUEST'; export const REMOVE_POST_SUCCESS = 'REMOVE_POST_SUCCESS'; export const REMOVE_POST_FAILURE = 'REMOVE_POST_FAILURE'; export const ADD_COMMENT_REQUEST = 'ADD_COMMENT_REQUEST'; export const ADD_COMMENT_SUCCESS = 'ADD_COMMENT_SUCCESS'; export const ADD_COMMENT_FAILURE = 'ADD_COMMENT_FAILURE'; export const addPost = (data) => ({ type: ADD_POST_REQUEST, data }); export const addComment = (data) => ({ type: ADD_COMMENT_REQUEST, data }); const dummyPost = (data) => ({ id: data.id, content: data.content, User: { id: 1, nickname: 'Z0', }, Images: [], Comments: [], }); const dummyComment = (data) => ({ id: shortId.generate(), content: data, User: { id: 1, nickname: 'Z1', }, }); // 이전 상태를 액션을 통해 다음 상태로 만들어내는 함수(불변성은 지키면서) const reducer = (state = initialState, action) => produce(state, (draft) => { switch (action.type) { case ADD_POST_REQUEST: draft.addPostLoading = true; draft.addPostDone = false; draft.addPostError = null; break; case ADD_POST_SUCCESS: draft.addPostLoading = false; draft.addPostDone = true; draft.mainPosts = (dummyPost(action.data)); break; case ADD_POST_FAILURE: draft.addPostLoading = true; draft.addPostError = action.error; break; case REMOVE_POST_REQUEST: draft.removePostLoading = true; draft.removePostDone = false; draft.removePostError = null; break; case REMOVE_POST_SUCCESS: draft.removePostLoading = false; draft.removePostDone = true; draft.mainPosts = state.mainPosts.filter((v) => v.id !== action.data); break; case REMOVE_POST_FAILURE: draft.removePostLoading = false; draft.removePostError = action.error; break; case ADD_COMMENT_REQUEST: draft.addCommentLoading = true; draft.addCommentDone = false; draft.addCommentError = null; break; case ADD_COMMENT_SUCCESS: { const post = draft.mainPosts.find((v) => v.id === action.data.postId); post.Comments.unshift(dummyComment(action.data.content)); draft.addCommentLoading = false; draft.addCommentDone = true; break; // const postIndex = state.mainPosts.findIndex((v) => v.id === action.data.postId); // const post = {...state.mainPosts[postIndex]}; // post.Comments = [dummyComment(action.data.content), ...post.Comments]; // const mainPosts = [...state.mainPosts]; // mainPosts[postIndex] = post; // return { // ...state, // mainPosts, // addCommentLoading: false, // addCommentDone: true // }; } case ADD_COMMENT_FAILURE: draft.addCommentLoading = false; draft.addCommentError = action.error; break; default: break; } }); export default reducer; reducers/user.js import produce from 'immer'; export const initialState = { logInLoading: false, // 로그인 시도중 logInDone: false, logInError: null, logOutLoading: false, // 로그아웃 시도중 logOutDone: false, logOutError: null, signUpLoading: false, // 회원가입 시도중 signUpDone: false, signUpError: false, changeNicknameLoading: false, // 닉네임 변경 시도중 changeNicknameDone: false, changeNicknameError: false, me: null, signUpData: {}, loginData: {} }; export const LOG_IN_REQUEST = 'LOG_IN_REQUEST'; export const LOG_IN_SUCCESS = 'LOG_IN_SUCCESS'; export const LOG_IN_FAILURE = 'LOG_IN_FAILURE'; export const LOG_OUT_REQUEST = 'LOG_OUT_REQUEST'; export const LOG_OUT_SUCCESS = 'LOG_OUT_SUCCESS'; export const LOG_OUT_FAILURE = 'LOG_OUT_FAILURE'; export const SIGN_UP_REQUEST = 'SIGN_UP_REQUEST'; export const SIGN_UP_SUCCESS = 'SIGN_UP_SUCCESS'; export const SIGN_UP_FAILURE = 'SIGN_UP_FAILURE'; export const CHANGE_NICKNAME_REQUEST = 'CHANGE_NICKNAME_REQUEST'; export const CHANGE_NICKNAME_SUCCESS = 'CHANGE_NICKNAME_SUCCESS'; export const CHANGE_NICKNAME_FAILURE = 'CHANGE_NICKNAME_FAILURE'; export const FOLLOW_REQUEST = 'FOLLOW_REQUEST'; export const FOLLOW_SUCCESS = 'FOLLOW_SUCCESS'; export const FOLLOW_FAILURE = 'FOLLOW_FAILURE'; export const UNFOLLOW_REQUEST = 'UNFOLLOW_REQUEST'; export const UNFOLLOW_SUCCESS = 'UNFOLLOW_SUCCESS'; export const UNFOLLOW_FAILURE = 'UNFOLLOW_FAILURE'; export const ADD_POST_TO_ME = 'ADD_POST_TO_ME'; export const REMOVE_POST_OF_ME = 'REMOVE_POST_OF_ME'; const dummyUser = (data) => ({ ...data, nickname: 'zo', id: 1, Posts: [{id: 1}], Followings: [{nickname: 'Boo'}, {nickname: 'B'}, {nickname: 'C'}], Followers: [{nickname: 'ZZ'}, {nickname: 'BB'}, {nickname: 'CC'}] }); export const loginRequestAction = (data) => { return { type: LOG_IN_REQUEST, data, } } export const logoutRequestAction = () => { return { type: LOG_OUT_REQUEST, } } const reducer = (state = initialState, action) => produce(state, (draft) => { switch (action.type) { case LOG_IN_REQUEST: draft.logInLoading = true; draft.logInError = null; draft.logInDone = false; break; case LOG_IN_SUCCESS: draft.logInLoading = false; draft.me = dummyUser(action.data); draft.logInDone = true; break; case LOG_IN_FAILURE: draft.logInLoading = false; draft.logInError = action.error; break; case LOG_OUT_REQUEST: draft.logOutLoading = true; draft.logOutError = null; draft.logOutDone = false; break; case LOG_OUT_SUCCESS: draft.logOutLoading = false; draft.logOutDone = true; draft.me = null; break; case LOG_OUT_FAILURE: draft.logOutLoading = false; draft.logOutError = action.error; break; case SIGN_UP_REQUEST: draft.signUpLoading = true; draft.signUpError = null; draft.signUpDone = false; break; case SIGN_UP_SUCCESS: draft.signUpLoading = false; draft.signUpDone = true; break; case SIGN_UP_FAILURE: draft.signUpLoading = false; draft.signUpError = action.error; break; case CHANGE_NICKNAME_REQUEST: draft.changeNicknameLoading = true; draft.changeNicknameError = null; draft.changeNicknameDone = false; break; case CHANGE_NICKNAME_SUCCESS: draft.changeNicknameLoading = false; draft.changeNicknameDone = true; break; case CHANGE_NICKNAME_FAILURE: draft.changeNicknameLoading = false; draft.changeNicknameError = action.error; break; // 게시글 등록 case ADD_POST_TO_ME: draft.me.Posts.unshift({id: action.data}); break; // return { // ...state, // me: { // ...state.me, // Posts: [{ id: action.data }, ..state.me.Posts], // }, // }; // 게시글 삭제 case REMOVE_POST_OF_ME: draft.me.Posts = draft.me.Posts.filter((v) => v.id !== action.data); break; // return { // ...state, // me: { // ...state.me, // Posts: state.me.Posts.filter((v) => v.id !== action.data) // }, // }; default: break; } }); export default reducer; pages/profile.js import Head from 'next/head'; import React, {useEffect} from 'react'; import Router from 'next/router'; import AppLayout from '../components/AppLayout'; import NicknameEditForm from '../components/NicknameEditFrom'; import FollowList from '../components/FollowList'; import { useSelector } from 'react-redux'; const Profile = () => { const {me} = useSelector((state) => state.user); useEffect(() => { if (!(me && me.id)) { Router.push('/'); } }, [me && me.id]); if(!me) { return null; } return ( <AppLayout> <Head> <title>내 프로필 | NodeBird</title> </Head> <NicknameEditForm /> <FollowList header="팔로잉" data={me.Followings} /> <FollowList header="팔로워" data={me.Followers} /> </AppLayout> ) } export default Profile; 로그인하고 게시글 쓰면 profile.js에 useEffect쪽 '/' 루트로 가지는거 같습니다 빈 창 떠요
redux react nodejs express Next.js
br
2022-09-26T10:07:16.386Z
댓글 1
좋아요 0
조회수 225
미해결
10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
http://boj.kr/f73a62d8306144558a6106909f0c9e2f i = 1부터 돌려가며 예를 first, second를 초기화해준뒤 예를들어 n = 6 이면 first -> 110011 이면 second -> 001100 두 부분으로 나눈 뒤 각각의 부분에 포함된 정점이 연결되어 있는지를 bfs를 통해서 알아봐서 두 부분다 연결이 되어있으면 두 부분의 인구수 차를 구해 출력했습니다. 선생님 처럼 dfs가 아니라 이렇게 bfs로 연결되어있는지를 확인하는 로직인데 혹시 괜찮은 방법인지, 개선할 점이 있는지 궁금합니다.
전동혁
2022-09-26T09:43:47.787Z
댓글 2
좋아요 0
조회수 481
미해결
따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
volumes: -./data:/var/lib/postgresql/data 이러한 형식으로 volume의 위치를 지정했는데 왜 이 위치로 지정했는지 알 수 있을 까요?
react postgresql nodejs typescript docker Next.js 클론코딩
재일 조
2022-09-26T09:41:37.790Z
댓글 0
좋아요 0
조회수 237
미해결
[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
형변환이라는건 어렴풋이 알겠는데 char형 포인터에서 주소를 출력하는데 왜 int*로 형변환이 되는건가요? char형 이기에 가능한 방식인건가요? ㅜ 이래저래 실험도 해보고 인터넷으로도 찾아보려했는데 잘 모르겠습니다 ㅜ
shyainkr
2022-09-26T09:37:45.944Z
댓글 0
좋아요 1
조회수 500
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
처음 호출 하면 51개로 맞추고 그 다음부터, 메모리에서 사용한다고 하는데 이렇게 하는 이유가 무엇인가요 ? 처음 호출 할때 50개를 미리 세팅 하고 1번부터 사용하면 안되나요???
2022-09-26T09:27:03.496Z
댓글 1
좋아요 0
조회수 508
해결됨
그림으로 쉽게 배우는 운영체제
안녕하세요. 재밌은 강의로 출퇴근때 꿀잼으로 강의 잘 보고 있습니다. 다중큐 강의에서 실행중인 프로세스에서 I/O 작업 이 발생하면 해당 I/O 작업의 종류별로 나뉜 큐로 들어간다고 하셨는데 이건 실행중인 프로세스의 큐가 비동기적으로 작성이 되어야 하는게 맞나요? 일반적으로 작성하면 계속 프로세스가 실행되고 있지만 I/O 작업이 끝나기를 기다리고 있는 상태인지 궁금합니다. 감사합니다!
choiiohc1
2022-09-26T09:25:09.999Z
댓글 1
좋아요 2
조회수 284
미해결
[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
npx sequelize db:create를 하게되면 Error reading "config/config.json". Error: Error: Cannot find module 라는 오류가 뜹니다. config파일을 수정해야 하나요?
Sequelize mysql mongodb nodejs
bigdragon00
2022-09-26T09:24:03.578Z
댓글 1
좋아요 0
조회수 822
미해결
[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
"scripts": { "start": "nodemon app" }, scripts 부분에 nodemon이 들어가 있는데 npm ERR! Missing script: "start" 라는 에러가 뜹니다
mongodb mysql nodejs Sequelize
bigdragon00
2022-09-26T09:11:23.472Z
댓글 1
좋아요 0
조회수 254
미해결
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
GoRouter 프로젝트에 적용하기 / Authentication 마무리하기 강의 단계에서 서버에서 401 Unauthorized 에러가 발생합니다. 디버그 내용을보면 잘못된 토큰이라고 나와서 토큰 변환 코드가 잘못됐나 확인했지만 문제가 없었습니다. 에러 발생 후 바로 이동한 파일이 user_me_repository.g.dart 파일이고 아래 두 번째 사진에서 코드에서 에러 메세지가 발생했습니다. 아이폰 시뮬레이터에선 splash_screen 에서 멈추고 로그인 화면으론 넘어가지 않았습니다. 어떻게 해야 이 에러를 해결 할 수 있나요? <작업 컴퓨터> <1번째 사진> <2번째 사진> <3번째 사진> <서버 컴퓨터>
401 unauthorized Flutter 하이브리드 앱
장태성
2022-09-26T09:06:47.753Z
댓글 1
좋아요 0
조회수 435
미해결
피그마(Figma)를 활용한 UI디자인 입문부터 실전까지 A to Z
에릭님 안녕하세요~ 강의를 듣던 중에 궁금한 점이 있습니다. 저희가 프로젝트에 따라 다르겠지만 보통 프레임을 선택할 때 안드로이드는 360*XXX iPhone은 375*812 사이즈로 선택하고 작업을 진행한다고 알고 있습니다. 관련해서 제가 프레임 중앙에 어떤 객체 (예. 정사각형 카드)를 배치한다고 했을 때 안드로이드에서는 짝수 (240*240)의 경우 가운데 정렬을 했을 때 좌/우 60씩 남지만 아이폰에서는 67/68로 배치가 됩니다. (피그마에서 억지로 가운데 정렬을 할 수 있을 것 같긴 한데 그러면 그게 0.5단위여서 개발에 전달할 때 문제가 있지 않을까 싶기도 하고 다른 객체들을 디자인 할 때 방해가 되지 않을까 싶습니다.) 위와 같은 예시로 한 앱을 두 OS에서 동일하게 보여주고 싶다면 객체 크기를 어떻게 설정하는게 좋을까요? 아이폰에서도 프레임의 짝수 홀수의 width가 섞여 있는데 정사각형/원형이 개체를 정 가운데 배치할 때 어떻게 기준을 잡아야 할까요? 더불어 안드에서는 8의 배수로 디자인 하는 것을 많이 권장하시는데 아이폰에서도 그런 기준이 있을까요? 미리 감사합니다~
DDDD
2022-09-26T08:38:43.513Z
댓글 2
좋아요 0
조회수 1573
해결됨
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
현재는 POST 요청에 {id:id, pw:pw} body를 작성해서 토큰을 받아오고 있는데요, 제가 기존에 사용하고 있는 방식과 Basic + email:password 방식과의 차이점과 장단점을 알 수 있을까요?
김킹진
2022-09-26T08:29:46.632Z
댓글 1
좋아요 1
조회수 441
미해결
Java TPC (생각하고, 표현하고, 코딩하고)
extends와 impolements의 차이점이 무엇인가요? 둘이 어떤 때 사용해주는 건지 구체적으로 알 수 있을까요? 강의 늘 잘 보고 있습니다 감사드립니다 ^^
코딩이재미있어!
2022-09-26T08:29:30.089Z
댓글 1
좋아요 0
조회수 327
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
다 똑같이 따라했는데 왜그런거죠 ?
spring-boot 웹앱 JPA spring java
톢이
2022-09-26T08:26:47.866Z
댓글 1
좋아요 0
조회수 425
미해결
인프런에서 운영하는 soptfire 교육을 수강하기 전에 몇가지좀 알아보려고 합니다. 따로 spotfire , python에 대해 흥미가 있는데 python 같은경우 국가공인자격증은 아니지만 민간자격증으로 증명할 수있는 방법이 있는걸로 압니다. spotfire 또한 수료증이 아닌 자격요건을 충족하기 위한 자격증이 따로 존재할까요? 아니면, 교육을 통해서 받는 수료증으로 자격요건을 충족시켜야하나요?
김주환
2022-09-26T08:20:57.151Z
댓글 0
좋아요 0
조회수 379
해결됨
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
안녕하세요. MyView 클래스에서 render() 메서드 재활용에 대한 질문이 있습니다. public class MyView { ... // #1 render public void render(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); } // #2 render public void render(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { modelToRequestAttribute(model, request); RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); } private void modelToRequestAttribute(Map<String, Object> model, HttpServletRequest request) { model.forEach(request::setAttribute); } } 영한님께서는 #2 render() 를 작성하실 때, #1의 코드를 복사해서 넣어주면 된다고 하셨는데요. public class MyView { ... // #1 render public void render(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); } // #2 render public void render(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { modelToRequestAttribute(model, request); render(request, response); } private void modelToRequestAttribute(Map<String, Object> model, HttpServletRequest request) { model.forEach(request::setAttribute); } } 위와 같이 #1 render() 를 호출하여 코드 중복을 제거하는 방법을 사용해도 괜찮을까요? 영한님께서 학습용이기에 간단한 코드를 작성하신건지, 아니면 다른 이유로 사용하시지 않은 이유가 있는지 궁금합니다!
anthologia
2022-09-26T08:20:54.169Z
댓글 1
좋아요 1
조회수 345
미해결
[OpenCV] 파이썬 딥러닝 영상처리 프로젝트 - 손흥민을 찾아라!
잘 보고 있습니다. 그런데 기존 소스와 잘못된 것들이 있는 것 같은데 업그레이드 안하시나요?
머신러닝 배워볼래요? 컴퓨터-비전 opencv tensorflow keras 딥러닝
BasicStudy
2022-09-26T08:06:24.103Z
댓글 0
좋아요 0
조회수 348
미해결
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
안녕하세요 강사님 강의 잘 보고 있습니다. https://www.inflearn.com/questions/641464 제가 예전에 위에 링크로 질문을 했었는데.. 아직까지도 해결이 되지 않아서 다시 메일을 보냅니다. 지금은 전에 질문 했던 것 과 조금 다른 상황이라 위에 링크는 잊으셔도 됩니다. 현재 데이터 동기화를 위한 Apache Kafka의 활용 ② Orders Microservice 수정 - MariaDB 부분을 수강중입니다. 현재 mariadb를 연결시키면 order-service가 실행 안되는 문제입니다. 당연히 콘솔과 heidisql에서 mariadb 접속이 아주 잘됩니다. 문제는 order-service에 mariadb 를 설정하고 실행시켰는데 다음과 같은 에러가 발생하면서 실행이 안됩니다. java.sql.SQLInvalidAuthorizationSpecException: Could not connect to address=(host= localhost )(port=3307)(type=master) : (conn=3) Access denied for user 'root'@' localhost ' (using password: YES) Current charset is UTF-8. If password has been set using other charset, consider using option 'passwordCharacterEncoding' 그래서 grant all privileges on root.* to root@' localhost ' identified by '비밀번호입력'; grant all privileges on root.* to root@'%' identified by '비민번호입력'; 해서 다음과 같은 상태를 만들었습니다. 그럼에도 불구하고 order-service를 실행시키면 실행이 되지 않습니다.. 분명히 명령프롬프트 창으로도 heidisql 같은 툴로도 접속이 아주 잘됩니다. 해결책은 에러 검색해보면 나오는 해결책은 제가 적용한 해결책하고 동일합니다.. 전에 안되면 order-service 압축파일을 메일로 보내다랄고 하셔서 도저히 해결이 안되서 메일 한번 보내봅니다.. 메일 한번 확인해 주시면 감사하겠습니다.
mariadb 카프카 msa Kafka spring-boot architecture spring-cloud JPA
리자몽
2022-09-26T08:03:03.847Z
댓글 1
좋아요 0
조회수 589
미해결
생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현
서버에 만든 템플릿 프로젝트를 배포하고 나서 ./gradlew clean build 명령어로 빌드할때 기본 으로 생성되는 @SpringBootTest class SpringApiAppApplicationTests { @Test void contextLoads() { } } 이 테스트가 빌드시에 자동으로 실행되는데, 빌드시에는 VMOption으로 jasypt password가 입력이 안되어서 그런지 자꾸 test에 실패합니다. 일단 test를 실행하지 않고 빌드하긴 했는데 이럴 경우엔 구파고님은 어떻게 하시나요?
LYY
2022-09-26T08:01:02.242Z
댓글 1
좋아요 1
조회수 275