본문 바로가기 메뉴 바로가기

Jaime's 기술 블로그

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

Jaime's 기술 블로그

검색하기 폼
  • All (499)
    • IntelliJ IDEA (8)
    • SpringBoot (83)
      • Web Application 만들기 (71)
      • JWT 튜토리얼 (5)
    • Java (19)
    • JPA (33)
    • Querydsl (14)
    • SRE (7)
    • gRPC (10)
    • macOS (7)
    • Docker (1)
    • Linux (5)
    • R (5)
    • Test (3)
    • ETC (13)
    • Algorithm (265)
      • LeetCode (258)
    • Retrospect (4)
    • git (1)
    • Architecture (8)
    • Book (10)
      • 함께 자라기 (7)
      • 프로그래머의 뇌 (3)
    • Essay (1)
  • 방명록

전체 글 (499)
클린 아키텍처: 테스트

이 포스팅은 만들면서 배우는 클린 아키텍처를 읽고 작성하였습니다. 소스 코드는 여기 있습니다. Overview 헥사고날 아키텍처에서의 테스트 전략에 대해 살펴봅니다. 테스트 피라미드 위 그림은 몇 개의, 어떤 종류의 테스트를 목표로 해야 하는지 결정하는 데 도움을 줍니다. 기본적으로 만드는 비용이 적고, 유지보수하기 쉽고, 빨리 실행되고, 안정적인 작은 크기의 테스트들에 대해 높은 커버리지를 유지해야 합니다. 여러 개의 단위와 경계를 결합하는 테스트는 비용이 비싸지고 실행이 느려져 깨지기 쉬워집니다. 테스트 피라미드는 테스트가 비싸질 수록 커버리지를 낮게 잡아야 한다는 것을 보여줍니다. 그렇지 않으면 기능구현보다 테스트 구현에 시간이 더 오래 걸리는 배보다 배꼽이 더 큰 상황이 발생하게 됩니다. 단위 테..

Architecture 2022. 8. 14. 10:30
13. Roman to Integer

소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 For example, 2 is written as II in Roman numeral, just two ones added together. 12 is written as XII, which is simply X + II. The number 27 is written as XXVII, which is XX + V + II. Roman numerals are usually written largest to..

Algorithm/LeetCode 2022. 8. 13. 19:50
235. Lowest Common Ancestor of a Binary Search Tree

소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Given a binary search tree (BST), find the lowest common ancestor (LCA) node of two given nodes in the BST. According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q as descendants (where we allow a node to be a descendant of itself).” Example 1: Input: root ..

Algorithm/LeetCode 2022. 8. 12. 22:30
98. Validate Binary Search Tree

소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Given the root of a binary tree, determine if it is a valid binary search tree (BST). A valid BST is defined as follows: The left subtree of a node contains only nodes with keys less than the node's key. The right subtree of a node contains only nodes with keys greater than the node's key. Both the left and right subtrees must also be binary search tr..

Algorithm/LeetCode 2022. 8. 11. 22:30
클린 아키텍처: 영속성 어댑터 구현

이 포스팅은 만들면서 배우는 클린 아키텍처를 읽고 작성하였습니다. 소스 코드는 여기 있습니다. Overview 처음 계층적 아키텍처의 문제접을 다룰 때 모든 것이 영속성 계층에 의존하게 되어 데이터베이스 주도 설계가 된다는 점을 다룬 적이 있는데요, 의존성을 역전시키기 위해 영속성 계층을 애플리케이션 계층의 플러그인으로 만드는 방법을 살펴봅니다. 의존성 역전 애플리케이션 서비스에서는 영속성을 사용하기위해 아웃고잉 포트 인터페이스를 호출합니다. 이 포트는 영속성 작업을 수행하고 데이터베이스와 통신할 영속성 어댑터가 구현하게 됩니다. 헥사고날 아키텍처에서 영속성 어댑터는 아웃고잉 어댑터에 해당하므로 애플리케이션 계층에서 호출하고 역방향으로 어댑터가 애플리케이션을 호출할 일이 없습니다. 애플리케이션 서비스가 ..

Architecture 2022. 8. 10. 10:30
커리어 회고(Part 1): 좋좋소에서 첫 이직까지

