프로필 로고 차가운 개발노트
close
프로필 배경
프로필 로고

차가운 개발노트

  • 분류 전체보기 (142)
    • Java (31)
    • SQL (12)
    • Spring (30)
    • React (15)
    • Next (5)
    • CS (17)
    • 라이브러리 (13)
    • React-native (4)
    • Git (2)
    • JavaScript (4)
    • 데이터베이스 이론 (3)
    • 설치 (3)
  • 홈
  • 태그
  • 방명록
[ 주니어 탈출기 ] 고수준 컴포넌트와 저수준 컴포넌트

[ 주니어 탈출기 ] 고수준 컴포넌트와 저수준 컴포넌트

코드를 짜다가 아래와 같은 경험을 겪었습니다."외부 카카오톡 알림톡 API 가 버전업 되었는데, 서비스 레이어 코드까찌 싹 다 고쳐야 하네" "데이터베이스를 MySQL 에서 MongoDB 로 바꾸자고 하는데, 비즈니스 로직 전체를 뜯어야 하는구나" 저와 같은 고통을 겪고 있는 개발자분들은, 100% 고수준 컴포넌트와 저수준 컴포넌트의 관계가 잘못 설계되었기 때문일 것입니다.이 글을 쓰는 목적은 두 개념을 완벽하게 마스터하고, 단단한 코드를 짜기 위해 정리할 겸 같은 고민을 겪고 있는 개발자들에게 조금이나마 도움이 될 것 같아 정리하였습니다. 컴포넌트란 무엇인가?본론으로 들어가기 전에 '컴포넌트' 라는 단어부터 짚고 넘어가자면, 컴포넌트라고 하면 프론트엔드의 React 컴포넌트가 먼저 떠오를 수 있지만, ..

  • format_list_bulleted Java
  • · 2026. 6. 2.
  • textsms
[ 주니어 탈출기 ] "인터페이스랑 뭐가 다를까?" - abstract 의 활용법

[ 주니어 탈출기 ] "인터페이스랑 뭐가 다를까?" - abstract 의 활용법

문득 퇴근 후 개발 공부를 하다가 'interface 가 있는데 abstract 가 왜 필요할까?' 라는 궁금증에 정리해보았습니다."문법은 알겠고, abstract 붙이면 상속받아서 구현해야 하고, new 로 객체 생성을 못하고... 그러면 인터페이스랑 똑같네?" 만약 위와 같은 의문이 드셨으면 제가 이번에 정리한 글을 보시면 왜 abstract 를 사용하는지 알 수 있습니다.이 글을 통해 abstract 의 문법적 기초부터, 실무에서 인터페이스 대신 추상 클래스를 선택해야 하는 경우를 정리 해 보겠습니다. 추상의 개념미술에서 추상화(Abstract Art) 는 피카소의 그림처럼 형태를 알아보기 힘들게 핵심만 남겨두는 것입니다.소프트웨어에서도 똑같습니다. 추상화란 "지엽적이고 구체적인 세부 사항은 숨기고..

  • format_list_bulleted Java
  • · 2026. 5. 28.
  • textsms
1급 컬렉션

1급 컬렉션

소프트웨어를 만들 때 우리는 필연적으로 '여러 개의 데이터' 를 다루게 됩니다.이때 아무생각 없이 아래와 같은 코드를 짤 수가 있습니다.List orderItems = new ArrayList();List cars = new ArrayList();List lottoNumbers = new ArrayList(); 이렇게 컬렉션(List, Map, Set 등) 을 아무런 보호 장치 없이 서비스 레이어나 여기저기에 날것으로 노출하는 순간, 코드는 서서히 스파게티로 변하기 시작합니다. 1급 컬렉션이란?소트웍스 앤솔러지라는 책의 '객체지향 생활 체조 원칙' 에서 처음 제안하였습니다."컬렉션을 포함한 클래스는 반드시 다른 멤버 변수를 가지지 않아야 한다" 즉, List 나 Map 같은 컬렉션을 하나의 클래스로 꽁..

  • format_list_bulleted Java
  • · 2026. 5. 26.
  • textsms
[ 주니어 탈출기 ] 도메인(Domain) 개념 완벽 정리

[ 주니어 탈출기 ] 도메인(Domain) 개념 완벽 정리

