블로그 사이에서 WHY를 외치다!
close
프로필 배경
프로필 로고

블로그 사이에서 WHY를 외치다!

  • 분류 전체보기
    • Spring
    • Nest
    • Language
    • DB
    • Book
    • 회고
    • Etc
  • ⭐️ readme ⭐️
  • main
  • recommend
  • why
  • framework
  • book
[오브젝트] 챕터 15 - 마지막: 디자인 패턴과 프레임워크

[오브젝트] 챕터 15 - 마지막: 디자인 패턴과 프레임워크

✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 소프트웨어 설계에서 반복적으로 발생하는 문제에 대해 적용할 수 있는 해결 방법을 디자인 패턴이라고 한다.일단 디자인 패턴을 익히면, 변경과 방향과 주기를 이해하는 것만으로도 협력 방식을 순간적으로 떠올릴 수 있게 한다. 디자인 패턴이 설계를 재사용하기 위한 것이라면 프레임워크는 설계와 코드를 함께 재사용하기 위한 것이다. 프레임워크는 애플리케이션의 아키텍처를 구현 코드의 형태로 제공한다. 디자인 패턴은 특정한 변경을 일관성 있게 다룰 수 있는 협력 템플릿을 제공하고, 프레임워크는 특정한 변경을 일관성 있게 다룰 수 있는 확장 가능한 코드 템플릿을 제공한다. 01 디자인 패턴과 설계 재사용소프트웨어 패턴패턴이라는 숲 속에서 길을 잃지 안힉 위해서는 ..

  • format_list_bulleted Book
  • · 2025. 8. 13.
  • textsms

[오브젝트] 챕터 14: 일관성 있는 협력

✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 유사한 기능을 구현하기 위해 유사한 협력 패턴을 사용하라. 유사한 기능 구현을 위해 유사한 협력 방식을 따를 경우 최소한의 노력으로 코드를 구현할 수 있다. 01 핸드폰 과금 시스템 변경하기기본 정책 확장11장에서 구현한 핸드폰 요금 정책을 4가지 방식으로 확장한다.더보기1. 고정요금 방식: 일정 시간 단위로 동일 요금 부과2. 시간대별 방식: 24시간을 특정 구간으로 나눈 후 구간별 다른 요금 부과3. 요일별 방식: 요일별로 요금을 차등 부과4. 구간별 방식: 통화 시간을 일정하게 나눈 후 구간별로 요금을 차등 부과 시간대별 방식 구현하기통화는 여러날 걸쳐서 이루어질 수 있다. 그래서 시작 일자와 종료 일자도 통화 시작 시간과 종료 시간과 함께 ..

  • format_list_bulleted Book
  • · 2025. 8. 6.
  • textsms
[오브젝트] 챕터 13: 서브 클래싱과 서브 타이핑

[오브젝트] 챕터 13: 서브 클래싱과 서브 타이핑

✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 상속의 두 가지 용도1) 타입 계층 구현 (부모 클래스는 일반적 개념, 자식 클래스는 특수한 개념)2) 코드 재사용 (그러나 부모와 자식 간 결합도가 높아짐) 동일한 메시지에 대해 서로 다르게 행동할 수 있는 다형적 객체를 구현하기 위해서 객체의 행동 기반으로 타입 계층을 구성해야 한다. 상속의 일차적 목표는 이처럼 타입 계층을 구현하는 것이어야 한다. 이번 장에서는 올바른 타입 계층을 구성하는 방법을 살펴본다. 01 타입개념 관점의 타입개념 관점에서 타입이란 우리가 인지하는 사물의 종류이다. 예를 들어 자바, 루비, C를 프로그래밍 언어로 부를 때 우리는 이것을 프로그래밍 언어라는 타입으로 분류하고 있는 것이다.어떤 대상이 타입으로 분류될 때 그..

  • format_list_bulleted Book
  • · 2025. 8. 5.
  • textsms
마크다운 박스 만들기 - Github Readme 꾸미기 Markdown Badges 리드미 블로그 링크 첨부

마크다운 박스 만들기 - Github Readme 꾸미기 Markdown Badges 리드미 블로그 링크 첨부