커리어 회고(Prequel Part 1): 공대생이 되다 최근에 퇴사 및 이직이 결정되면서, 지금까지 커리어를 정리해보고 싶은 마음이 생겼습니다. 저와 비슷하신 분들도, 그렇지 않은 분들도 계시겠지만, 커리어 상승을 꿈꾸는 분들께 도움이 됐으 jaime-note.tistory.com 커리어 회고(Prequel Part 2): 노예가 되다 최근에 퇴사 및 이직이 결정되면서, 지금까지 커리어를 정리해보고 싶은 마음이 생겼습니다. 저와 비슷하신 분들도, 그렇지 않은 분들도 계시겠지만, 커리어 상승을 꿈꾸는 분들께 도움이 됐으 jaime-note.tistory.com 커리어 회고(Prequel Part 3): 노예, 좋좋소에 가다 최근에 퇴사 및 이직이 결정되면서, 지금까지 커리어를 정리해보고 싶은 마음이 생겼..

Retrospect 2022. 8. 9. 10:30
클린 아키텍처: 웹 어댑터 구현

이 포스팅은 만들면서 배우는 클린 아키텍처를 읽고 작성하였습니다. 소스 코드는 여기 있습니다. Overview 웹 인터페이스를 제공하는 어댑터의 구현 방법을 살펴봅니다. 의존성 역전 웹 어댑터는 주도하는(driving) 또는 인커밍 어댑터 입니다. 외부로부터 요청을 받아 애플리케이션 코어를 호출합니다. 이 때 제어 흐름은 웹 어댑터에 있는 컨트롤러에서 애플리케이션 계층에 있는 서비스로 흐릅니다. 애플리케이션 계층은 웹 어댑터가 통신할 수 있는 포트 인터페이스인 유스케이스를 제공하고 해당 유스케이스를 구현합니다. 여기 의존성 역전 원칙이 적용된 것을 확인할 수 있습니다. 어댑터와 유스케이스 사이에 인터페이스가 존재하는 이유는 애플리케이션 코어가 외부와 통신할 수 있는 규격이기 때문입니다. 이 포트를 적절하..

Architecture 2022. 8. 8. 10:30
클린 아키텍처: 유스케이스 구현

