분류 전체보기 150

25년 6월 2주차 KPT 회고

Keep - 유지해야 할 것근성, 꾸준함TDD를 학습한 뒤, 적극적으로 이곳저곳에 시도중문제를 뭉뚱그려 “모든 것이 엉망이다” 라고 감정적으로 결론짓지 않고, 차분하게 위기 요소를 분류함.기술적 문제경제적 문제환경적 문제Problem - 개선해야 할 것맨날 쉰다고 하고 안쉰다.구현/시뮬레이션이 내 약점임을 파악함.Try - 시도해 볼 것휴식의 전략더보기체력 관점컨디션 관리도 실력이다. 긴급 상황에 대처할 수 있는 기본 체력을 길러두기 상위 티어의 템포를 따라갈 수 있도록아이디어 관점프로젝트의 개선 방안은 다른 일 하면서, 멍때리면서, 휴식할 때 나왔다.무언가를 열심히 집중하고 있을 땐, 아이디어가 떠오르지 않는다.하루 6시간 이상 공부는 자제하고, 남은 시간은 휴식이라는 투자에 집중하기.피로 관점 - 웅..

KPT 2025.06.07

테스트 주도 개발(TDD)의 적용

코드의 우아함을 신경쓰다보면, 코드 한줄을 짜더라도 이게 잘 구조화된 코드인가 하고 한참을 고민하게 되는데, 이게 좋은 방식인가?그렇다고 아무렇게나 막 짜니, 코드가 지저분해지고 리팩토링하긴 무서워진다.그래서 TDD를 학습했다.후기TDD 적용 방법먼저, 요구사항을 제대로 이해하자.TDD로 일단 돌아가게 만들고, 중복을 제거하자.삼각측량 기법을 적극 활용하자.모든 중복을 제거하기 전까진 테스트 코드를 통과한 것으로 치지 말자.리팩토링을 수행하지 않으면, 단편적인 기능 구현의 연속만 하게되고, 결과적으로는 유지보수하기 어려운 '단순하고 파편화된' 코드 덩어리가 만들어진다.탑다운/바텀업 둘중 하나가 정답은 아니다.막힐때마다 TDD도 해보고, OOD도 해보고 번갈아가며 접근해야 한다.한가지 방식에 얽메이지 말기..

[모-던한 프로그래밍] 람다/스트림/Optional, 지연 평가와 flatMap

본 글은 스트림에 어느정도 익숙한 사용자를 대상으로 작성된 게시글로, IDE를 통해 어찌저찌 사용하는 수준의 개발자를 대상으로 작성된 게시글입니다.IDE가 추천해주는 기능을 넘어서, 능동적으로 스트림을 사용하기 위한 기본 동작 구조를 살펴봅시다.목차스트림(Stream)이란?람다 vs 익명 클래스스트림의 Lazy Operationmap vs flatMapOptional기본형 특화 람다/스트림그 외 주요 기능스트림(Stream)이란?스트림의 정의데이터의 흐름을 추상화해서 다루는 도구로, 컬렉션 또는 배열 등의 요소들을 연산 파이프라인을 통해 연속적인 형태로 처리할 수 있게 해줍니다. 이때, 연산들의 체이닝을 적극 활용합니다. 파이프라인 (컴퓨팅) - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과..

두려움 인정하기. - 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