안녕하세요. 오늘은 Github Readme를 꾸밀 수 있는 작은 서비스 하나를 소개해드리고자 합니다. markdown-box-generator마크다운 박스 제네레이터는 마크다운에서 100% 커스터마이징 가능한 박스를 만들 수 있게 해줍니다. (커스터마이징 가능한 만큼 사용자가 원하는대로 사용이 가능해요.)깃허브 리드미에서 블로그로 연결되거나, SNS로 연결되는 예쁜 박스를 만들 수 있어요. 물론 깃허브 뿐만 아니라 다양한 Markdown Editor에서도 사용 가능합니다. 이럴 때 사용할 수 있어요해당 서비스는 블로그 링크를 보다 깔끔하게 보여주고 싶다는 생각에서 만들게된 프로젝트입니다.더 나아가 링크드인, 인스타그램 등의 소셜 네트워크 링크까지 포함할 수 있도록 만들었어요. README.md는 개발..

  • format_list_bulleted Etc
  • · 2025. 7. 29.
  • textsms

[오브젝트] 챕터 12: 다형성 - self와 super의 예시

코드 재사용을 목적으로 상속을 사용하면 변경하기 어렵고 유연하지 못한 설계에 이를 확률이 높아진다. 상속의 목적은 코드 재사용이 아니다. 상속은 타입 계층을 구조화하기 위해 사용해야 한다. 상속을 이용해 자식 클래스를 추가하려 한다면 스스로에게 다음과 같이 질문해봐라. 상속을 사용하려는 목적이 단순히 코드를 재사용하기 위해서인가? 아니면 클라이언트 관점에서 인스턴스를 동일하게 행동하는 그룹으로 묶기 위해서인가? 이번 장에서는 상속의 관점에서 다형성이 구현되는 기술적인 메커니즘을 살펴보기로 한다. 이번 장을 읽고 나면 다형성이 런타임에 메시지를 처리하기 위해 적합한 메서드를 동적으로 탐색하는 과정을 통해 구현되며, 상속이 이런 메서드를 찾기 위한 일종의 탐색 경로를 클래스 계층 형태로 구현하기 위한 방법임..

  • format_list_bulleted Book
  • · 2025. 7. 21.
  • textsms

[오브젝트] 챕터 11: 합성과 유연한 설계

✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 상속과 합성은 객체지향 프로그래밍에서 가장 널리 사용되는 코드 재사용 기법이다.상속이 부모 클래스와 자식 클래스를 연결해서 부모 클래스의 코드를 재사용하는데, 합성은 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해서 부분 객체의 코드를 재사용한다. 상속은 의존성이 컴파일타임에 해결되고 합성은 런타임에 해결된다. 상속은 is-a 관계이고, 합성은 has-a 관계이다. 합성은 포함되는 객체의 퍼블릭 인터페이스를 재사용한다. 따라서 상속 대신 합성을 사용하면 구현에 대한 의존성을 인터페이스에 대한 의존성으로 변경하면서 결합도를 낮춘다. 01 상속을 합성으로 변경하기상속을 했을 경우 세가지 문제가 발생한다.1) 불필요한 인터페이스 상속 문제자식 클..

  • format_list_bulleted Book
  • · 2025. 7. 21.
  • textsms

[오브젝트] 챕터 10: 상속과 코드 재사용

✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 객체지향 프로그래밍은 코드를 재사용하기 용이하다는 장점이 있다. 코드를 재사용하려는 동기 이면에는 중복된 코드를 제거하려는 욕망이 있다. 이번 장에서는 상속에 대해 알아본다. (전체 코드) 01 상속과 중복 코드중복 코드는 사람들의 마음속에 의심의 씨앗을 뿌린다. DRY 원칙프로그램의 본질은 비즈니스와 관련된 지식을 코드로 변환하는 것이다. 안타깝게도 이 지식은 항상 변하며 그에 맞춰 코드 역시 변경해야 한다.중복 코드는 코드를 수정하는 데 필요한 노력을 몇 배로 증가시킨다. 중복을 판단하는 기준은 변경이다. 요구사항이 변경됐을 때 두 코드를 함께 수정해야 한다면 이 코드는 중복이다. 신뢰할 수 있고 수정하기 쉬운 소프트웨어를 만드는 효과적인 ..

  • format_list_bulleted Book
  • · 2025. 7. 21.
  • textsms

