안녕하세요 . 검증관련 질문드립니다! 폼에서 올바른 데이터가 들어오지 않으면, 컨트롤러에서 Bean Validation을 동작시켜 에러를 타임리프에 넘기어 사용자에게 보여주는 부분에서, 만약에 템플릿 엔진으로 타임리프를 사용하지 않고, 뷰를 리액트나 다른 프론트앤드 기술로 사용한다면 어떤식으로 이용 할 수 있을까요..? 타임리프에서만 특화된 기능인가요 ??
다음 내용인 스프링 mvc내용을 이해 하려면 다시 복습을 하고 넘어가는것이 좋은지 아니면 일단 이해하지 못한상태로 넘어가서 다음 내용을 습득하는것이 좋은지 고민입니다. 지금 내용을 이해하지 못하면 다음 내용(웹 mvc2탄)을하나도 이해할 수 없나요? 그리고 지금 내용은 다음 강의인 웹 mvc 2탄에서 사용하지 않는 내용인가요?
public class BOJ_12865 { static int N; static int K; static int[][] merchandise; // 0 : 무게, 1 : 가치 static int[][] dp; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); K = sc.nextInt(); merchandise = new int[N][2]; dp = new int[10000000][N]; for (int i = 0; i < 10000000; i++) { for (int j = 0; j < N; j++) { dp[i][j] = -1; } } for (int i = 0; i < N; i++) { merchandise[i][0] = sc.nextInt(); merchandise[i][1] = sc.nextInt(); } int max = recursion(0, 0); System.out.println(max); } private static int recursion(int index, int weight) { if (weight > K) { return Integer.MIN_VALUE; } if (index == N) { return 0; } if (dp[weight][index] != -1) { return dp[weight][index]; } dp[weight][index] = Math.max(recursion(index + 1, weight), recursion(index + 1, weight + merchandise[index][0]) + merchandise[index][1]); return dp[weight][index]; } 안녕하세요 덕분에 강의 잘 듣고 있는 수강생입니다. 냅색 문제를 풀고 있는데, 최대 가능한 무게의 경우 100 (배낭 물품의 최대 개수) * 100,000(각 물건의 최대 무게) 로 생각보다 생성해줘야하는 배열의 크기가 크더라구요. 그래서 혹시 dp를 1차원 배열로 생성하면 어떻게 되는 지 궁금하여 1차원 배열로 해본 결과, 무게를 고려하지 않고 dp의 무게 갱신을 하게 되어 답이랑은 다르게 나오네요. 혹시 1차원 배열을 시도하려고 할 때 제가 놓치고 있는 부분이 있을까요?감사합니다.
안녕하세요 영한님 강의를 듣고있는 컴퓨터공학과 학생입니다. 스프링 입문부터 기본강의, HTTP 강의, MVC 1,2편을 모두 수강완료하고 이를 바탕으로 혼자서 간단한 홈페이지도 구현해본 상태입니다. 이번에 2학년으로 복학하는데 2-1 목표가 프론트엔드 친구와 함께 간단한 프로젝트를 하는게 목표입니다. 그런데 지금까지 들어본 강의를 보면 프론트엔드와의 협업보다는 백엔드 혼자서 로직도 구현하고, 뷰 템플릿도 작성하는 형태인거 같습니다. 최근에는 RestFul Api 기반으로 백엔드는 api만 작성하고, 프론트에서 뷰 템플릿까지 처리해주는걸로 알고 있습니다. 지금 가지고 있는 백엔드 지식은 영한님 강의를 통해 배운 내용정도입니다. DB나 API 설계방법, 배포 방법, 시큐리티 등등에 대해서는 모르는 상태입니다. 프론트엔드와 협업하기 위해서 어떤 강의를 듣는게 나을까요?
독하게 시작하는 c프로그래밍을 수강하고 있는 도중 필수 실습 문제들을 풀며 이렇게 공부하는 방식이 맞는 것일지 의문이 생겨 질문하게 되었습니다. 필수 실습 문제들을 풀 때 많이 고민하고 아무리 시간이 오래 걸려도 최대한 혼자서 풀려고 노력하는 편입니다. 하지만 잘 풀리지 않을 때는 강의에서는 간단하게 10줄 20줄에 끝나는 코드가 굉장히 복잡해지고 가독성이 굉장히 떨어지게 됩니다. 하지만 원하는 결과는 도출해냅니다. 이런 방식의 공부법이 올바른 것인지 궁금합니다.
질문탭으로 가야하는데 고민으로 작성했네요... 수정으로는 이동이 안되는데 이동 가능하다면 부탁드립니다.ㅠㅠ =========================================== AOP 수강 중 에러가 발생했는데 어디를 건드려야할지 잘 모르겠어서 문의 남깁니다. 우선 강의와 다른 환경으로 실습해보고 있어 조금씩 코드가 다릅니다. 먼저 에러 메세지는 아래 2개입니다. org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberController' defined in file [D:\dev\java\hello-spring\out\production\classes\hello\hellospring\controller\MemberController.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.hellospring.service.MemberService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.hellospring.service.MemberService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} 2번 메세지를 보게 되면 MemberService타입의 Qualifying 한 bean이 존재하지 않아 wiring 할수 없다는 에러인데. 스프링을 처음 해보는 입장에서는 그대로 따라 쳤는데 되지 않아 어떻게 더 수정해야할지 고민입니다. 관련된 코드 블럭을 첨부 드립니다. SpringConfig.Java package hello.hellospring; import hello.hellospring.repository.*; import hello.hellospring.service.MemberService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SpringConfig { // private EntityManager em; private final MemberRepository memberRepository; public SpringConfig(MemberRepository memberRepository) { this.memberRepository = memberRepository; } // public SpringConfig(EntityManager em) { // this.em = em; // } @Bean public MemberService memberService(){ return new MemberService(memberRepository); } // @Bean // public MemberRepository memberRepository(){ //// return new MemoryMemberRepository(); //// return new JdbcMemberRepository(dataSource); //// return new JdbcTemplateMemberRepository(dataSource); //// return new JpaMemberRepository(em); // } } MemberService.Java package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.JdbcMemberRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @Component public class MemberService { private final MemberRepository memberRepository; @Autowired public MemberService(MemberRepository memberRepository) { this.memberRepository = memberRepository; } /* * 회원가입 */ public Long join(Member member){ //같은 이름이 있느 중복 회원X validatedDuplicateMember(member); memberRepository.save(member); return member.getId(); } private void validatedDuplicateMember(Member member) { memberRepository.findByName(member.getName()) .ifPresent(m -> { throw new IllegalStateException("이미 존재하는 회원입니다."); }); } public List<Member> findMembers(){ return memberRepository.findAll(); } public Optional<Member> findOne(Long memberId){ return memberRepository.findById(memberId); } } application.properties spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.datasource.driver-class-name=org.h2.Driver spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=none spring.datasource.username=sa gradle plugins { id 'java' id 'org.springframework.boot' version '3.2.1' id 'io.spring.dependency-management' version '1.1.4' } group = 'hello' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '21' } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' // implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.h2database:h2' } tasks.named('test') { useJUnitPlatform() } MemberController.java package hello.hellospring.controller; import hello.hellospring.domain.Member; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import java.util.List; @Controller public class MemberController { private final MemberService memberService; @Autowired public MemberController(MemberService memberService) { this.memberService = memberService; } @GetMapping("/members/new") public String createForm() { return "members/createMemberForm"; } @PostMapping("/members/new") public String create(MemberForm form){ Member member = new Member(); member.setName(form.getName()); memberService.join(member); return "redirect:/"; } @GetMapping("members") public String list(Model model){ List<Member> members = memberService.findMembers(); model.addAttribute("members", members); return "members/memberList"; } } 감사합니다.
안녕하세요 프로젝트 관련해서 몇가지 조언을 얻고 싶어서 글을 작성하게 되었습니다. 현재 mvc2강의를 듣고 있고 해당 강의를 모두 수강하면 배웠던 것을 간단한 프로젝트를 통해 복습할 생각입니다. 저는 지금까지 프로젝트 경험이 없는 상태라 어떻게 설계를 해야할지 감이 잘 잡히지 않습니다. 강의를 들을 때는 이해가 잘 가지만 막상 만들려 하니 어려움이 생기네요.. 패키지 구조, 요청의 흐름, url 등 전체적인 설계를 할 때 도움을 받을 수 있는 책이 있을까요? (여러 권이어도 괜찮습니다.) +영한님 강의 잘 듣고 있습니다, 좋은 강의 만들어 주셔서 감사합니다!
안녕하세요 일단 지금 현재 MVC패턴에서 view 분리 하는 과정을 듣고 있는데요, 이 과정들은 결국 spring MVC가 되는 과정을 배우고 있는거잖아요? 강의를 보면서 과정도 대략 이해가 되고 코드작성도 잘 따라서 하지만, 강의를 보지 않고 다시 해보라고 하면 하지 못할 것 같습니다. 스스로 구현할 수 있을 만큼 완벽히 외우고 공부를 해야하는 건가요? 아니면 스프링MVC의 내부 그림을 이해하기 위한 정도의 흐름만 알면 되는건가요?
현재 자바 기본편까지 듣고 스프링 입문 강의 수강 중입니다. 학업에 있어 건의드릴 사항이 있는데 강의 소스코드가 있었으면 좋겠습니다. 스프링 로드맵을 따라 쭉 공부할 예정인데 이 강의의 다음 강의인 스프링 핵심원리 기본편에도 강의 소스코드가 없는 것 같아 말씀드립니다. 감사합니다.
안녕하세요. 현재 스타트업에서 근무하고 있는 개발자입니다. 백엔드로 포지션을 변경하고 JAVA 를 공부하기 시작했는데, 기존에 Javascript 와 Python 을 배워서, 백엔드 웹 개발 기술 강의부터 듣게 되었는데, 정말 잘한 선택같습니다. 제가 강의 커리큘럼에 대해서 질문 드리고 싶은 것은 2가지 인데, Javascript 의 비동기 처리 같은 기술은 몇 번째 강의에서 배울 수 있는지?? 그리고 대용량 트래픽을 직접 만들어보면서, 제가 만든 백엔드의 성능을 테스트 해보고 직접 튜닝도 해보고 싶은데, 이럴 땐 어떤 강의를 들으면 될까요?? 강의나 책 모두 추천 해주시면 감사하겠습니다.
그런데 정말 무슨 내용인지 잘 모르겠습니다. 자바 입문 교제 공부 를 끝내고 자바 웹 백엔드 공부를 하고 싶어서 찾아 보았는데 자바 웹 백엔드 공부를 하려면 스프링은 필수라고 하여서 수강 중인데 내용 이해가 잘 안됩니다. 이럴땐 일단 완강부터 한 후 에 다시 들어봐야 하나요 너무 힘듭니다.
자바 언어 공부 문법 전체적인 공부를 한번 마친 학생입니다. 스프링을 해야겠다 싶어 스프링 입문을 듣는데 듣는 도중 뭐지? 문법도 그렇고 잘 이해가 안가는 부분이 많습니다. 코드가 이해가 안가는 부분이 많기도 합니다. 이럴 경우 자바를 다시 한번 듣고 스프링으로 넘어 와서 들어야할까요?
국비교육으로 현재 학원에서 수강중입니다. 이제 곧 스프링을 배우게 되는데 학원에서는 이클립스 사용중이고 빌드툴은 메이븐으로 사용한다고 하네요 미리 강의 듣고 공부를 좀 하려고 했는데 학원 환경에 맞춰서 이클립스 메이븐으로 설정 맞추고 강의를 들으려고 보니까 패키지 구조도 약간 다르고 처음에 환경 설정하면서 오류잡는데만 이틀을 보냈습니다. 그리고 스프링부트 없이 하다보니 계속 조금씩 차이가 생기기도 하구요 그래서 그냥 혼자 공부할때만 인텔리제이+그래들로 강의랑 똑같이 맞추려고 하는데 괜찮을지 모르겠네요. 가능하면 학원환경에 우선적으로 맞추고 강의를 듣고싶었는데 생각보다 다른부분이 많아 고민입니다..타임리프 대신 jsp사용중이기도 하고 이렇게 해도 이클립스+메이븐사용하는 학원수업에 지장 없을까요? 아니면 어떻게든 이클립스+메이븐으로 가능한한 강의를 따라가는게 맞는지..
저번에 질문 드린 내용에 대해 답변해 주신 상속에 대해서 공부를 하고 나니 코드들이 훨씬 더 이해가 잘 가게 되었습니다 감사합니다!! 그런데 제가 또 고민되는 것이 있어서 질문 드리고 싶은데요 보통 제가 지금까지 다른 강의들은 강의를 듣고나서 그 강의에서 사용했던 코드를 가지고 비슷한 기능을 하는 다른 코드를 짜본다던가 작은 미니프로젝트를 만들어 본다던가 했었는데요 리액트 1부 강의의 커뮤니티에서 자바스크립트 파트 부분에 대한 질문과 선생님의 답변을 읽어 보았는데 앞부분은 리액트 사용 이유를 깨닫기 위한 목적이고 자바스크립트 부분에 너무 매몰되지 않았으면 하신다는 답변을 보았습니다. 제가 이제 리액트 부분을 수강하기 직전인데 자바스크립트 부분에서 사용한 코드를 가지고 다른 코드를 만들어 보고 리액트 부분을 수강해야할지 바로 리액트 부분을 수강하고 리액트 부분에서 사용한 코드를 가지고 리액트로 애플리케이션을 만들어 보는 미니 프로젝트를 해보는게 좋을지가 고민입니다... 자바스크립트 강의를 너무 꼼꼼하게 보려다보니 계획보다 시간이 엄청 오래 걸려서 또 그걸로 뭘 만들어 보려고 하면 리액트 파트가 더 늦어질것 같기도 하다는 생각도 들고 그래도 중요하면 해보는게 낫지 않겠나 하는 생각도 들어서 고민이 됩니다 자바스크립트 부분 강의가 제가 들었던 다른 자바스크립트 강의와는 다른 방식의 코드도 볼 수 있었고 얕게 알고 있었던 개념도 짚고 넘어갈 수 있어서 어렵긴했어도 재밌었고 유익했습니다!! 좋은 강의 감사드립니다