study


  • 디버깅의 함정: 슈뢰딩거의 쿼리?

    레벨 2의 세 번째 미션. JPA가 도입되면서 이런저런 학습을 하던 중, 크루로부터 기이한 현상을 제보받았다. 연관관계 지연 로딩에서 일어나는 현상이었는데, 정확한 상황은 아래 코드를 확인해 보자. 책과 출판사를 표현하는 두 가지 엔티티 Book과 Publisher가 존재한다. @JdbcTest를 통해 트랜잭션을 설정하고, 내부에서 아래와 같은 테스트 코드를 작성해 보았다. 현재 entityManager를 통해 flush 연산만 진행했고, 영속성 컨텍스트를 비우지 않았다. 같은 트랜잭션 아래에 있으므로 persist한 엔티티는 관리되고 있는 중이다. 따라서 findById에서 추가적인 쿼리가 발생하지⋯


  • [우아한테크코스 6기] 레벨 2: 4주 차 회고

    주4회 해주세요 주4회 해주세요 주4회 해주세요 🥹 화요일부터 시작했던 행복했던 한 주가 마무리됐다. 다음 주에는 수요일이 또 빨간 날이라 잔뜩 기대 중 🥹 4일뿐인 한 주기는 했지만, 그만큼 밀도있었던 한 주였다. 모두가 미션하느라 바빠서 비교적 조용했던 잠실 캠퍼스를 지냈다! 어찌저찌 마무리가 되어가는 중이지만, 다시 이 코드를 들고 다음 미션을 하려니 숙연해지는 중… 🔥 이번 미션동안 담아갈 것을 잘 담아가자! 📋 여기저기 붙은 전단지, 테스트 하세요! 저번 주까지만 해도 테스트에 대한⋯


  • [우아한테크코스 6기] 레벨 2: 3주 차 회고

    이번 주는 알차게 지냈다~! 새로운 페어와 미션도 진행하고, 미뤄뒀던 테코톡도 해결하고. 이것저것 한 일이 많아서 정신을 잘 잡는 것이 관건이었다. 한 번은 결국 정신을 놓아 재밌는 에피소드도 있었지만, 아래에서 설명하도록 하겠다 🫂 슬슬 ‘내가 무엇을 모르는가?’ 라는 느낌보다는 ‘내가 어떤 것을 해결하고 있는가?’ 에 더 고민을 쏟고 있다. 특히나 이 질문은 한 가지 문제를 해결하면서 여러 가지 생각이 동시에 쫓아오는 일이 잦아서, A로 해결해야 할 것을 (쓸모없는) B나 C를 동원해⋯


  • [우아한테크코스 6기] 레벨 2: 2주 차 회고

    이번 주는 크루들과 토론하는 시간이 잦았다. 설득을 하고 당하면서 생각을 다듬었다. 그 와중에도 정말 잘 되어가는 건가? 라는 느낌도 든다. 이번 주동안 이야기했던 주제들을 다시 한 번 정리해보는 시간이 있어도 좋겠다. 지난 주에 아팠던 게 점점 나아졌지만 꽤나 오래 가서.. 초반에는 계속 골골댔던 한 주. 특히 미션을 마무리하면서 계속 등장하는 여러 토론거리를 생각하느라 머리가 지끈하다. 카페석(?)에 앉아 지나가는 크루를 붙잡고 이야기하는 일도 많았는데, 설득하고 설득당하기의 연속. 이야기를 해나가면서 바닥을 다져갈⋯


  • [우아한테크코스 6기] 레벨 2: 1주 차 회고

    방학이 쏜살같이 지나갔고, 새로운 레벨이 시작되면서 함께할 조도 바뀌었다! 방학 동안에는 모자란 잠을 내리 자느라 시간이 다 간 듯… 브리네오조 MT도 다녀왔는데, 일정이 딱 시작하는 전 날에 끝나도록 돼 있어서 몸살을 좀 앓았다. 이 때문인지는 모르겠지만 감기 때문에 수목금 내리 고생했다 🥹 1레벨 때에는 자바와 객체지향에 대해 깊은 생각을 해 보았다면, 2레벨부터는 본격적인 웹 서버를 구축하기 위한 스프링 프레임워크를 활용하게 된다. 겪어보지 못했던 새로운 타입의 학습을 진행하게 돼서 즐겁게 지낸⋯


  • 추상화 수준을 활용해 좋은 코드 작성하기

    제목부터 어려운 단어가 등장했다. 추상화 수준. 개인적으로 abstract라는 영단어가 추상화라는 단어로 온전히 표현되지 않는 감이 있지만, 통상적으로 사용되므로 이 글에서도 추상화라고 다룬다. 이 글에서는 추상화 수준에 대해 알아보고, 어떻게 코드로 적용할 수 있을지 설명한다. Java는 추상화를 통해 발전해 왔다. 추상 클래스, 인터페이스, 레이어의 분리 모두 객체지향과 책임 분리에서 시작됐다. 각 객체의 공통된 특성을 뽑아 나타낸다. 특성을 일반화하면 보다 쉽게 표현할 수 있고, 사람의 수준에서 문장을 읽듯 매끄러운 코드를 작성할 수⋯


  • [우아한테크코스 6기] 7주 차 회고

    레벨 1이 끝나가고 있다. 체스에 DB가 들어오면서 꽤나 막막한 한 주를 보냈지만, 이건 체스 회고에서 자세히 적어야지. 이번 단계가 끝나면서 3월도 마지막 주를 바라보고 있다. 글을 쓰는 시점은 이미 4월하고도 이틀이 지났지만…진짜 바빴어요 매일매일 있었던 일 중에서 회고에 쓸 만한 일들을 기록해두고는 하는데, 이번 주에는 신기할 정도로 양이 적다. 서론에서만 모든 이야기를 쓸 수 있을 정도. 그만큼 바빴지만, 그 와중에서도 정신 꽉 붙들고 기록하는 건 중요하다. 지금이 제일 젊을 때라고⋯


  • [우아한테크코스 6기] 6주 차 회고

    산 넘어 산이라고 하던가… 블랙잭이 끝나니 더 어려운 미션이 면전에 나타났다. 체스를 구현하는 것이었는데, 특수룰이 없는 일반적인 체스 룰을 사흘만에 구현해내야 했다. 덕분에 화수목이 싹 날아간 느낌이지만 회고는 회고대로 써 봐야지. 이번 주도 잘 지냈다! 👌😉 💬 설계의 중요성 사다리 – 블랙잭으로 이어지는 두 개의 미션에서 구조를 엎었던 일이 잦았다. TDD랍시고 멀리서 바라보기, 큰 단위에서 작은 단위로 쪼개 나가기를 연습한다고 나름 생각했다. 하지만 모든 것의 전제는 설계가 잘 되어 있을⋯


  • [우아한테크코스 6기] 5주 차 회고

    이번 주는 내내 블랙잭에 빠져 살았다. 블랙잭에서 생각했던 내용들은 블랙잭 회고에 적어 두었으니, 이번에는 생활에 대해서 조금 더 자세히 적어보려고 한다. 그래도 아마 거의 미션 관련된 것 같지만… 일단 출발해 보자고 🏄🏻‍♂️ 이번 주의 가장 큰 수확은 JDK다. 초창기부터 있었던 제육-돈까스-국밥 밈이었는데, 이걸 짤로 만들어서 슬랙의 이모지가 되었다. 배고프면 이제 이걸 고르면 되나 싶다ㅋㅋ🙄 만들면서 JDBC는 뭐로 만드나 이야기도 했었는데, 족발-닭발-보쌈-추어탕이었나? 기억이 잘 나질 않는다ㅋㅋ 🧠 매주 월요일, 소프트스킬 피드백⋯


  • Git submodule로 활동 기록 정리하기

    프로젝트를 진행할 때 다른 프로젝트를 활용해야할 때가 있다. 이 경우 가져다 쓰는 프로젝트를 Git을 통해 관리하지 않고 서브모듈submodule을 사용해 불필요한 코드의 업로드를 최소화하는 방법이 있다. 이 글에서는 서브모듈을 활용해서 여러 레포지토리에 분산되어 있는 활동들을 한 곳에 모아보는 방법을 소개한다. 가장 처음 떠오르는 것은 아카이브 저장소를 만든 다음, 그 레포지토리에 지금까지 활동한 것을 다시 Git을 통해 관리하는 것이다. 한땀한땀 폴더를 복사/붙여넣기한 뒤에 관리할 수 있겠다. 이 경우, 본래 저장소와 아카이브 저장소에⋯


Categories