[오브젝트] 챕터 9: 유연한 설계

✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 01 개방-폐쇄 원칙로버트 마틴은 변화에 유연하게 대응할 수 있는 설계를 위한 원칙 중 하나로 개방-폐쇄 원칙(Open-Clos Principle)을 고안했다.- 소프트웨어 개체(클래스, 모듈, 함수 등)은 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다.- 확장에 열려있다: 요구사항이 변경될 때 새로운 동작을 추가해서 기능을 확장할 수 있다 / 수정에 닫혀있다: 기존 코드를 수정하지 않고도 애플리케이션 동작을 추가하거나 변경할 수 있다 컴파일타임 의존성을 고정시키고 런타임 의존성을 변경하라️의존성 관점에서 개방-폐쇄 원칙을 따르는 설계란 컴파일타임 의존성은 유지하면서 런타임 의존성의 가능성을 확장하고 수정할 수 있는 구조다. 추..

  • format_list_bulleted Book
  • · 2025. 7. 21.
  • textsms
Flyway에서 운영 환경 SQL 파일과 Test 환경 SQL을 분리하는 법 - FlywayException: Found more than one migration

Flyway에서 운영 환경 SQL 파일과 Test 환경 SQL을 분리하는 법 - FlywayException: Found more than one migration

Syntax error in SQL statement "ALTER TABLE goals\000a ADD COLUMN group_id UUID[*],\000a ADD CONSTRAINT fk_goal_group\000a FOREIGN KEY (group_id)\000a REFERENCES groups(id)"; SQL statement:ALTER TABLE goals ADD COLUMN group_id UUID, ADD CONSTRAINT fk_goal_group FOREIGN KEY (group_id) REFERENCES groups(id) [42000-232] 운영 환경에서는 PostgreSQL, 테스트 환경에서는 H..

  • format_list_bulleted DB
  • · 2025. 7. 6.
  • textsms
왜 비밀번호에 특정 특수문자만 쓸 수 있을까? - 올바른 비밀번호 규칙에 대해 알아보자

왜 비밀번호에 특정 특수문자만 쓸 수 있을까? - 올바른 비밀번호 규칙에 대해 알아보자

회원가입을 하면 다양한 비밀번호 규칙을 마주하곤 합니다. 특수문자를 입력해야 하는 서비스, 특수문자와 대문자를 입력해야 하는 서비스, 그리고 특정 특수문자를 입력할 수 없는 서비스까지. 그리고 저희는 의문을 가지게 됩니다.왜? 궁금증에서 나오는 의문이었습니다. 처음에는 '왜 특정 특수문자만 쓸 수 있는가'에서 시작된 의문이었죠. 그게 더 안전한가? 다른 특수문자들은 오류가 발생하나? 그럼 굳이 제한을 두고 있지 않은 내 회원가입 API는 좋지 않은 API인가? 그리고 의문은 의문을 불러왔습니다. 비밀번호 규칙은 왜 서비스마다 다르며, 과연 그 중 뭐가 옳은 것인가! 그러니까, 어떤 비밀번호가 안전할까? 나는 회원가입 API를 만들 때 어떤 제약을 거는 게 좋지?* 해당 글은 4년전에 쓴 글을 다듬어 재발..

  • format_list_bulleted Etc
  • · 2025. 6. 9.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • navigate_next
프로필사진

GIF YATTA! GIF

항상 쉽게 글을 쓰려고 노력합니다. 피드백 감사합니다. (꾸벅)

👀 About Me
  • Other blog
전체 카테고리
  • 분류 전체보기
    • Spring
    • Nest
    • Language
    • DB
    • Book
    • 회고
    • Etc
최근 글
인기 글
최근 댓글
태그
  • #object
  • #오브젝트
  • #Good
  • #book
  • #Framework
  • #Why
  • #DB
  • #객체지향
  • #객체지향의사실과오해
  • #객사고
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바