이번 장에서 서버액션에 관한 내용을 들었는데 유지보수 측면에서 이 기술이 좋은 방법일까 하는 의문이 들었습니다! 아래는 이런 경우가 생기지 않을까 해서 적어둔 내용입니다. 서버액션으로 프론트에서 "a를 오른쪽으로 옮겨주세요" 라는 api를 백엔드에 만들었습니다. 그런데 기존의 백엔드 api에선 a는 왼쪽으로 옮기는 스크립트를 만들어놨는데 서버액션으로 인해 백엔드 서버엔 예정에 없던 동작이 발생했습니다. 그러다 나중에 a를 오른쪽으로 옮긴것에 대해 문제가 발생해서 백엔드 코드를 하루 꼬박 세면서 뒤져봤는데 오류를 못 찾았습니다 그런데 알고보니 프론트에서 서버액션으로 보내는 a를 오른쪽으로 옮겨라는 코드 때문에 발생한 문제였습니다. 이런 상황이 실무에서 발생할거 같다는 생각이 들어서 이 서버액션 기능을 실제로도 많이 사용하는지 궁금합니다!!
로그는 잘 나가는 것 같은데 데이터베이스를 확인해보면 테이블이랑 데이터가 안 들어가는 것 같습니다 ㅠ 그리고 ddl-auto 모드도 none 으로 바꿔봐도 계속 같은 로그가 나옵니다.(테이블 생성 및 drop) 로그 첨부할게요. > Task :compileJava UP-TO-DATE > Task :processResources UP-TO-DATE > Task :classes UP-TO-DATE > Task :compileTestJava UP-TO-DATE > Task :processTestResources UP-TO-DATE > Task :testClasses UP-TO-DATE 19:41:14.516 [Test worker] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [jpabook.jpashop.MemberRepositoryTest]: MemberRepositoryTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration. 19:41:14.568 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration jpabook.jpashop.JpashopApplication for test class jpabook.jpashop.MemberRepositoryTest 19:41:14.668 [Test worker] INFO org.springframework.boot.devtools.restart.RestartApplicationListener -- Restart disabled due to context in which it is running . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.4.0) 2025-06-16T19:41:14.814+09:00 INFO 56122 --- [ Test worker] jpabook.jpashop.MemberRepositoryTest : Starting MemberRepositoryTest using Java 20.0.1 with PID 56122 (started by sungwoo in /Users/sungwoo/Documents/dev/study/online-lecture/inflearn/jpa/2.jpa-application) 2025-06-16T19:41:14.815+09:00 INFO 56122 --- [ Test worker] jpabook.jpashop.MemberRepositoryTest : No active profile set, falling back to 1 default profile: "default" 2025-06-16T19:41:15.139+09:00 INFO 56122 --- [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2025-06-16T19:41:15.150+09:00 INFO 56122 --- [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 6 ms. Found 0 JPA repository interfaces. 2025-06-16T19:41:15.337+09:00 INFO 56122 --- [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2025-06-16T19:41:15.435+09:00 INFO 56122 --- [ Test worker] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection conn0: url=jdbc:h2:mem:cb23765c-56b9-40bc-ba72-8f1435f049ba user=SA 2025-06-16T19:41:15.436+09:00 INFO 56122 --- [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2025-06-16T19:41:15.470+09:00 INFO 56122 --- [ Test worker] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2025-06-16T19:41:15.500+09:00 INFO 56122 --- [ Test worker] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.6.2.Final 2025-06-16T19:41:15.517+09:00 INFO 56122 --- [ Test worker] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled 2025-06-16T19:41:15.661+09:00 INFO 56122 --- [ Test worker] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer 2025-06-16T19:41:15.706+09:00 INFO 56122 --- [ Test worker] org.hibernate.orm.connections.pooling : HHH10001005: Database info: Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)'] Database driver: undefined/unknown Database version: 2.3.232 Autocommit mode: undefined/unknown Isolation level: undefined/unknown Minimum pool size: undefined/unknown Maximum pool size: undefined/unknown 2025-06-16T19:41:16.066+09:00 DEBUG 56122 --- [ Test worker] org.hibernate.SQL : create global temporary table HTE_member(rn_ integer not null, id bigint, username varchar(255), primary key (rn_)) TRANSACTIONAL 2025-06-16T19:41:16.126+09:00 INFO 56122 --- [ Test worker] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) 2025-06-16T19:41:16.132+09:00 DEBUG 56122 --- [ Test worker] org.hibernate.SQL : drop table if exists member cascade 2025-06-16T19:41:16.133+09:00 DEBUG 56122 --- [ Test worker] org.hibernate.SQL : drop sequence if exists member_seq 2025-06-16T19:41:16.135+09:00 DEBUG 56122 --- [ Test worker] org.hibernate.SQL : create sequence member_seq start with 1 increment by 50 2025-06-16T19:41:16.137+09:00 DEBUG 56122 --- [ Test worker] org.hibernate.SQL : create table member (id bigint not null, username varchar(255), primary key (id)) 2025-06-16T19:41:16.140+09:00 INFO 56122 --- [ Test worker] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2025-06-16T19:41:16.239+09:00 WARN 56122 --- [ Test worker] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 2025-06-16T19:41:16.368+09:00 WARN 56122 --- [ Test worker] ion$DefaultTemplateResolverConfiguration : Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) 2025-06-16T19:41:16.431+09:00 INFO 56122 --- [ Test worker] jpabook.jpashop.MemberRepositoryTest : Started MemberRepositoryTest in 1.764 seconds (process running for 2.307) 2025-06-16T19:41:16.749+09:00 DEBUG 56122 --- [ Test worker] org.hibernate.SQL : select next value for member_seq 2025-06-16T19:41:16.808+09:00 DEBUG 56122 --- [ Test worker] org.hibernate.SQL : insert into member (username,id) values (?,?) Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 2025-06-16T19:41:16.819+09:00 INFO 56122 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2025-06-16T19:41:16.819+09:00 DEBUG 56122 --- [ionShutdownHook] org.hibernate.SQL : drop table if exists member cascade 2025-06-16T19:41:16.820+09:00 DEBUG 56122 --- [ionShutdownHook] org.hibernate.SQL : drop sequence if exists member_seq 2025-06-16T19:41:16.821+09:00 INFO 56122 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2025-06-16T19:41:16.822+09:00 INFO 56122 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. > Task :test [Incubating] Problems report is available at: file:///Users/sungwoo/Documents/dev/study/online-lecture/inflearn/jpa/2.jpa-application/build/reports/problems/problems-report.html Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.11.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD SUCCESSFUL in 3s 5 actionable tasks: 1 executed, 4 up-to-date 오후 7:41:16: Execution finished ':test --tests "jpabook.jpashop.MemberRepositoryTest"'.
이번에 시험보고 탈락을 한 수험자입니다. 답안 작성시 풀이과정과 답을 함께 작성해야 한다고 해서 적잖게 당황하여 시간이 모자랐었는데 결국 떨어졌네요. 제 질문은 풀이과정을 반드시 써야하나요? '답' 칸을 제외한 나머지 공간에 동그라미와 밑줄을 치며 낙서를 해도 되나요? 풀이과정을 쓸 수 있는 공간 자체 부족해 보였는데 답답합니다. 속시원히 누가 얘기좀 해주면 좋겠습니다.
[3줄 요약] 비전공자로 10년 전 JSP, PHP 기반 개발 경험이 있으며, 현재는 헤드헌터로 활동 중입니다. React + Java(Spring) + MongoDB 기반으로 헤드헌터 업무에 활용할 수 있는 웹/모바일 플랫폼을 직접 개발하고자 합니다. 기술 공백과 최신 스택(Git 등) 부족으로 학습 방향 및 인프런/부트캠프 강의 추천이 필요합니다. [본문] 안녕하세요. 현재 40세, 비전공자(경영학과)이며, 현재는 헤드헌터로 활동 중입니다. 12년 전 독학과 오프라인 Java 강의(6개월) 수강 후 JSP 기반 웹 개발을 약 6개월, 또한 웹호스팅 업체에서 리눅스/윈도우 서버 운영과 PHP 유지보수를 약 1년간 경험했습니다. 퇴사 후 HTML5, CSS3, PHP, MySQL 기반으로 1인 창업 프로젝트(플랫폼)를 개발 경험도 있으나, 프론트엔드 실무 한계로 인해 학원과 인강으로 보완했지만 실무 수준에 도달하기는 어려웠습니다. 이후 창업을 접고 현재는 헤드헌터 일을 8년째 하고 있습니다. 최근 AI 도구(GPT, CURSOR 등)로 인해 1인 개발의 장벽이 많이 낮아졌다고 느꼈고, 사이드프로젝트로 다시 한번 플랫폼을 만들어보자는 생각에 도전하고 있습니다. 우선 서버는 아마존이나 네이버 등 1년 동안 무료로 제공하는 클라우드를 생각하고 있습니다. [프로젝트 방향] 목표: 헤드헌터 업무에 활용 가능한 게시판 중심의 웹 & 모바일 플랫폼 프론트엔드: React 백엔드: Java(Spring), 일부 Python (데이터 분석용) DB: MongoDB (NoSQL 기반) 기능: 기능: 엑셀 데이터 업로드/필터링, 검색, 태그, 동료와 공유 및 협업 플랫폼: PC 웹 + Android 우선 대응 [현재 느끼는 기술적 한계] 10년 이상의 개발 공백 → 신규 기술 감각이 거의 없음 Git, 협업 툴, 배포 등 실무적인 스택을 제대로 써본 적 없음 과거 창업 경험 덕에 HTML/CSS/JS 기본 흐름은 이해 주당 약 20시간 정도 학습 및 개발 시간 확보 가능 [현재 계획 중인 학습 우선순위] 모든 강의를 다 듣기엔 시간 제약 이 있으므로, 아래와 같은 것부터 선택적으로 수강 하려고 합니다. React 중심 프론트엔드 학습 – 프로젝트 기반으로 실습 위주 Spring 백엔드 학습 – REST API + MongoDB 연동 포함 Git, 배포, 협업 도구 등 실무 환경 익히기 Python 기초 + 데이터 분석 활용 (선택적) (Node.js나 웹 자동화는 현재는 후순위입니다) 시간상 모든 강의를 다 들을 수는 없어, 섹션별로 필요한 내용만 골라 수강할 수 있는 방식이 있는지 궁금합니다. 또한 혼자서 진행하는 프로젝트이기에, 코드 리뷰나 피드백 커뮤니티가 병행되는 부트캠프가 있다면 병행하고 싶습니다. 비슷한 경험을 하신 분이나, 인프런/코드잇 등에서 유익했던 강의나 커뮤니티가 있다면 조언 부탁드립니다 감사합니다. #사이드프로젝트 #React #JavaSpring #MongoDB #프론트엔드 #백엔드 #풀스택도전 #개발공백극복 #IT학습로드맵 #인프런강의추천 #코드잇추천
안녕하세요 선생님. 항상 잘 듣고 있습니다. 다름이 아니고 2024년 3회 기출문제 강의가 재생이 안 됩니다. 15일, 16일 다 시도해봤는데 15일은 기출문제 설명 들어가면서 재생이 안 되고 16일은 아예 재생 자체가 안 됩니다. ㅜㅜ 확인 한 번만 부탁드리겠습니다. 감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 이렇게 코드 작성하는 부분에서도 설정차이가 있습니다 선생님과 같은 설정이였다가 갑자기 제가 잘못 눌러 밑과같이 변경되었습니다. 혹시 원래대로 설정할수 있을까요?
안녕하세요 쿠케님. 우선 좋은 강의 감사합니다. 다름이 아니라 댓글 무한 depth - 테이블&구현 설계에서 unique index를 작성하는 부분이 나오는데 unique index 대신 index로 구현하고 table 생성 시 path에 unique 제약을 걸어도 효과가 같을지 궁금합니다.
a.md 파일 만들고 u에서 a 이후 첫 커밋하는 건 잘 따라했는데요. 이후 두 번째 커밋 하는 방법 보여주실 때 a.md 파일 수정하니까 강사님 화면에서는 m으로 바뀌더라구요. 근데 저는 아무리 a.md 를 수정해도 m으로 바뀌지 않아서.. 챗지피티 통해 알아보니까, a.md 수정 후 "저장(ctrl+s)" 해야 m으로 바뀌는 거였군요.. 강사님은 자동 저장이 되어 있어서 그런걸까요?
관련 내용: 강의: 55. 해시 알고리즘6 - 해시 충돌 구현 21:56 pdf: 6. 컬렉션 프레임워크 - 해시(Hash) 24P 정리 부분 해시 인덱스를 사용하는 경우 데이터 저장을 할 때 평균 시간복잡도가 O(1) 이라고 설명. 의문점 private static void add(LinkedList<Integer>[] buckets, int value) { int hashIndex = hashIndex(value); LinkedList<Integer> bucket = buckets[hashIndex]; //O(1) if (!bucket.contains(value)) { //O(n) bucket.add(value); } } 위와 같이 항상 bucket이 contains(..) 메서드를 호출하여 중복된 값이 있는지 확인하므로 O(n)의 시간 복잡도가 소요됩니다. 그래서 저는 항상 데이터 저장을 할 때는 O(n)으로 계산해야 한다고 생각했습니다. 강의에서 말씀하신 내용은 이상적으로 해시 충돌이 별로 발생하지 않는 상황(그리고 구체적인 구현은 신경쓰지 않는 상황)이라 가정하고 O(1)이라고 한 것일까요?