2025/05 13

두려움 인정하기. - 25년 6월 1주차 회고

솔직하게 말하자면, 나의 가장 큰 컴플렉스는 “두려움”이다. 나의 회고는 대부분이 이 두려움을 컨트롤하기 위한 방향으로 나아가고 있다. 겁이 나면, 생각이 많아지고, 조금 더 많은 걸 알아야 한다고 자신을 몰아붙인다.그렇게 이번주도 조금 더 열심히 하다가, 켄트 백의 “테스트 주도 개발”을 읽으면서 느낀 인상깊은 글귀가 있어 이 회고를 작성한다. 테스트 주도 개발 - 예스24Test-Driven Development: By Example아름다운 코드와 즐거운 개발을 위한 테스트 주도 개발테스트 주도 개발은 학계와 업계에서 많은 주목을 받아온 프로그래밍 방법으로, 여러 연구 논문과 실례를 통해www.yes24.com 켄트 백의 “테스트 주도 개발”에서, 켄트 백은 두려움을 두가지 종류로 정의한다.비합리적 ..

개인적 공간 2025.05.31

[객체지향 패러다임] OOD와 GRASP 패턴, 웹 개발에서의 객체지향 적용

이 게시글을 검색해서 탐색했다는 것은, 객체지향 패러다임 중에서도 OOD와, 그 중간에 사용되는 GRASP 패턴의 목적에 대해 찾아보고자 했다고 가정한다.실제로 코드를 짜면서 쉽게 알게되는 부분을 제외하고, OOD(Object Oriented Design) 관점에서의 객체지향에 대해 설명하도록 하겠다.다소 추상적이고 이론적으로 들리지만, 그만큼 의식적이고 체계적으로 적용하게 되면 일관성 있는 코드가 나온다.웹 구현에서 객체지향적인 코드는 어떻게 나오는지에 대한 고찰을 담았다.권장하는 이전 글 - SOLID 원칙목차OOP(Object-Orientied Paradigm)이란?OOP에서 이야기하는 "책임"이 무엇인가?분석 - OOA설계 - OOD설계 - Interaction Diagram적절한 책임의 할당 -..

효율적으로 배우기: 백면서생, 주먹구구가 되지 않도록 - 25년 5월 4주차 회고

효율적으로 학습하려면, 이론이 진리일까? 아니면, 경험과 실전이 진리가 될까?이론, 지식장점응용에 강하다.단점너무 많은 것들을 알아야 한다.지금 내가 알아야 할 것 외에, 쓸데없는 것들을 너무 많이 알아야 한다.경험, 실전장점이론만으로는 알지 못했던 깊은 지식을 알 수 있게 된다.단점내가 경험한 것만이 전부라고 알게 되고, 좁은 시야를 갖게 된다.둘 중 하나만 있으면 추상적이게 된다.둘 다 있어야 구체화가 된다.작업 주도 학습이미 학습된 부분에 대해서는 작업 주도 학습 적용하기작업을 통해 학습하는 것.무작정 이것저것 해봤자, 체계적인 학습은 불가능하다.명확한 목표, 깊이 있는 이해, 의도적인 적용, 그리고 꾸준함이론+실습 둘 다 있어야 진짜 “알고 있다”라고 말할 수 있다.일단 이것저것 시도해본다효율화를..

개인적 공간 2025.05.24

도메인 주도 설계(DDD)

사전 지식 - GRASP 패턴도메인 주도 설계(Domain-Driven Design) 란?도메인 주도 설계(Domain-Driven Design)는 소프트웨어의 핵심 비즈니스 도메인에 집중하여 복잡한 도메인 지식을 코드의 도메인 모델로 표현하고 발전시키는 설계 철학이다.DDD는 복잡한 비즈니스 로직을 도메인 모델(객체 모델)로 추상화함으로써 비즈니스에서 발생하는 현실과 코드 간의 간극을 줄인다. 이를 위해 도메인 전문가와 개발자는 공유하는 보편 언어(Ubiquitous Language)를 구축하여 요구사항 분석부터 설계, 구현까지 동일한 언어로 소통한다. 이 과정에서 모델은 지속적으로 정제되고 리팩토링되어, 요구사항의 의도를 코드에 정확히 반영하게 된다. DDD는 왜 사용하는가?전통적인 데이터 중심 설..

[SuperBoard] 댓글 수 조회 쿼리 최적화

요약게시판 기능을 실제로 서비스한다고 가정할 때, 댓글 수 표기 로직을 최적화 수행단순 group by + 집계함수 + limit/offset의 문제점 파악실행계획 분석최종 결정 - from 절 서브쿼리 + index커밋 및 수정 내역 PR - 링크 Board/feature/41 댓글 수 조회 최적화 by GoGradually · Pull Request #51 · GoGradually/SuperBoard관련 이슈 close #41 다음 링크를 참고해주세요. 댓글 수 조회 쿼리 최적화 Summary by CodeRabbit 신규 기능 MariaDB 데이터베이스 연결을 위한 드라이버가 추가되었습니다. 게시글 및 댓글 데이터를 위한github.com 서론기존에 구현해둔 게시판 기능을 좀 더 최적화해보기 위해,..

"잘 쉬기" - 25년 5월 3주차 회고

