👩🏻‍💻 Springframwork 실무 : JSP에서 JavaScript로 데이터 토스 ! ObjectMapper로 해결한 이야기
·
🌱 𝐅𝐫𝐚𝐦𝐞𝐰𝐨𝐫𝐤
배경 및 문제 정의Spring MVC 프로젝트에서 JSP 화면의 JavaScript에 서버 데이터를 전달해야 하는 상황이 생겼다. Controller에서 Model에 Java 객체를 담아 넘겼는데, JavaScript에서 이 데이터를 인식하지 못하는 문제가 발생했다.Java 객체를 그대로 Model에 담으면 JavaScript는 [MemberDto@abc123] 같은 toString() 결과만 볼 수 있었고,이를 JSON 형태로 변환해야 정상적으로 사용할 수 있다는 걸 알게 됐다.결국 Jackson 라이브러리의 ObjectMapper를 활용해 Java 객체를 JSON 문자열로 변환하는 방식으로 해결했다. 최종 해결 요약 Jackson 라이브러리의 ObjectMapper.writeVa..
Inflearn ✅ 내가 하는 공부 로드맵 (feat. 2년 차 주니어가 만든 두 가지 학습 로드맵 이야기)
·
☃︎ 𝐃𝐢𝐚𝐫𝐲
왜 로드맵을 두 개나 만들었나작년 말부터 다시 공부를 시작하면서 고민이 하나 생겼다.강의만 들을까, 책을 읽을까. 둘 다 장단점이 있었다.강의는 개념을 빠르게 이해할 수 있고 코드를 직접 보며 따라 칠 수 있다는 장점이 있다.특히 김영한 선생님 강의는 실습 위주라 손에 익히기 좋다.하지만 깊이 있는 내용은 책만한 게 없더라.특히 Real MySQL이나 이펙티브 자바 같은 책은 실무에서 막힐 때마다 찾아보는 레퍼런스가 되었다.그래서 두 개를 만들었다.강의 중심 로드맵: 빠르게 실무 감각을 익히고 싶을 때책+강의 로드맵: 제대로 깊게 공부하고 싶을 때 강의 로드맵 (21개 코스)강의 로드맵 보러가기이건 순수하게 강의만으로 구성했다.인프런에서 김영한 선생님 강의를 중심으로 Java 기초부터 Spring ..
👩🏻‍💻 Springframwork 실무 : 레거시 API 성능 개선기(feat. JPA) / N+1 문제와의 3라운드 사투🥊
·
🌱 𝐅𝐫𝐚𝐦𝐞𝐰𝐨𝐫𝐤
⟡ 배경·문제 정의회사에 입사하고 3개월쯤 지났을 때, 선배가 "이 API 좀 느린데 확인해볼래?"라며게시판 조회 API 하나를 던져주었다.로컬에서 테스트해보니 응답시간이 3초. 데이터가 겨우 100건인데 말이다.쿼리 로그를 켜보니 SELECT 문이 101번 실행되고 있었다.전형적인 N+1 문제였다.fetch join을 적용하면 되겠지 싶었지만, 현실은 그렇게 호락호락하지 않았다.결국 fetch join → @EntityGraph → @BatchSize + DTO 변환까지3번의 시도 끝에 응답시간을 300ms로 줄일 수 있었다. ⟡ 최종 해결 요약최종적으로 선택한 방식은 다음과 같다:Post 엔티티: @BatchSize(size = 100) 적용Service 계층: DTO 변환으로 엔티티 ..
👩🏻‍💻 Springframwork Mig 기록 : 레거시 프로젝트에 단위 테스트 도입하기(feat.실패하고 배운 이야기)
·
🌱 𝐅𝐫𝐚𝐦𝐞𝐰𝐨𝐫𝐤
2026년 새해가 밝았다.오늘도 난 퇴근 후 공부를 하고 난뒤, 업무를 하면서 겪었던 내용을 정리해 포스팅을 한다😳누구에겐 오늘이 뜻깊고 한해를 마무리하는 날 이지만, 나에겐 그리 특별하지 않다. 그냥 매일 똑같은 하루 같은 느낌이랄까.그래도 이 글을 읽는 분들은 행복한 날이 되길 바래본다❤️다들 새해 복 많이 받으세요🫶 ⟡ 인트로신입으로 입사해 처음 맡은 고도화 프로젝트에서 가장 큰 불안 요소는 테스트 코드가 전혀 없는 레거시 시스템이었다.코드를 수정할 때마다 전체 애플리케이션을 실행해서 수동으로 확인해야 했고, 사이드 이펙트를 발견하는 건 운에 맡겨야 했다.단위 테스트를 도입하려고 했지만 처음에는 방법을 몰라서 여러 번 실패했다.전체 Spring 컨텍스트를 로딩하는 느린 테스트,..
👩🏻‍💻 Springframwork Mig 기록 : Spring Boot에서 Jasypt 자동 암복호화가 동작하는 원리
·
🌱 𝐅𝐫𝐚𝐦𝐞𝐰𝐨𝐫𝐤
⟡ 개요회사에서 담당하고 있는 서비스의 마이그레이션 작업을 높은 완성도로 마무리하기 위한 목적과,퇴근 후 별도로 진행하는 학습 내용들을 스스로 정리하고 축적하기 위해 작성하는 기록입니다.초보 개발자 관점에서 정리하는 흐름이지만, 기술적 오류나 더 나은 방향이 있다면언제든지 피드백을 제안해 주시면 적극 반영하겠습니다.🫶 ⟡ 설정 파일 암호화는 왜 필요한가 ? 프로젝트를 진행하다 보면 application.yml에 DB 비밀번호나 API 키 같은 민감 정보를 작성하게 된다.문제는 이 파일을 Git에 커밋하는 순간, 저장소에 접근할 수 있는 모든 사람이 운영 환경의 접속 정보를 볼 수 있다는 점이다.Private 저장소라 해도 퇴사자, 협력사 직원, 내부 개발자 등 접근 권한을 가진 사람이 많으면..
👩🏻‍💻 Springframwork Mig 기록 : @RequiredArgsConstructor와 의존성 주입, 언제 안전하고 언제 위험한가
·
🌱 𝐅𝐫𝐚𝐦𝐞𝐰𝐨𝐫𝐤
⟡ 주제 정의 Spring 프로젝트에서 @RequiredArgsConstructor를 사용한 생성자 주입은 일반적인 패턴이다.하지만 이 방식이 모든 상황에서 안전한 것은 아니다.특히 HttpServletRequest 같은 request-scoped 빈을 주입할 때는 계층별로 다른 결과가 나타난다.이 글에서는 Spring 공식 문서를 기반으로 실무에서 마주치는 케이스들을 분석한다. ⟡ Spring 공식 문서의 의존성 주입 방식 Spring은 세 가지 의존성 주입 방식을 제공한다.// 1. 생성자 주입 (Constructor Injection)private final UserRepository userRepository;// 2. 필드 주입 (Field Injection)@Autowire..
👩🏻‍💻 Springframwork Mig 기록 : 폐쇄망 환경에서 Gradle 빌드 설정 🪏삽 질기
·
🌱 𝐅𝐫𝐚𝐦𝐞𝐰𝐨𝐫𝐤
⟡ 인트로신입으로 입사해 처음 맡은 고도화 프로젝트에서 폐쇄망 환경을 접했다.일반적인 개발 환경과 달리 외부 인터넷 연결이 차단된 상태에서 Gradle 빌드를 설정해야 했고,처음에는 단순히 설정만 바꾸면 될 줄 알았으나 의존성 관리의 복잡성을 직접 체감했음😳수동 다운로드부터 캐시 복사까지 여러 시행착오를 거쳐 최종적으로 로컬 Maven 저장소 기반의 안정적인 빌드 환경을 구축했는데이 글은 그 과정에서 겪은 실패와 해결 방법을 기록한 것이다. . ⟡ 개발환경AS-ISTO-BEJDK 1.7JDK 17Maven 2.9Gradle 8.8Spring Framework 4.2.5 (XML 기반)Spring Boot 3.3.2MyBatis 3.3.0MyBatis 3.5.13Tomcat 7E..
👩🏻‍💻 Springframwork Mig 기록 : 레거시 코드 고도화 작업 계획
·
🌱 𝐅𝐫𝐚𝐦𝐞𝐰𝐨𝐫𝐤
⟡ 개요 회사에서 담당하고 있는 서비스의 마이그레이션 작업을 높은 완성도로 마무리하기 위한 목적과,퇴근 후 별도로 진행하는 학습 내용들을 스스로 정리하고 축적하기 위해 작성하는 기록입니다.초보 개발자 관점에서 정리하는 흐름이지만, 기술적 오류나 더 나은 방향이 있다면언제든지 피드백을 제안해 주시면 적극 반영하겠습니다.🫶 ⟡ 개발환경AS-ISTO-BEJDK 1.7JDK 17Maven 2.9Gradle 8.8Spring Framework 4.2.5 (XML 기반)Spring Boot 3.3.2MyBatis 3.3.0MyBatis 3.5.13Tomcat 7Embedded TomcatMariaDBJSP, EL, JSTL 기반 SSR(Server Side Rendering)HTML, CSS, J..
👩🏻‍💻 Springframwork Mig 기록 : Springframework와 SpringBoot의 주요 설정파일 기능 정리
·
🌱 𝐅𝐫𝐚𝐦𝐞𝐰𝐨𝐫𝐤
⟡ 개요 회사에서 담당하고 있는 서비스의 마이그레이션 작업을 높은 완성도로 마무리하기 위한 목적과,퇴근 후 별도로 진행하는 학습 내용들을 스스로 정리하고 축적하기 위해 작성하는 기록입니다.초보 개발자 관점에서 정리하는 흐름이지만, 기술적 오류나 더 나은 방향이 있다면언제든지 피드백을 제안해 주시면 적극 반영하겠습니다.🫶 ⟡ 개발환경AS-ISTO-BEJDK 1.7JDK 17Maven 2.9Gradle 8.8Spring Framework 4.2.5 (XML 기반)Spring Boot 3.3.2MyBatis 3.3.0MyBatis 3.5.13Tomcat 7Embedded TomcatMariaDBJSP, EL, JSTL 기반 SSR(Server Side Rendering)HTML, CSS, Ja..
⛔️ Could not transfer artifact ... Received fatal alert: protocol version & maven-surefire-plugin | Spring레거시&Maven&JDK1.7 Build오류 ⛔️
·
⚠️ 𝐄𝐫𝐫𝐨𝐫
👀 개요업무에서 사용하던 IDE는 원래 이클립스였다.내가 담당하는 서비스와 연관된 몇몇 서비스들이 먼저 고도화를 진행하면서, 일부는 VSCode로 넘어갔다.이번에 내 담당 서비스도 고도화를 진행하게 되었고, IDE 역시 VSCode로 전환하게 되었다.사실 나는 그동안 이클립스의 무거움과 잦은 오류 때문에 불편함을 많이 겪었는데, 특히 Git 연결 후 자꾸 실패하거나 거부되는 문제가 있었다.참다못해 혼자 IntelliJ ultimate로 환경을 바꾸고, 가이드 문서까지 작성해 둔 상태였다.혼자 구성하면서 가이드까지 정리하는 과정이 꽤 힘들었다.그런데 고도화 작업을 담당하는 팀에서 기존 소스를 분석하기 위해 환경 구성이 필요했는데내가 만든 문서는 인텔리제이 기준이었고 해당 팀에서는 인텔리제이 유료 버전을..
주니어 개발자 : Python💡Excel 파일에서 필요한 데이터 추출, 병합하기
·
📖 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞/Pʏᴛʜᴏɴ
이전 포스팅 주니어 개발자 : 💡 서버 별 로그 .txt 파일 병합, Excel 파일 변환Log파일 병합 준비 Apache에서 찍어주는 Access Log파일을 모두 다운로드하였다.우선 기간은 2025/01/01 ~ 2025/05/12으로 선택했으며 리눅스 내 tar파일로 압축시켜 다운로드하였다.2대의 서버에서 다운로yurizzy.tistory.com 서론 이전 포스팅에서 생성한 2개의 서버 병합 파일을 1개의 엑셀 파일로 병합한다.단 , 병합 시 내가 필요한 데이터만 추출 하여 병합한다.URL의 데이터는 특정 Jsp를 호출한 경우도 있지만, 때론 외부 api등 호출한 기록들이 섞여있다. 추출 조건URL컬럼 기준으로 탐색한다.URL데이터에 JSP를 호출한 경우만 ..
주니어 개발자 : Python 💡 서버 별 로그 .txt 파일 병합, Excel 파일 변환
·
📖 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞/Pʏᴛʜᴏɴ
서론 주니어 개발자 : 💡 Python 사용하기 / Window & VSCode & 오프라인 패키지 설치안녕하세요 오랜만에 글을 쓰네요!앞으로는 자주자주 쓰도록 반성하겠습니다🙇🏻‍♀️이제 개발자로 취업한 지 1년이 딱 지났는데요!왜 Python을 사용했고 어떤 환경에서 사용했는지 대해 설yurizzy.tistory.com 이전 포스팅에서 데이터 분석에 앞서 Python과 Pandas 환경을 설정하는 방법을 알아보았습니다.이제 실제 데이터를 다루는 단계로 나가보려 합니다.오늘은 Apache 서버에서 수집된 로그파일들(.txt)을 하나로 모으고분석하기 용이한 엑셀형식으로 변환하는 방법에 대해 포스팅하겠습니다.데이터 통합의 첫 걸음을 함께 시작해 보시죠!🙇🏻‍♀️ Log파일 병합 준비..
김춘덕⸝ဗီူ⸜
'분류 전체보기' 카테고리의 글 목록