study


  • [우아한테크코스 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을 통해 관리하는 것이다. 한땀한땀 폴더를 복사/붙여넣기한 뒤에 관리할 수 있겠다. 이 경우, 본래 저장소와 아카이브 저장소에⋯


  • [우아한테크코스 6기] 블랙잭 미션 회고

    우여곡절 끝에 블랙잭 미션 2단계가 머지됐다🎉 2단계를 진행할 때, 책임 분배가 잘못되었음을 깨닫고 다시 엎는 일이 두 번이나(…) 있었다. 테스트 못지않게 단단한 설계가 선행되어야 한다는 것을 알게 되었던 미션이었다. 이번 글에서는 내가 고민했던 부분을 위주로 작성하고자 한다. 코드에 의도를 담자 매번 의식하려고 노력하지만 잘 되지 않는 부분이다. 이번에는 코드 한 줄 쓸 때마다 내가 어떤 생각을 가지고 타이핑했는지 돌아보았다. 왜 private으로 닫았는지, 왜 package-private으로 열었는지와 같은 생각, 메서드 이름을 어떻게⋯


  • [우아한테크코스 6기] 4주 차 회고, 블랙잭 1단계

    보통은 많은 시간이 지나고 나면 ‘한 것도 없는데 시간이 많이 갔다’고들 하는데… 그런 말은 못 하겠다. 앞선 4주는 정말 밀도있는 시간을 지냈다. 새로운 일들이 계속해서 등장하니 적응하는 데 걸리는 시간도 있었겠다. 특히나 이번 주는 기록에 시간을 많이 못 들여서 아쉽다. 여전히 느끼는 것이지만, 딱 맞아떨어진다면 40분이면 도착하는 거리를 불확실한 대중교통 때문에 한 시간넘게 불안해야 하는 게 참 아쉽다. 괜히 직장인들이 자차를 타고 다니는 게 아닌 것 같기도.. 또 차 막히면⋯


  • Garbage Collection in Java Hotspot VM

    C, C++와 같은 언어에서 동적 할당을 해 본 적 있는가? 동적으로 메모리를 사용할 때 반드시 지켜야 하는 사항, 배울 때 귀에 딱지가 얹도록 들었던 말이 바로 얻어온 메모리를 OS에 다시 돌려주는 것이다. 제때 반환하지 않으면 OS로부터 동적으로 할당받을 수 있는 메모리가 줄어들게 된다memory leak . 최악의 경우에는 OS가 더이상 메모리를 더이상 할당해주지 못해 프로그램이 뻗어버리는 상황이 발생할 수 있다. 🤯 초심자들의 통곡의 벽이었던 포인터와 동적 할당을 Java에서는 걱정할 필요가 없다.⋯


  • Java Virtual Machine: 가상화는 무엇일까

    JVM 문서를 읽으면서 정리하는 글. Virtual Machine이라는 단어가 조금은 생소할 지 몰라도, 글을 읽음으로써 개념을 이해하는 데에 목적을 둔다. Java 프로그램이 실행되는 가상 머신이라는 무대는 무엇일까? 왜 가상화를 해야 했을까? 라는 질문을 스스로 던지면서 읽으면 더 도움이 되겠다! Virtualization? 가상화란 무엇일까? 라고 생각해 보면, 존재하지 없는 무언가를 만들어내는 느낌이다. 실제로 하드웨어 플랫폼, OS 등을 가상으로 만들어 그 위에서 어플리케이션이나 다른 OS와 같은 레이어를 얹을 수 있도록 한 것이다. 그 중에서도⋯


Categories