묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ArrayEx7 문제를 풀었는데 정답과 코드가 다릅니다.
이렇게 풀었는데 결과는 똑같이 나옵니다! 비교해보니 국어,영어,수학 열 부분을 또 하나의 배열로 만들어서 반복문 처리한 것에 차이점이 있는 것 같은데 정답코드가 더 간결하다는 것만 차이가 있는 것 이겠죠??
-
미해결기초부터 따라하는 디지털포렌식
메모리 포렌식은 재부팅 이후 불가능하죠?
수업 첫 강에서 말씀하셨다시피 메모리 포렌식을 하기 위해서는 램 메모리를 이미징해서 그 안에 있는 데이터를 분석하는 과정이라고 배웠습니다. 서버 등에서 침해 사고가 일어났을 경우 급하게 메모리를 이미징 하는 거면, 서버가 재부팅 되거나 아니면 서버 컴퓨터가 아니라 일반 PC 도 재부팅 될 경우에는 메모리 포렌식 자체를 못 하는 건가요? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨Vue3 완벽 마스터: 기초부터 실전까지 - "실전편"
localhost 통신 시 CORS 에러
안녕하세요.해당 파트 학습하다가 네트워크 에러를 발생시키기 위해 json-server를 껐다 켰더니 아래와 같은 에러가 발생하는데 원인 파악이 힘들어 질문 드립니다.Access to XMLHttpRequest at 'http://localhost:5000/posts?_sort=createdAt&_order=desc&_page=1&_limit=3&title_like=' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
학습 자료
안녕하세요.수업에 사용하신 코드는 어디서 받을 수 있을까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
V3 Modelview와 Map<String, String> 질문
public ModelView process(Map<String, String> paramMap) { String username = paramMap.get("username"); int age = Integer.parseInt(paramMap.get("age")); Member member = new Member(username, age); memberRepository.save(member); ModelView mv = new ModelView("save-result"); mv.getModel().put("member", member); return mv;public class ModelView { private String viewName; private Map<String, Object> model = new HashMap<>(); public ModelView(String viewName) { this.viewName = viewName; } public String getViewName() { return viewName; } public void setViewName(String viewName) { this.viewName = viewName; } public Map<String, Object> getModel() { return model; } public void setModel(Map<String, Object> model) { this.model = model; }1.Modelview에서 model이 언제생성된거죠..? getmodel을 해주려면 먼저 선언이 되어있는 model을 가지고 반환해줘야하는데 언제선언이 된거죠? Map<String, String> paramMap = createParamMap(request); ModelView mv = controller.process(paramMap); String viewName = mv.getViewName(); //논리이름 new-form MyView view = viewResolver(viewName); view.render(mv.getModel(), request, response); } private static MyView viewResolver(String viewName) { return new MyView("/WEB-INF/views/" + viewName + ".jsp"); } private static Map<String, String> createParamMap(HttpServletRequest request) { Map<String, String> paramMap = new HashMap<>(); request.getParameterNames().asIterator() .forEachRemaining(paramName ->paramMap.put(paramName, request.getParameter(paramName))); return paramMap; } } Map<String, String> createMap에서 .forEachRemaining(paramName ->paramMap.put(paramName, request.getParameter(paramName))); 여기를 보면 request.getParmeter(paramName)로 paramName에대한 Value를 가지고오고있는데 여기서 말하는 Value는 age인데 int로 선언하는게 맞지않나요?항상 답변감사드립니다
-
해결됨코딩테스트 [ ALL IN ONE ]
강의 수강 후 추천 문제
안녕하세요. 코테는 정말 앞이 캄캄했는데, 강의를 들으면서 문제 푸는 감이 점점 생긴 것 같아요.좋은 강의 감사드립니다!강의를 듣고 해당 알고리즘에 맞는 문제도 풀어보고 싶은데, 추천하는 문제 리스트가 있으실까요?
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
protected, private 필드들의 getter...
선생님, 안녕하세요 10강 코틀린 상속 편 보다가 질문 드립니다.예제로 아래 JavaAnimail 클래스를 주셨고,public abstract class JavaAnimal { protected final String species; protected final int legCount; public JavaAnimal(String species, int legCount) { this.species = species; this.legCount = legCount; } abstract public void move(); public String getSpecies() { return species; } public int getLegCount() { return legCount; } }이와 동일한 코드로 아래 코틀린으로 변환했는데요,package com.lannstark.lec10; abstract class Animal( protected val species: String, protected val legCount: Int, ) { abstract fun move() } 위의 자바 코드는 getter들이 public 으로 열려있어서 외부에서 인스턴스 생성 시 cat.getSpecies(), cat.getLegCount()등이 호출되나, 아래 코틀린에서 자동생성되는 getter의 경우 protected로 cat.species, cat.legCount 에 대해 가시성이 없습니다. 그러면...클래스의 필드를 public으로 다 열고 a. val 는 더 이상 해줄 수 있는 것이 없음(어차피 생성자 초기화만 가능)class Animal2(val species: String, val legCount: Int)b. var는 private setter을 둔다.class Animal3(species: String, legCount: Int) { var species = species private set var legCount = legCount private set } 필드를 protected, private 으로 두고 별도의 public getter를 내부에 다시 만든다..(getter만 열 수도 없고, public으로 override도 안 되는 것 같습니다..!)class Animal4(species: String, legCount: Int) { private val species = species public get // ❌Getter visibilty 는 필드와 일치해야 함 override public get // ❌'override' is not applicable to 'getter' private val legCount = legCount fun getSpecies() = this.species; fun getLegCount() = this.legCount; } 😔...흠 어떻게 하는게 맞을까요.jpa 엔티티에서의 사용까지 생각하면 1-b가 가장 나을까요? 엔티티 필드들은 거의 var이기도 할테고요...자바에서 사용하는 스타일로 마음이 가장 안심(?)인 건 2번인데, 이렇게 하면 코틀린의 코드 간결성과 편리함을 엔티티 내부에서는 거의 사용하지 못하는 것 같아서 그나마 코틀린스럽게 코드를 사용할 수 있는 옵션이 1-b 인 것 같다고 생각했는데요...더 좋은 방법이 있는지... 어떻게 하는 것이 best practice인지, 또 선생님은 실무에서 어떻게 하시는지 궁금합니다!!
-
미해결
강의교재 p38 find값 반환
cout << it << '\n'; 해당페이지를 보시면 이러한 코드가 있는데요! find라는 함수는 위치를 반환한다고 했는데 왜 코드 실행결과 0이 나오는것인가요? 제가 추측하건데 love가 인덱스로 0 is 가 1 이런식으로 정의가 되는건가요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
프로젝트 실행 오류
다음과 같은 오류가 뜨는데 어느 부분을 고쳐줘야 할까요?javax 관련 패키지는 없어보입니다
-
미해결초보자를 위한 ChatGPT API 활용법 - API 기본 문법부터 12가지 프로그램 제작 배포까지
CH04 Open Ai 오류 이유
버전 오류는 나와있어서 잡았는데 만료된건은 결재를 해야하는건가요? 영상에서 나온것처럼 이제 초기 무료금액은 없는건가 해서욥..ㅠ
-
미해결초보자를 위한 ChatGPT API 활용법 - API 기본 문법부터 12가지 프로그램 제작 배포까지
비활성화 단축키 뭔지 알려주세요!
한번에 비활성화 하시던데 단축키가 뭔지 궁금합니다!
-
해결됨[R을 R려줘] R 기초다지기
wday() 함수
안녕하세요?date_01 = ymd("2030년 1월 1일")wday(date_01)을 출력하면 3이 나오는 이유를 수업에서 넘어가신 것 같습니다ㅠ그 이후로 week_start = 1은 월요일을 시작점으로 두는 거고, 보통 week_start는 일요일로 처음에 잡혀있다고 하셨으니, 일요일을 1로 생각하면 화요일이 3으로 나오는 것 추측됩니다만 잘 모르겠습니다ㅠ 만약 제 추측이 맞다면 더 헷갈리는데, week_start = 1이 월요일이니, week_start = 0은 일요일을 뜻하나요? 그럼 0 , 1, 2해서 화요일은 2가 나와야 하지 않나라는 생각도 들어서요...ㅠ
-
해결됨독하게 시작하는 C 프로그래밍
변수들이 stack frame에 할당되는 구조에 대하여
우선 강의 내용 정말 만족하면서 잘 듣고 있습니다.섹션 16의 "가변 길이 입력에 대한 stack frame 손상" 강의편에서Callee로 GetString 함수를 활용하여 디버깅 모드로 메모리 주소를추적하는 과정에서 질문드려요.스택 구조는 높은 메모리 주소에서 낮은 메모리 주소 방향으로할당 받는 구조로 알고 있는데, char 배열이 int형 변수보다낮은 메모리 주소에 할당이 되어서 질문 드립니다.제가 따로 여러 변수들을 적용하여 디버깅 해보았는데도 마찬가지더라고요.혹시, os에 따라 변수가 할당되는 스택 메모리의 순서가 다른건지 궁금해서 질문드려요.
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
예외처리2 validation Map
Validation 클래스를 만들어서 Validation 클래스를 List로 담아서 내보냈습니다.이렇게 하면 테스트가 정상적으로 동작을 하는데 Map을 사용했을 때 성능적으로나 효율성이 뭐가 더 나은지 알고 싶습니다.그리고 json 을 어떤 방식으로 넘겨야 좋은지 알고싶습니다.
-
해결됨김영한의 실전 자바 - 기본편
추상 클래스 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]추상 클래스 1편 강의를 듣다가 배열과 for문을 이용했던게 생각나서 한 번 해봤는데 오류가 나지 않고 실행이 잘 되더라고요근데 추상클래스는 생성하면 안 된다고 말씀하셨는데 여기서 오류가 일어나지 않는 이유는 무엇인가요?? 궁금합니다
-
미해결[리뉴얼] 처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화 전과정 익히기) [데이터분석/과학 Part1]
pandas 라이브러리로 실제 데이터 전처리하기2 8:42
ㄴㅇㄹ Province_State Country_Region Confirmed 0 Anhui China 1.0 1 Beijing China 14.0 2 Chongqing China 6.0 3 Fujian China 1.0 5 Guangdong China 26.0 6 Guangxi China 2.0 7 Guizhou China 1.0 8 Hainan China 4.0 9 Hebei China 1.0 11 Henan China 5.0 13 Hubei China 444.0 14 Hunan China 4.0 16 Jiangsu China 1.0 17 Jiangxi China 2.0 19 Liaoning China 2.0 20 Macau China 1.0 21 Ningxia China 1.0 24 Shandong China 2.0 25 Shanghai China 9.0 26 Shanxi China 1.0 27 Sichuan China 5.0 28 None None NaN 29 Tianjin China 4.0 31 None None NaN 33 Yunnan China 1.0 34 Zhejiang China 10.0 35 None None NaN 36 None None NaN 37 NaN Korea, South 1.0 Province_State Country_Region Confirmed 0 Anhui China 1 1 Beijing China 14 2 Chongqing China 6 3 Fujian China 1 5 Guangdong China 26 6 Guangxi China 2 7 Guizhou China 1 8 Hainan China 4 9 Hebei China 1 11 Henan China 5 13 Hubei China 444 14 Hunan China 4 16 Jiangsu China 1 17 Jiangxi China 2 19 Liaoning China 2 20 Macau China 1 21 Ningxia China 1 24 Shandong China 2 25 Shanghai China 9 26 Shanxi China 1 27 Sichuan China 5 28 Taiwan Taiwan 1 29 Tianjin China 4 31 Washington US 1 33 Yunnan China 1 34 Zhejiang China 10 35 NaN Japan 2 36 NaN Thailand 2 37 NaN Korea, South 1 두 코드의 차이는 return의 위치입니다.근데 왜 Confirmed 타입과 값이 이렇게 차이나나여?
-
미해결C#.NET 0.5년차~3년차(파트1)
강사님.. 에러가 왜 뜰까요?
델리게이트 강의... wpf로 하는데.. 에러가 뜨네요..인스턴스안해서 뜨는거 같은데.. 어떻게 인스턴스 해줘야하나요?알려주심감사하겠습니다.~
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost:8080/hello 오류
index.html은 잘 열리는데 hello.html은 오류가 나네요 ㅠㅠ질문들 많이 찾아서 봤는데도 문제가 안보여요...도와주세요 ㅠㅠㅠ!
-
미해결스프링 시큐리티
브레이크 포인트를 거는 이유
브레이크 포인트를 거는 이유가 뭔가요 ??
-
미해결실전! Querydsl
동적 쿼리가 안되는 이유
@Repository @Log4j2 public abstract class Querydsl4RepositorySupport { // 이 클래스가 다루는 도메인(엔터티)의 클래스 private final Class domainClass; // 도메인 엔터티에 대한 Querydsl 쿼리를 생성하고 실행 private Querydsl querydsl; // 데이터베이스와의 상호 작용을 담당하는 JPA의 핵심 객체 private EntityManager entityManager; // queryFactory를 통해 Querydsl 쿼리를 생성하고 실행합니다. private JPAQueryFactory queryFactory; public Querydsl4RepositorySupport(Class<?> domainClass) { Assert.notNull(domainClass, "Domain class must not be null!"); this.domainClass = domainClass; } // Pageable안에 있는 Sort를 사용할 수 있도록 설정한 부분 @Autowired public void setEntityManager(EntityManager entityManager) { Assert.notNull(entityManager, "EntityManager must not be null!"); // JpaEntityInformation을 얻기 위해 JpaEntityInformationSupport를 사용합니다. // 이 정보는 JPA 엔터티에 대한 메타데이터 및 정보를 제공합니다. JpaEntityInformation entityInformation = JpaEntityInformationSupport.getEntityInformation(domainClass, entityManager); // 이는 Querydsl에서 엔터티의 경로를 생성하는 데 사용됩니다. SimpleEntityPathResolver resolver = SimpleEntityPathResolver.INSTANCE; // entityInformation을 기반으로 엔티티의 경로를 생성합니다. EntityPath path = resolver.createPath(entityInformation.getJavaType()); this.entityManager = entityManager; // querydsl 객체를 생성합니다. // 이 객체는 Querydsl의 핵심 기능을 사용할 수 있도록 도와줍니다. // 엔터티의 메타모델 정보를 이용하여 Querydsl의 PathBuilder를 생성하고, 이를 이용하여 Querydsl 객체를 초기화합니다. this.querydsl = new Querydsl(entityManager, new PathBuilder<>(path.getType(), path.getMetadata())); this.queryFactory = new JPAQueryFactory(entityManager); } // 해당 클래스의 빈(Bean)이 초기화될 때 자동으로 실행되는 메서드 @PostConstruct public void validate() { Assert.notNull(entityManager, "EntityManager must not be null!"); Assert.notNull(querydsl, "Querydsl must not be null!"); Assert.notNull(queryFactory, "QueryFactory must not be null!"); } // 이 팩토리는 JPA 쿼리를 생성하는 데 사용됩니다. protected JPAQueryFactory getQueryFactory() { return queryFactory; } // 이 객체는 Querydsl의 핵심 기능을 사용하는 데 도움이 됩니다. protected Querydsl getQuerydsl() { return querydsl; } // EntityManager는 JPA 엔터티를 관리하고 JPA 쿼리를 실행하는 데 사용됩니다. protected EntityManager getEntityManager() { return entityManager; } // Querydsl을 사용하여 쿼리의 SELECT 절을 생성하는 메서드입니다. // expr은 선택할 엔터티나 엔터티의 속성에 대한 표현식입니다. protected <T> JPAQuery<T> select(Expression<T> expr) { return getQueryFactory().select(expr); } // Querydsl을 사용하여 쿼리의 FROM 절을 생성하는 메서드입니다. // from은 엔터티에 대한 경로 표현식입니다. protected <T> JPAQuery<T> selectFrom(EntityPath<T> from) { return getQueryFactory().selectFrom(from); } // 이 메서드는 주어진 contentQuery를 사용하여 Querydsl을 통해 JPA 쿼리를 생성하고 실행하고, // 그 결과를 Spring Data의 Page 객체로 변환하는 기능을 제공 protected <T> Page<T> applyPagination(Pageable pageable, Function<JPAQueryFactory, JPAQuery> contentQuery) { // 1. contentQuery를 사용하여 JPAQuery 객체를 생성 JPAQuery jpaQuery = contentQuery.apply(getQueryFactory()); // 2. Querydsl을 사용하여 페이징 및 정렬된 결과를 가져옴 List<T> content = getQuerydsl().applyPagination(pageable, jpaQuery).fetch(); // 3. contentQuery를 다시 사용하여 countQuery를 생성 JPAQuery<Long> countQuery = contentQuery.apply(getQueryFactory()); // 4. countQuery를 실행하고 총 레코드 수를 얻음 long total = countQuery.fetchOne(); // 5. content와 pageable 정보를 사용하여 Spring Data의 Page 객체를 생성하고 반환 return PageableExecutionUtils.getPage(content, pageable, () -> total); } // 이 메서드는 contentQuery와 함께 countQuery를 인자로 받아서 사용합니다. // contentQuery를 사용하여 페이징된 결과를 가져오고, countQuery를 사용하여 전체 레코드 수를 얻습니다. protected <T> Page<T> applyPagination(Pageable pageable, Function<JPAQueryFactory, JPAQuery> contentQuery, Function<JPAQueryFactory, JPAQuery> countQuery) { JPAQuery jpaContentQuery = contentQuery.apply(getQueryFactory()); List<T> content = getQuerydsl().applyPagination(pageable, jpaContentQuery).fetch(); JPAQuery<Long> countResult = countQuery.apply(getQueryFactory()); log.info("countResult : " + countResult ); Long total = countResult.fetchOne(); return PageableExecutionUtils.getPage(content, pageable, () -> total); } } // count처리 까지 한것 public Page<Member> applyPagination2(MemberSearchCondition condition, Pageable pageable) { return applyPagination(pageable, contentQuery -> contentQuery.selectFrom(member) .join(member.team, team).fetchJoin() .where(userNameEq(condition.getUserName()), teamNameEq(condition.getTeamName()), ageGoe(condition.getAgeGoe()), ageLoe(condition.getAgeLoe()) ), countQuery -> countQuery .select(member.count()) .from(member) .where(userNameEq(condition.getUserName()), teamNameEq(condition.getTeamName()), ageGoe(condition.getAgeGoe()), ageLoe(condition.getAgeLoe())) ); } private BooleanExpression userNameEq(String userName) { return hasText(userName) ? member.userName.eq(userName) : null; } private BooleanExpression teamNameEq(String teamName) { return hasText(teamName) ? team.name.eq(teamName) : null; } private BooleanExpression ageGoe(Integer ageGoe) { return ageGoe != null ? member.age.goe(ageGoe) : null; } private BooleanExpression ageLoe(Integer ageLoe) { return ageLoe != null ? member.age.loe(ageLoe) : null; }서비스에서 public Page<MemberTeamDTO> search(MemberSearchCondition condition, Pageable pageable) { Page<Member> resultPage = memberTestRepository.applyPagination2(condition, pageable); return resultPage.map(member -> MemberTeamDTO.builder() .memberId(member.getId()) .age(member.getAge()) .userName(member.getUserName()) .teamId(member.getTeam().getId()) .teamName(member.getTeam().getName()) .build()); }컨트롤러 @GetMapping("/v3/members") public ResponseEntity<?> searchMemberV3(MemberSearchCondition condition, Pageable pageable) { Page<MemberTeamDTO> search = memberService.search(condition, pageable); return ResponseEntity.ok().body(search); }이렇게 작성했는데 뭐가 문제인지 페이지와 정렬은 잘되는데 http://localhost:9090/v3/members?teamName=teamA&page=1&sort=id,desc teamA와 teamB 모두 나오고 있습니다.질문1 : 조건이 안 먹고 있는데 왜 그럴까요? 어떤 조건으로 해도 안 먹고 있습니다.질문2 : 여기서 동적 쿼리에서 null 처리를 잘 해야 하는 이유가 null로 들어오면 무시되서 전부 조회가 되기 때문에 null 처리를 잘해야하는 거 맞나요?질문 3 : 예를들어, hasText(userName) ? member.userName.eq(userName) : null; 가 있으면 조건이 userName이 존재한다고 하면 true이지만 받아온 userName이 존재하지 않는 userName이면 null이 반환이 되나요? 질문 4 : null 문제 해결 글을 찾던 와중에@DataJpaTest public class DynamicQueryTest { JPAQueryFactory queryFactory; @Autowired EntityManager em; @BeforeEach void init() { queryFactory = new JPAQueryFactory(em); em.persist(new Member("userA", 10, "ROLE_MASTER")); em.persist(new Member("userB", 20, "ROLE_ADMIN")); em.persist(new Member("userC", 30, "ROLE_USER")); } @Test void dynamicQuery() { // Integer age = 10; // String role = "ROLE_MASTER"; Integer age = null; String role = null; List<Member> result = queryFactory .selectFrom(member) .where(ageAndRoleEq(age, role)) .fetch(); System.out.println("result = " + result); } private BooleanBuilder ageAndRoleEq(Integer age, String role) { return ageEq(age).and(roleEq(role)); } private BooleanBuilder ageEq(Integer age) { if (age == null) { return new BooleanBuilder(); } else { return new BooleanBuilder(member.age.eq(age)); } } private BooleanBuilder roleEq(String roleName) { if (roleName == null) { return new BooleanBuilder(); } return new BooleanBuilder(member.roleName.eq(roleName)); } } return nullSafeBuilder(() -> member.age.eq(age)); } private BooleanBuilder roleEq(String roleName) { return nullSafeBuilder(() -> member.roleName.eq(roleName)); } public static BooleanBuilder nullSafeBuilder(Supplier<BooleanExpression> f) { try { return new BooleanBuilder(f.get()); } catch (IllegalArgumentException e) { return new BooleanBuilder(); } }이렇게 줄일 수 있다고 나왔는데 수업에서는 BooleanExpression을 사용했지만 null 방지를 위해서 BooleanBuilder 을 사용하는건가요? 이렇게 하면 null 방지가 되면서 전체 조회가 안되는 형식인가요?