이 포스팅은 만들면서 배우는 클린 아키텍처를 읽고 작성하였습니다. 소스 코드는 여기 있습니다. Overview 앞서 살펴본 내용들을 어떻게 실제 코드로 구현할지 살펴봅니다. 도메인 모델 구현 한 계좌에서 다른 계좌로 송금하는 유스케이스를 구현합니다. 객체지향적으로 모델링하기 위해 입출금을 할 수 있는 Account 엔터티를 만들고, 출금 계좌에서 출금하여 입금 계좌로 입금하도록 하였습니다. package buckpal.domain; @AllArgsConstructor(access = AccessLevel.PRIVATE) public class Account { @Getter private final AccountId id; @Getter private final Money baselineBalance; ..

Architecture 2022. 8. 7. 10:30
377. Combination Sum IV

소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Given an array of distinct integers nums and a target integer target, return the number of possible combinations that add up to target. The test cases are generated so that the answer can fit in a 32-bit integer. Example 1: Input: nums = [1,2,3], target = 4 Output: 7 Explanation: The possible combination ways are: (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1..

Algorithm/LeetCode 2022. 8. 6. 10:30
729. My Calendar I

소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem You are implementing a program to use as your calendar. We can add a new event if adding the event will not cause a double booking. A double booking happens when two events have some non-empty intersection (i.e., some moment is common to both events.). The event can be represented as a pair of integers start and end that represents a booking on the half-open ..

Algorithm/LeetCode 2022. 8. 5. 10:30
슬랙 이모지 온라인 생성기 모음

슬랙을 사용하다보면 커스텀 이모지가 필요한 상황이 있는데요, 그 때 사용하기 위해 링크를 모아봤습니다. 사용법은 워낙 간단하기 때문에 직접 들어가서 만들어보시면 됩니다😄 MakeEmoji Create animated custom emoji GIFs for Twitch, Slack, and Discord makeemoji.com Emoji Generator | Discord & Slack Emoji Maker - Discord Emoji Create awesome custom emoji for Discord and Slack using our Emoji Maker / Emoji Generator. Using the Twemoji set as a base, create emoji with over 10,00..

ETC 2022. 8. 4. 10:30
클린 아키텍처: 패키지 구성

이 포스팅은 만들면서 배우는 클린 아키텍처를 읽고 작성하였습니다. Overview 코드를 구성하는 몇 가지 방법과 헥사고날 아키텍처를 표현하는 패키지 구조를 소개합니다. 프로젝트를 처음 생성할 때 패키지 구조를 먼저 설계하게 되는데, 진행될수록 점점 바빠져서 처음의 원칙을 지키지 않고 서로 규칙 없이 참조하게 되는 경우를 많이 겪어보셨을 것입니다. 지금부터 송금하기 유스케이스에 대해 여러 가지 패키지 구조 예시를 살펴보겠습니다. 계층 구조 첫 번째 접근 방법은 계층 구조를 이용하는 것입니다. app ├── domain │ ├── Account │ ├── AccountRepository │ ├── AccountService │ └── Activity ├── persistence │ └── AccountRe..

Architecture 2022. 8. 3. 10:30
좋은 개발자 경험

좋은 글이 있어 공유합니다. 원문은 여기서 확인할 수 있습니다. 한 줄 요약 개발자를 행복하게 만들고 행복을 유지하는 것을 잊지 마세요. 좋은 개발자 경험(Developer Experience, DX)이란 무엇인가 개발자 경험은 개발자가 제품을 사용하거나 개발하는 동안의 경험을 말합니다. 하지만 많은 회사에서는 UX(User Experience)보다 우선순위에 밀려나 있습니다. 개발자도 유저이고, 제품을 사용합니다. 그들의 만족과 행복은 프로젝트의 성공에 매우 중요합니다. 행복한 개발자는 뛰어난 소프트웨어를 만들고 팀을 떠날 가능성을 줄여줍니다. 우리는 아래 4가지 요소로 좋은 개발자 경험을 정의합니다. 적절한 아키텍쳐 아키텍쳐가 단순하면 나중에 고통받고, 복잡하면 지금 고통스럽습니다. 프로젝트와 팀 규..

ETC 2022. 8. 2. 10:30
코드 더 잘 읽기: 신속한 코드 분석(1)

이 포스팅은 프로그래머의 뇌를 읽고 작성하였습니다. Overview 경험 많은 개발자조차 코드를 빨리 이해하는 것이 어려운 이유 두뇌가 정보들을 어떻게 인식 가능한 부분으로 나누는지 이해 단어와 코드 같은 정보를 분석할 때 LTM과 STM 사이의 상호작용 프로그래머가 일하는 시간 중 약 60%가 작성하는 게 아니라 이해하는 데 사용됩니다. 따라서 코드를 빨리 이해할 수 있다면 프로그래밍 기술이 크게 개선된다고 할 수 있습니다. 코드를 읽을 때 정보가 처음 저장되는 곳은 STM이라는 것은 앞서 살펴봤는데요, 코드의 많은 정보를 처리하는 게 왜 어려운 일인지 알아보겠습니다. 코드를 빨리 읽을 때 두뇌에서 무슨 일이 일어나는지 알면 코드를 얼마나 잘 이해하고 있는지 스스로 확인하기 더 쉽기 때문입니다. 코드 ..

Book/프로그래머의 뇌 2022. 8. 1. 10:30
코드 더 잘 읽기: 코딩 중 겪는 혼란에 대한 이해

이 포스팅은 프로그래머의 뇌를 읽고 작성하였습니다. Overview 코딩 중에 발생하는 다양한 혼란의 방식과 그 차이점을 이해하고, 코딩에서 작동하는 세 가지 인지 과정을 비교합니다. 그리고 이 세 가지 인지 과정들이 어떻게 서로 보완적으로 작동하는지 이해합니다. 프로그래밍을 하다 보면 늘 혼란이 일어납니다. 새로운 언어나 개념 또는 프레임워크를 배울 때 지레 겁부터 먹는 경우도 있습니다. 익숙하지 않은 코드, 자신이 오래 전에 작성한 코드를 다시 확인할 때, 그 코드가 왜 그렇게 작성되었는지 이해가 안 갈 수도 있습니다. 또는 새로운 도메인에서 일을 시작할 때 새로운 용어나 누적되며 쌓여온 히스토리 때문에 파악이 어려운 경우도 있습니다. 이런 혼란을 필요 이상으로 오래 가져가면 안 되겠죠? 따라서 책에..

Book/프로그래머의 뇌 2022. 7. 31. 10:30
이전 1 ··· 4 5 6 7 8 9 10 ··· 34 다음
이전 다음
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
  • github
TAG
  • 스프링 데이터 jpa
  • Jackson
  • Spring Boot
  • @ManyToOne
  • Linux
  • 헥사고날 아키텍처
  • 스프링 부트 튜토리얼
  • QueryDSL
  • 스프링 부트 애플리케이션
  • 스프링 부트
  • Spring Boot Tutorial
  • Spring Boot JPA
  • proto3
  • r
  • Spring Data JPA
  • 알고리즘
  • spring boot jwt
  • 클린 아키텍처
  • spring boot app
  • spring boot application
  • intellij
  • 함께 자라기
  • JSON
  • 함께 자라기 후기
  • Java
  • leetcode
  • JPA
  • 스프링 부트 회원 가입
  • gRPC
  • 스프링부트
more
«   2025/12   »
일 월 화 수 목 금 토
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함

Blog is powered by Tistory / Designed by Tistory

티스토리툴바