“잘” 쉬기.계획 없는 휴식을 피하자.쉴 계획 또한 수립해둬야 한다.돌발 휴식이 하고싶어지지 않도록, 컨디션 관리 잘하자.왜?1. 결정 피로 -> 결국 결정은 해야 한다. - 계획없이 쉬면, 쉬면서도 결정해야 한다.2. 심리적 분리 + 복귀 충격 완화 - 쉴 계획 + 복귀 계획이 모두 있어야 마음 편히 쉬고 복귀할 수 있다. - 계획 없이 쉬면, 역체감 대처가 되질 않는다.의지와 노력이 아닌, 시스템으로 움직여야 피로하지 않다.애자일하게 움직이기 - 돌발 상황의 대응둔함변화를 예상하지 않는 체계조급+경솔함체계 없이 변화하는 상황.충분한 고려 없는 대처민첩함변화에 대한 대처와, 그 대처를 평가할 수 있는 체계침착함은 시행착오에서 보인다.골랐더니 정답이었어요 ← 조급함의 신호모든 선택 시점에..

개인적 공간 2025.05.17

[Gradle] build.gradle, 그리고 settings.gradle

본 글은 멀티모듈 빌드와 관련된 gradle의 핵심 기능을 다룹니다.단순 라이브러리 의존용으로 사용하는 걸 넘어, 직접 모듈을 만드는데 필요한 기본 지식을 다루니, 관심있다면 docs를 직접 읽어보시는것도 추천드립니다.주요 주제gradle의 디렉토리 구조Project Root Directory멀티 모듈의 구조Gradle의 빌드 라이프사이클settings.gradlebuild.gradleGradle의 프로젝트 루트 디렉토리gradle은 다음 두가지 디렉토리를 사용한다.Gradle User Home DirectoryProject Root DirectoryGradle User Home DirectoryGradle의 글로벌 설정, 초기화 스크립트, 캐시 및 로그 파일이 저장된 디렉토리이다.자세한 내용은 해당 문..

[Gradle] Gradle - 기본 구조 알아보기

우리는 스프링을 사용하면서 Gradle이라는 추상화 도구를 통해 간편하게 로컬에서 프로젝트를 띄워볼 수 있었다.하지만, Gradle이라는 도구에 대해서 깊게 이해하고, 응용할 수준이 되진 못했다.한번 Gradle에 대해 좀 더 깊게 이해하고, 오류 상황에서 대처할 수 있도록 기본 지식을 갖춰보자.Gradle이란?Gradle은 프로젝트 초기화 및 빌드 자동화 도구이다. 다시말해, 설정/외부 라이브러리 의존 관리를 간단하게 만들어주는 역할을 수행한다.우리가 IDE, Spring Boot initializer로 흔히 생성하는 스프링 프로젝트는 gradle과 같은 빌드 도구를 기반으로 생성되는 프로젝트이다.gradle init을 수행하면 gradle이 직접 만들어준 프로젝트를 실제로 확인해볼 수 있다.Gradl..

좋아하는 일 vs 잘하는 일 - 25년 5월 2주차 회고

“좋아하는 일”과 “잘하는 일”어렸을 때 자주 들었던 말.인터넷에도 이에 대한 다양한 이야기가 있다.워렌 버핏, 마윈, 제프 베이조스 등 다양한 사람들이 좋아하는 일을 하라, 잘하는 일을 하라라고 이야기를 남겼다.좋아하는 일을 해야 한다.좋아하는 일을 해야 오래할 수 있다.꾸준히 하다보면 언젠가는 잘할 수 있다.잘하는 일을 해야한다.자신이 패배하는 상황에 놓일 때의 불편함좋아하더라도, 자신이 지게 되는 상황에 놓일 때는자신을 원망하지 말고, 전장을 바꿔야 한다.성취에는 노력 뿐만 아니라, 재능도 필요하다.잘하는 사람은, 나보다 더 좋아한다는 의미이기도 하다.다른 사람보다 덜 노력한 것.이 상황에서, 자신의 “좋아함”이 다른사람에게 밀리는 상황을 상상해 보았는가?정말 “정량적”으로, 이 일을 내가 좋아하거..

개인적 공간 2025.05.10

[개발자를 위한 통계학 찍먹하기] 0편 - 동기

서론나는 그동안 포트폴리오에서 발견되는 성능 테스트에 대한 회의론을 갖고 있었다.정량적 데이터에 의한 동기만으로 성능 테스트가 수행된 경우, 어디서 본 듯한 이유와 어디서 본 듯한 개선, 짜맞춘 의도에 짜맞춘 개선밖에 볼 수 없었고, 정성적 데이터에 의한 동기만으로 성능 테스트를 수행한 경우, 트레이드오프를 고려하지 않은 단순한 오버엔지니어링으로밖에 보이지 않았다.따라서, 해당 성능 테스트에서 작성자들의 문제 해결 능력을 이해하기가 어려웠다.하지만, 아무것도 안하는 것보다는 낫다는 걸 나 스스로도 인정하고 있긴 했다.그래서, “할거면, 논리적으로 하자.” 라는 결론에 도달하게 되었다. 참고: 정량적 데이터 vs 정성적 데이터 정량적 VS 정성적 데이터 차이 파악하고 균형 있는 설문조사 실시하기정량적 데이..