안녕하세요. 로 타입을 쓰는 팀원에게 어떻게 제네릭을 쓰자고 잘 설득할지 고민입니다. 20년, 10년 전의 레거시 코드를 유지보수하고 있습니다. 현재 사용중인 JDK는 1.6인데요. 그러면 객체 생성 시 할당하는 곳에서 생략하는 건 못해도 제네릭 자체는 쓸 수 있잖아요. 로 타입은 기본이요, 제네릭을 List<Map> 까지만 쓴다거나, 아예 그냥 자료구조를 따로 만들어서(?) 사용하더라고요. 그래서 최근에 제네릭을 쭉 여러 서적과 강의를 보면서 공부하고 있긴 한데, 거대한 레거시 코드라 한 번에 고칠 수는 없고... 그렇다고 팀원에게 강요하는 건 그릇된 개선이라고 봅니다. 어떻게 하면 제네릭을 잘 도입할 수 있을까요? 제가 공부를 정말~ 많이 하는 방법밖에 없는 걸까요? 제네릭 한 번 쓰면 코드의 양이 확 줄텐데 말이죠...그러면 유지보수도 편해지고 좋을텐데... 🥺
안녕하세요. 믿고 결제 했습니다!! 이제 막 결제를 한 단계인데요, 인프런에 올리신 강의만 다 들으면 될까요? 아니면 유튜브에 올려두신 영상들도 같이 봐야할까요? 혹시 인프런 강의랑 겹치지는 않지만 도움이 되는 유튜브의 재생목록?? 그런 게 따로 있을까 싶어서 묻습니다. 기존에 무료로 올리신 것도 좋은 영상이 많을텐데 시간이 널널하지 않아서 어떻게 참고할지 고민글 남깁니다!
log 데이터베이스가 log_연_월로 매월 스키마를 자동 생성하여 로그를 기록 및 보관하고 있습니다. (ex) 2024.03월 >> log_2024_03(db) >> application_log(table), system_log(table) 2024.04월 >> log_2024_04(db) >> 테이블 구조는 동일 (새로운 연.월이 오면 자동으로 생성) .... 위에 대한 데이터베이스 구조에서 3월과 4월의 system_log 내용을 조회하고 싶다면? (조회하고 싶은 날짜는 사용자의 조건에 따라 달라질 수 있음.) mybatis에서 mapper.xml 에 쿼리를 직접 작성하여 해결 가능하지만, jpa로는 위와 같은 문제를 어떤식으로 해결할 수 있는지 조언 부탁 드립니다.
안녕하세요 선생님 강의에 도움을 많이 받고 있습니다! 다름이 아니라 반복되는 로직들을 HandlerMethodArgumentResolver 를 통해서 처리한 것에 대해서 궁금증이 하나 생겼는데요. 해당 RequestHeader 에서 값을 검증하거나, 변환하는 기능을 HandlerMethodArgumentResolver 외에도 유틸 메서드로도 동일한 처리가 가능할 것 같은데 HandlerMethodArgumentResolver 를 사용하신 이유에 대해서 알 수 있을까요? 어떠한 특정상황에서 사용하는 것인가? 하는 궁금증이 있어서 여쭤보게되었습니다. 감사합니다!
제가 스프링시큐리티는 5.x 대 버전은 예전 선생님강의로 공부를 하다가, 이번에 선생님이 6.x 버전 강의올리셧길래 바로 구매했습니다. 그런데 제가 곧 새로운 프로젝트를 들어가는데 새로운버전의 시큐리티를 적용할려고 하는데 강의양이 무지막지하더라구요.. ㅎㅎ 그래서 어느정도 시큐리티 개념은 있으니 실정프로젝트부터 강의들어도 새로운버전의 시큐리티를 프로젝트에 적용할 수 있을까요?
로그에 traceId, spanId 모두 잘 찍히는데 브라우저의 zipkin에서 traceId로 조회를 하면 no trace가 뜨네요. 스프링부트 3에 맞춰서 깃허브에 올려주신 자료 참조해서 디펜던시 맞게 설정하고 yml에도 올려주신 자료대로 수정했는데 이런 문제가 생기면 어떤 부분이 잘못된 걸까요?
자바입문~자바 중급 1차 강의까지 듣고 프레임워크,제네릭은 스스로 공부한 다음 코테 문제들 풀어보면서 자바에 조금 익숙해진 다음 영한님 스프링 강의 막 듣기 시작했습니다. 근데 코드 분석의 거의 안되더라구요. 분석이 안되니 들었던 내용도 까먹은 것 같은 느낌이 들고 혹시 먼저 들어야 할 강의를 놓친것 아닐까 아직 스프링 강의를 들을때가 아닌가 이런 생각이 들더라구요 jdbcTemplate.query("select * from member where id = ?", memberRowMapper()); 같은 곳에서는 query가 뭐지? "select * from member where id = ?"은 뭐지 물음표가 왜 나온거지? memberRowMapper는 왜 만들어진거지? public Member save(Member member) { SimpleJdbcInsert jdbcInsert = new SimpleJdbcInsert(jdbcTemplate); jdbcInsert.withTableName("member").usingGeneratedKeyColumns("id"); Map<String, Object> parameters = new HashMap<>(); parameters.put("name", member.getName()); Number key = jdbcInsert.executeAndReturnKey(new MapSqlParameterSource(parameters)); member.setId(key.longValue()); return member; } jdbcInsert는 갑자기 뭐지? 등등 이런 코드에 대한 분석이 안되니까 먼저 들어야할 강의가 있는 데 안들어서 코드에 대한 분석이 안되는건지 혹시 뒤에 기본편 강의에서 자세히 설명해주시니 그냥 이런게 있구나 듣고 뒤에 강의로 넘어가는 게 맞을지 막 생각이 뒤죽박죽해지네요. 혹시 방향성을 잡아주실 수 있을까요?
안녕하세요 ! 강의 잘보고있습니다. 결제 관련된 강의가 거의 없던데 참고하는데 도움이 많이됩니다. 조금 빠른감이 있고 아직 제실력으로는 이해하기 어려운부분도 많지만 끝까지 완강해보려고합니다. 궁금한점은 이 결제 웹서비스는 web 패키지를 따로 만들어서 분류하던데요 혹시 mobile 과는 어떤 차이가 있는지 궁금합니다.
안녕하세요 백엔드 독학 시 포트폴리오 준비 및 공부 방향을 어떻게 해야 할지 방향이 잡히지 않아 고수분들의 의견을 청하고자 글을 작성하게 되었습니다. 저는 백엔드 개발자를 지망하고 있고 인프런에서 강의를 들으면서 공부하고 있습니다. 현재는 자바 강의 및 김영한 님 스프링, JPA, QueryDSL 강의 및 데이터베이스 강의를 수강하였고 개인적으로 나름 포트폴리오? 하나 만들어보고자 도서 대출 반납 및 게시판 CRUD를 할 수 있는 것을 만들었습니다.(백엔드 부분 자바 코드) 화면도 만들기는 했지만 GPT 선생님의 도움을 빌려 일단 화면이 보일 수 있을 정도만 해놨습니다. 이후 협업을 경험해 보고 싶은데 현재 올라와 인프런에서 사이드 프로젝트 자리가 있으면 지원하고 있지만 뛰어난 분들이 너무 많아 참여가 힘든 것 같습니다. 일단 현재는 docker를 공부 중이며 redis, aws를 공부하려고 합니다. 현재 취업을 위해 팀 프로젝트를 하고 싶은데 어떻게 참여할 수 있을지, 많이 부족하다면 현재 어떤 방향으로 더 공부를 진행해야 할지 방향을 잡기가 힘들어 글을 쓰게 되었습니다. 중소기업에 취직하기 위해서는 JSP을 요구하는 곳도 많아 보이는데 html, css, js를 활용해서 화면도 만들 정도로 공부해야 하는 것 인지도 질문드리고 팀플 구하는 방법 및 공부 방향 및 어떤 것을 더 추가적으로 공부하면 좋을지 댓글 부탁드립니다! 감사합니다. 많은 분들께서 댓글 주시면 경청하도록 하겠습니다!
안녕하세요 3년차 백엔드 개발자 입니다! 주로 기술 학습은 인강/구글링을 통해 해왔는데, 더 깊이있는 학습을 위해서 어떻게 학습을 하는게 좋을까요? 예를 들어 트랜잭션의 내부 원리와 서버에 요청을 받는 순간부터 응답으로 보내는 과정을 꼼꼼하게 알고싶으면 디버깅하면서 학습하는 방법밖에는 없을까요?
안녕하세요. 강의 잘 들었습니다. 이제 강의 들은 내용을 참고하여 현재 개발중인 서버의 부하 테스트를 진행해보려고 하는데 고민이 있어서 질문을 남김니다. 현재 하려는게 spike test인데 vUsers 몇명에 duration을 어떻게 설정하고 해야할지 감이 안옵니다. 현재 사용하고 있는 툴은 nGrinder이고 시나리오 테스트를 통해서 진행하려고 하는데 아직 초보 개발자라 주변에 물어볼곳도 없고 하여 이렇게 글을 남깁니다. 보통 vUsers를 어떻게 잡아야할까요? 그냥 점진적으로 증가시키는 부하 테스트를 통해서 찾은 최대 수용 유저 수를 가지고 해야할까요? 그리고 시나리오 테스트 하려는 서비스가 결제부분인데 현재 PG사 기능을 mock server처리 하였는데 실제로 이렇게 진행하는게 맞을지도 궁금합니다. 아직 초보 개발자라 부족한게 많은데... 답변 부탁드립니다 ㅠㅠ
프로젝트 설정: Java 17 (amazon correto 17), Gradle-Groovy, Spring Boot 3.2.3 저도 다른 분들과 비슷하게 위의 OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 경고 메시지가 발생했습니다.물론 경고 메시지여서 치명적이지 않고 무시하도 된다고 하셨지만, 빨간 메시지가 꺼림찍하여 해결방법을 찾아보던 중 아래의 두 글을 읽고 해결방법을 찾긴 했는데, 제가 맞게 설정한 것인지 정확하게 모르겠어서요. 제가 맞게 해결한 건가요? JVM 아규먼트 설정만 해도 경고 메시지가 발생하지 않아서, 병렬 실행 설정은 주석 처리 해놨는데, 병렬 실행 설정도 해야 하는 걸까요? 도움 부탁드립니다..ㅠㅜ 참고한 글: https://github.com/mockito/mockito/issues/3111 https://stackoverflow.com/questions/77512409/adding-xshareoff-jvm-arg-break-jacoco-maven-plugin-setup 설정한 build.gradle 파일 tasks.named('test') { useJUnitPlatform() jvmArgs '-Xshare:off' // JVM 아규먼트 설정 // maxParallelForks = Runtime.runtime.availableProcessors() // 병렬 실행 설정 }
Q. 실제 개발시에는 메서드가 하나 추가될 때마다 테스트해줘야 하는 것 맞을까요? 강의 상에서는 Order, OrderItem 코드 작성하시는 순서가 되게 유기적으로 매끄럽게 구성되어있는데요. 실제 코드 작성할 때는 실수도 나올 수 있고, 특정 메서드에 어느 클래스에 위치해야하는 게 좋을지에 대한 고민같은 것이 동반될 것 같다는 생각이 들 것 같다는 생각이 듭니다(실제로도 그래왔던 것 같구요). 좋은 강의를 수강하다보니 새로운 상황을 혼자 맞이할 때 막막한 순간에 어떤 마음가짐을 가져야할 지 고민이 되어 질문드립니다. p.s) 지금은 열심히 완강을 향해 달려가고 있는 중이라 강의평을 남기지 못하고 있는데, 여유가 되면 감사 인사 꼭 드리도록 하겠습니다. 항상 고마워요 영햔님....
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차원 배열을 시도하려고 할 때 제가 놓치고 있는 부분이 있을까요?감사합니다.