Jiihyun's log
close
프로필 로고

Jiihyun's log

  • 분류 전체보기
    • CS
      • DB
    • Spring
    • Project
      • Mingle
      • Showhive
      • Robo77
    • Reflection
    • Clean code
    • Language
      • Java
      • Kotlin
[장기] 미션 회고

[장기] 미션 회고

들어가며레벨 1 마지막 미션으로 '장기'를 구현했다.시작할 때까지만 해도 내가 이 복잡한 게임을 구현할 수 있을까? 했는데,결국에는 DB도 연결하여 프로그램이 종료되어도 게임 데이터를 유지할 수 있게 되었다.다만 블랙잭 때와 달리, 예정된 2주를 넘어 3주에 걸쳐 완성하였다...ㅎㅋ기록하지 않으면 확장된 사고가 흐려지기에,,,장기를 구현하며 고민했던 지점과, 그 과정에서 배운 점들을 차근차근 돌아보려 한다. ▼ PR 링크cycle1: 보드 초기화 + 기물 이동cycle2: 기물 확장 + DB 적용 장기판(Board) 자료구조: 배열 vs List vs Map장기 게임에서 기물의 상태를 관리하기 위해서는 “특정 좌표에 어떤 기물이 있는가?”를 빠르게 조회할 수 있어야 한다. 그렇다면 이 요구사항을 기준으로..

  • format_list_bulleted Reflection
  • · 2026. 4. 21.
  • textsms
상속보다 조합? 블랙잭 구현 시 플레이어와 딜러를 상속으로 설계한 이유

상속보다 조합? 블랙잭 구현 시 플레이어와 딜러를 상속으로 설계한 이유

들어가며블랙잭 미션을 진행하던 중 딜러와 플레이어 사이에 존재하는 중복 코드를 마주하게 되었다. 이 중복을 어떻게 제거할지 고민하던 과정에서 가장 먼저 떠올린 방법은 조합이었다. 평소 객체지향 설계 원칙을 이야기할 때 “상속보다 조합을 사용하라”는 말을 자주 들어왔기 때문이다. 조합으로 구성한 결과, 내부 객체의 기능을 외부로 전달하기 위한 위임 메서드가 계속 늘어나고, 기능이 수정될 때마다 여러 곳을 함께 수정해야 하는 문제가 생겼다.이 경험을 통해 단순히 “상속보다 조합”이라는 원칙을 따르는 것만으로는 좋은 설계가 만들어지지 않는다는 생각이 들었다. 이 글에서는 블랙잭 미션에서 마주한 문제를 바탕으로 조합과 상속이 무엇인지, 그리고 왜 이 상황에서는 조합이 아니라 상속이 더 적절한 선택이 되었는지를 ..

  • format_list_bulleted Language/Java
  • · 2026. 3. 19.
  • textsms
[Gemini 웹앱 출시] 미션 회고

[Gemini 웹앱 출시] 미션 회고

들어가며Gemini Canvas를 활용해 프롬프트만으로 웹앱을 만들고, 즉시 배포하여 공유 및 피드백을 받아보는 경험을 했다.이번 미션을 진행하며 빠른 시간내에 완성도 높은 앱을 여러개 만들었을 뿐만 아니라, AI와 협업하는 방식과 프롬프트를 설계하는 방법에 대해서도 많은 고민과 배움이 있었다.이 글에서는 그 과정에서 느끼고 배운 점을 정리해보고자 한다. PR 링크: https://github.com/woowacourse/gemini-canvas-mission/pull/46 [사용자가 있는 Gemini 웹앱 출시하기] 러키 미션 제출합니다. by Jiihyun · Pull Request #46 · woowacourse/ge✅ 제출 체크리스트 4개 웹앱 제출 (유틸리티 앱 1개 + 게임 1개 + 학습 앱 ..

  • format_list_bulleted Reflection
  • · 2026. 2. 28.
  • textsms
우아한테크코스 8기 최종 코딩테스트 회고

우아한테크코스 8기 최종 코딩테스트 회고

들어가며감사하게도 우아한테크코스 프리코스를 마친 이후 1차 합격을 하여, 최종 코딩테스트를 응시할 기회를 얻었다.이 날을 간절히 바랐고, 실제로 이 날을 맞이한 만큼결과보다도 내가 어떤 생각을 바탕으로 판단과 결정을 내렸는지 되짚어보고 싶었다.문제를 어떻게 해석했는지, 시간 압박 속에서 어떤 결정을 내렸는지, 그리고 그 결정이 나에게 어떤 영향을 끼쳤는지를 정리하지 않으면 금세 잊혀질 것 같았다.따라서 최종 코딩테스트 준비 과정, 시험 당일의 판단과 선택, 그리고 이후의 회고를 차례대로 정리하며앞으로의 나를 발전시키는 데 참고하고자 한다ㅎㅎ 최종 코딩테스트 준비오픈 미션이 끝나고, 일주일 후부터 최종 코딩테스트 준비를 시작했다.1차 합격 결과가 나오기 전이었지만, 만약 합격했을 경우 시험 당일까지 약 2..

  • format_list_bulleted Reflection
  • · 2026. 1. 19.
  • textsms
로보 77 구현기 최종 회고

로보 77 구현기 최종 회고

