묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨디지털포렌식 입문자를 위한 디지털포렌식 전문가 2급 실기 시험대비 강의(Encase/Autopsy)
VBR복구 관련 문의
디지털포렌식 전문가 2급 실기편 기출문제를 풀다가당황스러운 부분이 있었습니다. 저는 초보자다보니까.. USB의 경우는 파티션을 나누지 않는 경우 VBR부터 시작한다 라고 설명하는데요.. 저는 초보다 보니까 MBR 복구 인줄 알고 풀었네요, 판단한 이유는 처음 FTK이미저로 확인하니 파티션이 4개로 잡혀 있었습니다. 그리하여 DD파일을 생성 HEX로 분석하였는데요55 AA에서 4개씩 끊어서 131344 로 시작섹터와 총섹터수를 계산하는데.. 안맞아서 당황했습니다. 질문은 VBR과 MBR구분방법FTK이미저에 파티션 4개로 나온건데 이건? 헷갈리게 할려는 수작인가?이해하셨는지 모르겠네요~ 항상 감사합니다~
-
미해결
Spring Data Jpa에서 flush()는 어떻게 하나요?
일단 저의 전체 코드입니다. package com.readingbooks.web.service.member; import com.readingbooks.web.domain.enums.Gender; import com.readingbooks.web.exception.member.MemberPresentException; 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.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @SpringBootTest @Transactional class MemberServiceTest { @Autowired private MemberService memberService; @Test void register_fail_null(){ RegisterRequest request = createRequest(null, null, null, null, null, null); assertThatThrownBy( ()-> memberService.register(request)) .isInstanceOf(IllegalArgumentException.class); } @Test void register_fail_invalid_email(){ RegisterRequest request = createRequest("tes@example.com", "test1234", "test", "1999", "01012341234", Gender.SECRET); assertThatThrownBy(()->memberService.register(request)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("이메일을 올바르게 입력해주세요."); } @Test void register_fail_invalid_short_password(){ RegisterRequest request = createRequest("test@example.com", "test", "test", "1999", "01012341234", Gender.SECRET); assertThatThrownBy(()->memberService.register(request)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("비밀번호를 올바르게 입력해주세요. 비밀번호는 8-16자에 특수문자 '@, $, !, %, *, #, ?, &'가 포함되야 합니다."); } @Test void register_fail_invalid_not_contained_password(){ RegisterRequest request = createRequest("test@example.com", "test", "test1234", "1999", "01012341234", Gender.SECRET); assertThatThrownBy(()->memberService.register(request)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("비밀번호를 올바르게 입력해주세요. 비밀번호는 8-16자에 특수문자 '@, $, !, %, *, #, ?, &'가 포함되야 합니다."); } @Test void register_fail_invalid_name(){ RegisterRequest request = createRequest("test@example.com", "test1234", "t", "1999", "01012341234", Gender.SECRET); assertThatThrownBy(()->memberService.register(request)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("이름을 올바르게 입력해주세요."); } @Test void register_fail_invalid_birthYear(){ RegisterRequest request = createRequest("test@example.com", "test1234!", "test", "19990115", "01012341234", Gender.SECRET); assertThatThrownBy(()->memberService.register(request)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("생년을 올바르게 입력해주세요."); } @Test void register_fail_invalid_phoneNo(){ RegisterRequest request = createRequest("test@example.com", "test1234!", "test", "1999", "0101234", Gender.SECRET); assertThatThrownBy(()->memberService.register(request)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("핸드폰 번호를 올바르게 입력해주세요."); } @Test void register_fail_invalid_gender(){ RegisterRequest request = createRequest("test@example.com", "test1234!", "test", "1999", "01012341234", null); assertThatThrownBy(()->memberService.register(request)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("성별을 올바르게 입력해주세요."); } @Test void register_fail_present_email(){ //given RegisterRequest registerMember = createRequest("test@example.com", "test1234!", "test", "1999", "01012341234", Gender.SECRET); memberService.register(registerMember); RegisterRequest request = createRequest("test@example.com", "test1234", "test", "1999", "01012341234", Gender.MEN); assertThatThrownBy(() -> memberService.register(request)) .isInstanceOf(MemberPresentException.class) .hasMessageContaining("이미 가입된 이메일입니다."); } @Test void register_success(){ //given RegisterRequest registerMember = createRequest("success@example.com", "test1234!", "test", "1999", "01012341234", Gender.SECRET); //when Long memberId = memberService.register(registerMember); //then assertThat(memberId).isEqualTo(1L); } private RegisterRequest createRequest(String email, String password, String name, String birthYear, String phoneNo, Gender gender){ return new RegisterRequest(email, password, name, birthYear, phoneNo, gender); } }문제의 메소드는 register_success입니다. 메소드 단위 테스트를 진행할 때는 아무런 문제가 되지 않지만, 메소드 전체를 한번에 테스트를 진행할 때org.opentest4j.AssertionFailedError:expected: 1Lbut was: 2L예외가 터집니다.테스트 코드에서는 h2 인메모리 db를 사용하고 있습니다. 분명 @Transactional 애노테이션까지 붙여서 롤백될텐데 왜 롤백이 안 되는지 ㅠㅠ..그래서 생각한 건 테스트 코드에 @beforeEach 애노테이션으로 영속성 컨텍스트를 flush 시키는 방법인데, 현재 저는 Spring Data Jpa를 사용하고 있어서 entityManager.flush()를 사용하기에는 애로사항이 있습니다.public interface MemberRepository extends JpaRepository<Member, Long> { Optional<Member> findByEmail(String email); } @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)테스트코드에 위의 애노테이션을 붙이는 방법도 있던데, 이렇게 하면 메소드를 실행할 때마다 컨텍스트를 초기화해서 너무 느리더라고요. 어떻게 하면 좋을까요?
-
미해결
django repo의 aws ci/cd deployment 관련문의
저는 현재 이동원님의 "jenkins를 이용한 ci/cd pipeline 구축" 강의를 듣고 있습니다. 먼저 유익한 강의에 진심으로 감사드립니다. 저의 급한 현안은 저가 만든 djanog project(web), python codes( chatbot, etc)등을 localhost에서는 크게 문제가 없어서 이를 aws ec2에 ci/cd로 자동화하여 deploy하고자 합니다. 그런데 저의 현안을 해결하기 위하여서는 강의 내용에 따라 그대로 적용하되 다만 저의 repo 주소만을 등재하면 그대로 deploy할 수가 있는지요? 아니면 별도의 추가적인 조치가 필요하나요? node.js에 관하여는 간단하게 소개해주셨는데 django의 경우는 어떠할까요? 저가 너무 초보여서 여쭈어 봅니다. 이와 관련하여 저가 추가적으로 들어야 할 강의 등이 있다면 알려주시기 바랍니다. 그렇지 아니하면 저의 현안을 해결하기 위하여 저가 참조할 만한 자료 등이 있으시면 말씀해주시기 바랍니다. 아니면 어떻게 해야 하는 지에 대하여 알려주시면 많은 도움이 될 것같습니다. 바쁘신줄아오나 저 역시 사정이 딱한 상태여서 정중하게 감히 부탁을 드리고자 합니다. 미리 감사를 드립니다. 그리고 강의 자료도 있으시면 저의 이메일로 보내주시면 감사하겠습니다. (저의 이메일 주소는 hsollclaw@gmail.com입니다.) 그리고 추가하여 혹시 가능하면 chatgpt관련 small llm(open source)을 이용한 finetuning, 무제한 pdf 자료 검색 및 정리(chatgpt 또는 open source llm), langchain, prompt engineering관련 강의(일정 등등)도 가능하시면 알려주시면 감사하겠습니다. ㅊ
-
미해결
localhost에서 연결을 거부했습니다.
vs code로 스크립트 강의 수강중인데...갑자기 F5눌러서 실행하면 사이트에 연결할 수 없음localhost에서 연결을 거부했습니다.다음 방법을 시도해 보세요.연결 확인프록시 및 방화벽 확인ERR_CONNECTION_REFUSED 이게 뜨네요 ㅠㅠ도와주세요
-
미해결
localhost에서 연결을 거부했습니다.
vs code로 스크립트 강의 수강중인데...갑자기 F5눌러서 실행하면 사이트에 연결할 수 없음localhost에서 연결을 거부했습니다.다음 방법을 시도해 보세요.연결 확인프록시 및 방화벽 확인ERR_CONNECTION_REFUSED 이게 뜨네요 ㅠㅠ도와주세요
-
미해결비전공 기획자 및 관리자를 위한 IT 필수 지식
강의자료 부탁드립니다.
강의 잘 듣고 있습니다.limejinny@naver.com 로 강의 자료 보내주시면 감사드리겠습니다!
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
yarn install 했는데 node_modules가 설치 안됐어요
이건 class 파일에서 작업한 내용이고 아래는 freeboard-frontend에서 작업한 내용입니다. 파일 지우고 똑같이 따라서 설치 했는데 안돼요..안에 내용도 다른 것 같아요 ㅠㅠ
-
해결됨팝스타 공식 뮤비 제작 & 유튜브 2천만 뷰 크리에이터의 애니메이트 X 이모티콘 클래스
심볼의 중심점이 이동하지 않아 질문드려요
단순히 눌러서 옮기면 되는것 같은데 잘 안되니까 조금 민망하네요커서로 저 동그라미를 눌러도 동그라미가 끌어지지 않고 팔 전체가 끌어지네요ㅠㅠ이건 설정 문제일까요?
-
미해결더 자바, 코드를 조작하는 다양한 방법
Spring Data JPA 동적 프록시를 사용 질문
안녕하세요! 강의를 듣다가 궁금한 것이 생겨 질문 남깁니다 :) 찾아보니까 Spring 에서는 기본적으로 다이나믹 프록시를 사용하고, Spring Boot 에서는 기본적으로 CGLIB 사용으로 바뀌었다고 나와있습니다! Spring Boot 에서 Spring Data JPA 를 사용하여 Repository를 만들 때는 인터페이스 기반이기 때문에 디폴트 설정인 CGLIB 대신 다이나믹 프록시를 사용하는 것으로 이해했는데 맞을까요?!
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
디폴트 아바타 이미지 url에서 404 에러가 뜹니다.
https://www.gravatar.com/avatar?d=mp&f=y 에서 404 에러가 뜨네요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의에서 위 코드를 사용한 이유가 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]자바 기본 문법 중 iterator와 forEachRemaining을 사용하신 것 같은데, 왜 이러한 문법을 사용하셨는지?forEachRemaing 문의 람다식은 무엇을 의미하는지?궁금합니다.
-
미해결한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
date 설정을 바꿀 수 없을까요?
date를 나타내기 위해const getStringDate = (date) => { return date.toISOString().slice(0, 10); }사용헤서 date를 설정하니까밤에 작성하건 낮에 작성하건 Home페이지에서모두 같은 시간으로 저장되서 시간순으로 저장되는 느낌이 안사는 것 같아요.toISOstring을 안하고 onCreate에 데이터를 넣는 코드 구조도 알려주실 수 있나요? --------------------------------------스스로 생각을 해보았는데 혹시const handleSubmit = () => { if (content.length < 1) { contentRef.current.focus(); return; } onCreate({ date, content, emotion }); navigate("/", { replace: true }); };에서 onCreate 함수에 date대신 new Date().getTime()를 넣으면 제가 생각한 문제가 해결될까요? --------------------------------------다시 생각을 해보았는데 이렇게 하면 시간이 지났을때 전날 일기를 작성할 수가 없네요..
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
설치과정에서 불필요한 부분을 삭제하는데 저장을 하지 못한다고 떠요
저장을 눌렀는데 위 화면이 뜨길래 sudo로 다시 시도를 눌렀습니다. 그런데 저장하지 못함 화면이 뜨고 다시 시도를 눌러도 저장이 되지 않습니다.
-
미해결UX/UI 시작하기 : Figma 입문 (Inflearn Original)
옵션키가 정확히 어떤키를 말하는지 궁금합니다.
복사를 하거나 할때 옵션키를 눌러야한다는데 어느키를 눌러야하나요?
-
미해결[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
진도 관련 문의드립니다.
다트 강의를 다 듣고20%도 이해가 되지 않는 상태에서플러터 초급([코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!) 강의로 넘어가도 되는지 궁금합니다.1. 다트를 예제를 보지 않고 혼자서 코딩할 수 있는 수준까지 도달 후 초급 강의로 넘어가는 게 좋을지..2. 혼자서 코딩은 못해도 개념(원리) 정도만 이해하고 넘어가도 되는 건지 궁금합니다.답변 부탁드립니다.
-
미해결
while do done 괄호 사용 관련
너무 초보적인 질문인거 같습니다만while do done 강의 예제에서..괄호를 한번 더 사용해야만 실행되는 이유가 궁금합니다. <예 1>*****@hoon-VirtualBox:~/Desktop$ no=1; while ( no < 10 ); do printf "%02d\n" $no; (no++); donebash: 10: No such file or directory <예 2>*****@hoon-VirtualBox:~/Desktop$ no=1; while (( no < 10 )); do printf "%02d\n" $no; ((no++)); done010203040506070809
-
미해결2. 웹개발 코스 [JAVA 개발언어]
eclips 경로 문제 eclips.ini 파일을 못찾겠습니다.
eclips.exe 다운로드 받아서 다른 곳에 압풀 풀기를 하면'eclipse execute launcher was unable to locate its companion shared library.'라고 나옵니다. 그래서 검색해보니eclips.ini에서 경로를 바꿔줘야 한다는데 eclips.ini 파일이 없었습니다.그래서 이클립스 집파일이 설치된 '다운로드 파일'에서 압축을 풀었는데 잘되네요... 종종 '다운로드파일'은 초기화 시키곤해서 eclips 경로를 바꿔주고 싶은데 어떻게 해야할지요? 참고로 eclips 작업 저장 공간은 다른 곳에 만들어서 잘됩니다.
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
어디가 잘못된 것인지 모르겠습니다.
import java.io.*; import java.util.*; public class Main { private int solution(int n, int[][] arr) { int[] cntArr = new int[n]; int answer = 0, max = 0; for (int i = 0; i < n; i++) { int cnt = 0; for (int j = 0; j < 5; j++) { boolean flag = false; int cur = arr[i][j]; for (int k = 0; k < n; k++) { if (i == k) continue; int compare = arr[k][j]; if (cur == compare) { flag = true; break; } } if (flag) cnt++; } cntArr[i] = cnt; max = Math.max(max, cntArr[i]); } for (int i = 0; i < n; i++) { if (cntArr[i] == max) { answer = i+1; break; } } System.out.println(Arrays.toString(cntArr)); return answer; } public static void main(String[] args) throws IOException { Main main = new Main(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[][] arr = new int[n][5]; StringTokenizer st; for (int i = 0; i < n; i++) { st = new StringTokenizer(br.readLine()); for (int j = 0; j < 5; j++) { arr[i][j] = Integer.parseInt(st.nextToken()); } } System.out.print(main.solution(n, arr)); } } 첫 번째 순회문(i)은 학생 번호를,두 번째 순회문(j)은 학년 번호를,세 번째 순회문(k)은 학생 번호를 순회하기 위한 for문입니다. 모든 학생을 일일이 순회하는데, 해당 학생이 위치한 학년의 학생들과 k 순회문으로 비교하는 로직입니다.(해당 학생이 위치한 학년을 비교하는, 열을 기준으로 비교하는) cntArr 배열에 각 학생의 같은 반인 횟수를 집어넣고, 최종적으로 그 중 가장 큰 값인 인덱스를 찾아 +1을 한 값을 반환합니다.이 풀이법이 틀린 이유가 무엇인가요..ㅜ
-
미해결C 와 C++ 을 동시에 배워보자 - 두들낙서의 C/C++
메모리 재할당 시 같은주소로 할당됨
68강을 수강하면서 코드를 작성하였는데 String s3("Hello");s3.operator=(s1);에서 분명히 기존의 strData의 메모리를 delete 하고 재할당하였는데 찍히는 주소가 계속 같게나옵니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
SpringDataJpaMemberRepository를 직접 사용하는건 아닌가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 3. 질문 잘하기 메뉴얼을 읽어보셨나요? [질문 내용]JPARepository 를 상속받는 SpringDataJpaMemeberRepository 의 오버라이딩 함수를 사용하려면 Repository 를 주입하는 Config 에서 부터 시작해서 주입된 서비스 에서 까지 소스를 전부 SpringDataJpaMemeberRepository 를 주입받도록 수정해주어야 사용이 가능하지 않은가요?기존 소스 변경없이 모두 MemberRepository 만 사용하던데, 그러면 JpaRepository 를 확장하는 인터페이스의 이점을 살리지 못하는게 아닌가 궁금합니다