다른 개발자분께서 도메인이 무엇이냐 라고 물어볼 때 정확히답변을 하지 못해 공부하면서 다른 개발자분들에게도 알려주기 위해 정리하였습니다. 다른 개발자들과 대화하거나 아키텍처 관련 책을 읽을 때 "도메인" 이라는 단어를 자주 들엇습니다."도메인 레이어를 분리해야 합니다.", "도메인 모델에 비즈니스 로직을 모으세요.", "그건 도메인이 아니라 인프라 영역입니다."대충 '비즈니스 로직이 들어가는 곳이네..' 하고 넘어가기는 했지만, 최근에 누군가 "그래서 도메인이 정확히 무엇인데?" 라고 물어보면 말문이 턱 막혔습니다. 따라서 오늘 이 글을 통해 소프트웨어 공학에서 말하는 도메인(Domain) 의 진짜 의미부터 시작해서, 왜 이 개념을 뼛속까지 이해해야 '지속 가능한 좋은 코드' 를 짤 수 있는지 아주 깊..

  • format_list_bulleted Java
  • · 2026. 5. 18.
  • textsms
좌충우돌 원격 서버 배포 및 Jenkins CI/CD 구축기

좌충우돌 원격 서버 배포 및 Jenkins CI/CD 구축기

이 글은 단순한 작업 기록을 넘어, 비슷한 문제를 겪을 동료들에게 가이드가 될 수 있도록 작성하였습니다. 단순히 "배포에 성공했다" 는 결과보다, 그 과정에서 마주친 수많은 'Permission Denied' 와 '접속불가' 메시지들을 어떻게 논리적으로 해결했는지 초점을 맞췄습니다. 저와 같은 주니어 개발자분들에게 이 글이 도움이 됐으면 좋겠습니다. 대두분을 로컬 환경에서 테스트를 하고 Git 에 배포하는 과정만 하다가 실제 서비스를 24시간 꺼지지 않는 별도의 서버에 돌아가게 만들어보라는 요청에 Maven 과 Spring 기반의 프로젝트를 회사 원격 서버에 올리는 임무를 진행했습니다. Terminus 를 통해 서버에 접속하여 보안상 공용 계정이 아닌 내 전용 계정을 생성하여 작업을 진행하였습니다.톰캣..

  • format_list_bulleted Java
  • · 2026. 4. 28.
  • textsms
빈 검증에 대하여

빈 검증에 대하여

Bean Validation검증 애노테이션과 여러 인터페이스의 모음이며 마치 JPA 가 표준 기술이고 그 구현체로 하이버네이트가 있는 것과 같다. Bean Validation 을 사용하려면 다음과 같은 의존관계를 추가해야 한다.build.gradleimplementation 'org.springframework.boot:spring-boot-starter-validation' @Data@NoArgsConstructor@AllArgsConstructorpublic class Item { private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max = 100000) private Integer price; @NotNul..

  • format_list_bulleted Java
  • · 2026. 3. 23.
  • textsms
필터와 인터셉터

필터와 인터셉터

Filter 와 Interceptor 가 필요한 이유는 모든 로직에 대하여 인증 절차를 처리하는 Logic 이 있다면, 하나하나 등록을 하는 것 보다 한번에 처리할 수 있는 기능이 있으면 유지보수 하기 쉬워 사용하는 것이다.이렇게 애플리케이션 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사(Cross-cutting concern) 이라고 한다. 필터 (Filter)필터를 적용하면 필터가 호출 된 다음에 서블릿이 호출된다.그래서 모든 고객의 요청 로그를 남기는 요구사항이 존재한다면 필터를 사용하면 된다.HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러 참고로 스프링을 사용하는 경우 여기서 말하는 서블릿은 스프링의 디스패터 서블릿으로 생각하면 된다. 필터 체인 (Filter Chain)..

  • format_list_bulleted Java
  • · 2026. 3. 16.
  • textsms
마이바티스

마이바티스

마이바티스 MyBatis 는 JdbcTemplate 보다 더 많은 기능을 제공하는 SQL Mapper 이다.JdbcTemplate 와 비교해서 MyBatis 의 가장 매력적인 점은 SQL 을 XML 에 편리하게 작성할 수 있고 또 동적 쿼리를 매우 편리하게 작성할 수 있다.jdbcTemplateString sql = "update item" +"set item_name:itemName, price=:price, quantity=:quantity" +"where id=:id"; Mybatis update item set item_name = #{itemName}, price = #{price}, quantity = #{quantity} where id = #{id}또한 동적 쿼리도 아주 손쉽게 적용시킬..

  • format_list_bulleted Java
  • · 2026. 3. 5.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (142)
    • Java (31)
    • SQL (12)
    • Spring (30)
    • React (15)
    • Next (5)
    • CS (17)
    • 라이브러리 (13)
    • React-native (4)
    • Git (2)
    • JavaScript (4)
    • 데이터베이스 이론 (3)
    • 설치 (3)
최근 글
인기 글
최근 댓글
태그
  • #React-Native
  • #CS
  • #Next.js
  • #NEXT
  • #Java
  • #Spring
  • #데이터베이스
  • #react
  • #라이브러리
  • #SQL
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바