들어가며로보 77 구현 도전을 마친 뒤, 밀려 있던 일들을 정리하며 잠시 숨을 고르는 시간을 가졌다.일주일 간 충분히 쉬고 나니 다시 달릴 준비가 된 듯하다! 2주 전 나는 작년 편의점 미션에서 경험했던 한계를 다시 마주하고 극복해보고 싶어서 복잡한 요구사항을 가진 로보 77을 선택했고,나만의 객체지향 기준이 복잡한 요구사항 속에서도 얼마나 통하는지 검증하며 기준을 발전시키고 싶었다.(보다 자세한 도전 계기는 아래 링크 클릭! 바람니다)https://jiihyunn.tistory.com/33 로보 77 구현기 0일 차 - 왜 이 도전을 하는가?들어가며화, 수, 목 3일 간의 고민을 마치고, 마침내 도전 주제를 선정하였다👏🏻👏🏻👏🏻👏🏻로보 77이라는 최종 주제를 선택하기까지 여러 주제를 떠올..

  • format_list_bulleted Project/Robo77
  • · 2025. 12. 2.
  • textsms
로보 77 구현기 9일 차 - 불필요한 추상화를 걷어내고 Discord 리스너 테스트하기

로보 77 구현기 9일 차 - 불필요한 추상화를 걷어내고 Discord 리스너 테스트하기

들어가며오늘은 출력 로직의 책임 분리를 다시 살펴보며 개선 작업을 진행했다.콘솔/디스코드 환경의 입출력 모델을 다시 이해하면서 기존 설계의 잘못된 가정을 분명히 인지할 수 있었고, 불필요한 추상화를 제거해 구조적 혼잡을 줄이는 리팩토링을 진행했다.또한 앞으로 기능 추가나 리팩토링 시 기존 흐름이 깨지지 않는 확신을 갖기 위해 디스코드 봇 관련 테스트 코드도 작성했다. 디스코드 봇 특성상 실제 이벤트를 다루기 어렵기 때문에 외부 의존성을 모킹하기 위한 Mockito를 학습하여, EventListener의 흐름이 기대한 대로 동작하는지 검증할 수 있었다. 오늘 한 일입출력 로직 책임 분리불필요하게 사용되던 Reader, Writer 인터페이스를 제거하고, ConsoleInput, ConsoleOutput을 ..

  • format_list_bulleted Project/Robo77
  • · 2025. 11. 15.
  • textsms
로보 77 구현기 8일 차 - 동작 우선 코드, 객체지향으로 CPR 하기

로보 77 구현기 8일 차 - 동작 우선 코드, 객체지향으로 CPR 하기

들어가며오늘은 어제 작성한 코드를 다시 들여다보며 중복을 제거하고, 각 클래스가 맡아야 할 책임을 정의하며 리팩토링 작업을 진행했다.어제는 디스코드 봇이라는 완전히 새로운 환경에서 처음부터 책임 분리·객체지향·깨끗한 구조까지 다 챙기려 했다가는,아예 한 줄도 못 쓸 것 같아 과감히 동작 우선의 코드를 작성했기 때문이다. (돌아가는 쓰레기 코드...)기능이 실제로 작동하는지 빠르게 확인하는 데 목적이 있었기 때문에 여러 책임이 한 클래스에 섞여 있거나, 중복된 메서드가 생기는 등 구조적으로 아쉬운 부분이 많았다.따라서 리팩토링을 통해 각 환경에서 도메인 로직을 최대한 활용하고자 했다. 오늘 한 일gateway intent 제거Slash Command에서는 사용자로부터 메세지를 직접 읽어오지 않아 MESSA..

  • format_list_bulleted Project/Robo77
  • · 2025. 11. 14.
  • textsms
로보 77 구현기 7일 차 - 빈 깡통이었던 디스코드 봇에 생명 불어넣기

로보 77 구현기 7일 차 - 빈 깡통이었던 디스코드 봇에 생명 불어넣기

들어가며오늘부터 본격적으로 디스코드 봇 활성화 하는 것에 도전했다.관련 지식이 전혀 없는 상태라 어디서부터 시작해야 할지 막막했지만,jda 위키 문서와 여러 블로그를 참고하며 천천히 감을 잡아가기 시작했다.특히 디스코드 봇이 콘솔 프로그램과 전혀 다른 방식인 이벤트 기반 구조로 동작한다는 점에서 큰 혼란이 있었고,GatewayIntent, Slash Command 같은 개념들도 처음엔 낯설게 느껴졌다...그래도 작은 것부터 부딪혀보며 하나씩 이해해 나가다 보니 전체 구조가 조금씩 보이기 시작했고, 막막함을 뚫고 구현을 어찌저찌 해낸 것 같다!! 오늘 한 일디스코드 서버에 robo-77 봇 활성화 시키기Discord 봇 토큰 환경변수 설정하기Gateway Intent 알아보기Discord 이벤트 기반 아키..

  • format_list_bulleted Project/Robo77
  • · 2025. 11. 13.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • ···
  • 6
  • navigate_next
전체 카테고리
  • 분류 전체보기
    • CS
      • DB
    • Spring
    • Project
      • Mingle
      • Showhive
      • Robo77
    • Reflection
    • Clean code
    • Language
      • Java
      • Kotlin
최근 글
인기 글
최근 댓글
태그
  • #AWS SES
  • #멀티 모듈
  • #REST Client
  • ##객체 지향 5원칙
  • #반송 이메일
  • #s3 presigner
  • #aws sdk v2
  • #HTTP 응답
  • #멱등성
  • #presigned url
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바