분류 전체보기209 [Oracle] 🚂 쿼리 열차 출발합니다~ 시간대 별로 데이터 개수 세기 최근에 쿼리 작성할 일이 많았는데 (다시 시작된 일 찾아서 하는 대견한(?) 주디🐰 하나씩 내 이름으로 올리는 거 제법 재밌단 말이지~?!) 근데 뭔가 검색하면서 쿼리를 작성하니 나중에는 또 까먹고 다시 검색할 것이 눈에 보여 하나하나 간단한 예제로 정리해보려고 한다! (근데 이 정도면 금융권은 알고리즘보다 SQL 문제를 더 내야 한다!!!! 재밌는데 어려워!! 튜닝은 더 모르겠어) 그럼 쿼리 열차 출발~~🚂🚂 비키세요 비키세요 폭주 기관차 주디 지나갑니다 🐰🚂 이 글은 Oracle 기준으로 작성된 글입니다. 🌱 시간대 별로 데이터 개수 세기 ▶️ 요구사항 1시부터 24시까지 각 시간대 별로 데이터의 개수를 출력 데이터가 없는 시간대에도 0이라고 표시해서 데이터 출력 흔히 통계 데이터 조회에서 1시부터 .. 2023. 11. 6. 드디어 업무를 받을 위기(?)의 주디. Maven+MyBatis로 간단한 예제 만들어보기 (몇 주 전에 올렸는데 왜 노출이 안 됐지..ㅠ) 연수가 끝난 후 본격 부서에 배치된 박주디. 첫 주는 하루에 3잔씩 음료를 얻어먹고, 매일매일 인사하기 바쁘다. 다행히 나는 하루 만에 개발망 피씨를 받았다. 딱히 하는 일이 없었는지 어언 3주. 그리고 그녀에게 곧 서버 개발이 주어질 것이라는 예고장이 날아오는데.. 🥷 : 다음 주에 간단한 개발 건 정리해서 드릴게요. 프로젝트 많이 해보셨어요? 🐰주디 : ㅇ..예..! 자.. 자신 있습니다..! 🤖 : 야! 너 개발 환경 세팅받아서 코드 본 지 2시간이고, 권한 받은 지도 2시간이잖아. 그리고 너 MyBatis 해봤어? JPA만 했잖아. 너 Maven 써봤어? Gradle 썼잖아. 너 SVN 써봤어? 너 Git만 썼잖아. 너 폐쇄방에서 개발해 봤어? 너.. 2023. 11. 1. [신한DS/금융IT] 서류, 역검, 코테, 실무진면접, 임원면접 합격 후기 보호되어 있는 글 입니다. 2023. 8. 31. [코스콤/금융IT] 서류, 역검, 코테, PT면접, 경험면접, 임원면접 후기 보호되어 있는 글 입니다. 2023. 7. 7. [AWS S3+Lambda] 이미지 처리 2탄: Image Resizing으로 썸네일 이미지 만들기 📷 이미지 처리1탄에서는 pre-signed URL을 이용해서 이미지 업로드를 구현했다. 근데 실제로 우리가 화면에서 이미지를 보여줄 때 원본 이미지 파일을 전부 보여주기엔 파일이 너무 크다. 그래서 리사이징을 함으로써 데이터를 전송하는 과정에서도 더 효율적으로 서버를 운영하고, 프론트에서 이미지를 렌더링 할 때의 시간도 줄여보자. 📑 목차[AWS S3] 이미지 처리 1탄: Pre-signed URL로 파일 업로드 구현 [AWS S3+Lambda] 이미지 처리 2탄: Image Resizing으로 썸네일 이미지 만들기 - 현재 포스팅 💭 고민이미지 리사이징을 어떻게 구현할지 고민했다. [ 리사이징 시기 ]Resize during UploadOn-demand Resize 이미지를 요청할 때 리사이즈해 줄지.. 2023. 6. 28. [AWS S3] 이미지 처리 1탄: Pre-signed URL로 파일 업로드 구현 📷 이미지 처리 📑 목차 [AWS S3] 이미지 처리 1탄: Pre-signed URL로 파일 업로드 구현 - 현재 포스팅 [AWS S3+Lambda] 이미지 처리 2탄: Image Resizing으로 썸네일 이미지 만들기 프로젝트에서 이미지 업로드 기능을 구현해 본 경험이 있을 것이다. 나는 예전 프로젝트에서 Form data로 서버에 파일을 전송하면, 서버에서 S3에 파일을 업로드하고 해당 URL를 반환해 주는 Flow로 구현했다. ✔️ 서버를 통해서 업로드 1. Client에서 Server로 Form Data로 Image 파일 전송 2. Server는 AWS S3에 이미지 업로드 3. 저장된 URL 받음 4. Server에서 이미지 URL 반환 이 방식은 서버에서 AWS Key 정보를 가지고 있고,.. 2023. 6. 27. [JPA] 1차 캐시(First-Level Cache), 2차 캐시(Second-Level Cache) 이번주 스터디 주제는 JPA 캐시이다!! 역시 일단 캐시가 뭔지 알아야겠징?! 캐시부터 알아보자! (CS 면접 준비 중이라면... 주디의 스터디로 놀러오세용~ 7개월 동안 꾸준히 하고 있답니당) ✅ 캐시 (Cache) 캐시란? '사용되었던 데이터는 다시 사용될 가능성이 높다'는 개념을 이용하여 데이터나 값을 미리 복사해 놓는 임시 장소 우리가 생각하는 것보다 네트워크를 통해 데이터베이스에 접근하는 시간 비용은 애플리케이션 서버에서 내부 메모리에 접근하는 시간 비용보다 훨씬 비싸다. 아래 메모리 계층 사진을 보아 알 수 있듯이 위로 올라갈수록 용량이 적고 가격이 비싸지만, 속도가 빠른 것을 알 수 있다. Secondary Memory는 SDD, HDD이다. 즉, 데이터베이스는 Secondary Memory.. 2023. 6. 25. [Spring] @Valid로 DTO 검증하기 1. 검증은 왜 필요할까? 컨트롤러의 중요한 역할 중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 🤖 : 근데 클라이언트에서 잘못된 요청은 걸러주지 않아? 🐰 : 그럼 클라이언트를 거치지 않은 요청은 다 받아줄겨? 클라이언트 검증은 조작할 수 있어 보안에 취약하다. 또한 서버에서도 잘못된 요청을 검증하는 로직을 필요하다. 그리고 나는 그 중 DTO에서 데이터를 검증하는 방법을 알아보려고 한다. 2. Bean Validation Bean Validation은 특정한 구현체가 아니라 Bean Validation 2.0(JSR-380)이라는 기술 표준이다. 즉, 검증 애노테이션과 여러 인터페이스의 모음이다. Bean Validation을 구현한 기술중에 일반적으로 사용하는 구현체는 하이버네이트 Valid.. 2023. 6. 8. [Spring] Spring Security 개념과 처리 과정 👮♀️ (+근데 상황극을 곁들인) 오늘도 노드 마을에서 온.. 토끼는 낯선 기술에 울고 있다..(?) 그렇다.. 유저가 있는 서비스라면 인증과 인가 처리는 필수이다. Spring에서는 Spring Security라는 프레임워크로 관련 기능을 제공하고 있다. 꽤 넓고 내용이 많은 파트이다. CS 스터디를 동기 삼아 건드리기 무서웠던 파트를 한 번 공부해 보자. 오늘은 Security 개념과 처리 과정에 대해서 알아보려고 한다. 👮♀️ Spring Security /** 평화로운 토끼 마을 */ 토끼 마을에 입장하기 위해서는 신원을 입증해야 한다. 🐰 : 안녕하세요. 토끼입니다. 저는 토끼마을 주민이에요. 딱 봐요? 토끼상이됴? 🤖 : 삐빅. 박.주.디. 신원이 입증되었습니다. 방금 주디가 한 것이 인증(Authentication)이다. .. 2023. 6. 1. [Git] 개발 생산성 향상을 위한 Git Hooks 활용 (with. Spotless) 🎣 🖇️ 관련 글 : 코딩 컨벤션 설정 | Spotless, Checkstyle ⚙️✨ 지난 글에서 Spotless 설정을 했다. 하지만 매번 Spotless Apply / Spotless Check를 통해 컨벤션을 적용하고 확인하는 작업이 번거롭다는 생각을 했다. 컨벤션이 지켜지지 않을 때 build가 실패하게 되는데 만약 적용하는 것을 깜빡하고 커밋을 하게 된다면? CI workflow에서 체크해 줘서 머지할 때 오류는 없겠지만.. 그래도 커밋할 때부터 이 오류를 잡아줄 순 없을까? 이런 휴먼 에러를 방지하고, 반복되는 작업을 Git Hooks를 활용하여 자동화함으로써 개발 생산성을 높이려고 한다.⚙️ 프로젝트 환경java : 11Spring Boot : 2.7.11멀티 모듈 프로젝트Build Tool:.. 2023. 5. 21. [Java] Gradle.. Gradle 말입니다. 자바 빌드 도구 🐘 자바 프로젝트를 진행하면서 빌드 도구를 많이 접해볼 것이다. 최근에 프로젝트 세팅을 하면서 Gradle, 이 친구 설정을 많이 변경하고 사용했다. 그런데 말입니다.. 빌드 도구는 여러 가지 있단 말이됴? 그리고 Gradle을 사용하면서 왜 사용하는지, 어떻게 사용하는지 알고는 있나요?! 🤖 : 거.. 살살 하세요. 지금 공부하려고 하잖쇼? 🐰 : 뭐야.. 웬일로 내 편을 들어주니? (떠오르는 과거의 기억..) 1. Build Tool (소프트웨어 개발에서) 소스 코드를 실행 가능한 애플리케이션으로 만들어주는 도구 소스코드의 빌드 과정을 자동으로 처리해주는 도구 외부 소스 코드 (외부 라이브러리) 자동 추가, 관리 종류: APACHE ANT, Maven, Gradle [ Ant(앤트) ] 설정을 위해 XM.. 2023. 5. 19. [Gradle] Jacoco 적용하고, Codecov로 테스트 커버리지 관리하기 난 지금까지 프로젝트에서 테스트 코드를 열심히 작성하지 못했다.. 크흡 우리 팀 고수 개발자분... 커버리지 80% 이상으로 작성한다고 하셔서.. 리스팩 👏 🤖 : 너도 할 수 있지? 🐰 : 8%? ㅎㅎ.. 농담.. (진짜?) 이번에 열심히 작성해 보기로 했으니... 파이팅~! (후후.. 어서 와 JUnit은 처음이지?) 그리고 프로젝트에서 Jacoco와 Codecov를 적용하려고 한다. 근데 잠깐!! 코드 커버리지는 뭐고, 저 도구들은 뭐야? 그리고 왜 필요해? 🤖 : 그말 왜 안 하나 했다. 해당 도구들의 사용법을 익히기 전에 개념부터 살펴보자. 0. Test Code 테스트 코드는 왜 작성해야 할까. 예전 프로젝트에서는 시간이 부족하다는 이유로 테스트 코드 작성을 소홀히 했다. 하지만 테스트 코드가.. 2023. 5. 14. [Git] Submodule로 민감 정보 관리하기 (.yml 파일) 프로젝트를 진행할 때 보안상 문제로 Git에 올리지 못하는 데이터가 있다. 대표적으로 DB 인스턴스의 정보를 저장하는 .yml 파일이 있다. 서브모듈을 활용하면 민감 정보를 더 편리하게 관리할 수 있다. 📂 Submodule Git 레포지토리 하위에 다른 저장소를 관리하기 위한 도구 Git 저장소 안에 다른 Git 저장소를 디렉터리로 분리해 넣는 것이 서브모듈이다. 다른 독립된 Git 저장소를 Clone 해서 내 Git 저장소 안에 포함할 수 있으며 각 저장소의 커밋은 독립적으로 관리한다. 이때 상위 레포지토리를 상위 레포지토리를 부모 저장소, 슈퍼 프로젝트(superproject), 하위 레포지토리를 자식 저장소, 서브 모듈(submodule)이라고 부른다. ✨ 주의할 점 부모-자식 관계라고 부모가 자.. 2023. 5. 11. 코딩 컨벤션 설정 | Spotless, Checkstyle ⚙️✨ 여러 개발자들이 작업을 할 때 코딩 컨벤션을 정하게 된다. 컨벤션을 정하게 되면 가독성을 높일 수 있다. Spotless 적용하는 방법과 네이버 코딩 컨벤션을 Code Style Formatter로 설정하고, Checkstyle 적용하는 방법 두 가지에 대해서 알아보자. 1️⃣ Spotless Keep your code spotless 여러 개발자가 협업하는 환경에서 코드 컨벤션을 지키기 위해 사용하는 플러그인이다. 컨벤션이 지켜지지 않을 경우 build가 실패한다. ✔️ Install Guide build.gradle plugins { id 'com.diffplug.spotless' version '6.11.0' } ✔️ Setting Guide 이 부분은 팀 컨벤션에 맞춰 설정해 주면 된다. buil.. 2023. 5. 9. Github Actions를 이용한 CI 빌드, 테스트 자동화 Github Actions는 Github에서 제공하는 CI/CD 툴이다. 예전에 스터디에서 CircleCi, ArgoCD를 공부한 적이 있다. (Travis Ci도 Github 연동이 편해서 많이 쓰더라) 이때 개인 프로젝트에서 위와 같은 CI/CD 툴은 공부하기 어려웠고, CircleCi는 ㅎ 실습하다가 망해서 github repo에 private으로 영원히 묻어뒀다. 언젠간 열어줄게. 댕청해 보여서 마음에 드는 argo와 circleci에 고통받는 나의 모습을 본 스터디원.. 👤 : 정윤님!! Github Actions가 세상 편한데! 이걸로 하면 금방 하실 수 있어요!! 🐰 : CI/CD 늪에서 꺼내줘!!! 그렇게 작년부터는 계속 Github Actions를 쓰고 있다! 오늘은 Github Acti.. 2023. 5. 6. 이전 1 2 3 4 5 ··· 14 다음 반응형