분류 전체보기

    [Spring] DI(Dependency Injection, 의존성 주입)이란?

    의존이란? 의존 주입이라는 단어를 알아보기 전, 의존이라는 단어의 의미부터 알아보자. 여기서 말하는 의존은 객체 간의 의존을 의미한다. 간단하게 아래의 예시를 보자. public class LottoService{ private LottoTicket winLottoTicket = new WinLottoTicket(); public int checkNumber(LottoTicket userTicket){ return winLottoTicket.checkSameNumber(userTicket); } } 위의 코드에서 집중해서 보아야 할 점은, LottoService라는 클래스가 LottoTicket이라는 클래스의 메서드를 사용한다는 점이다. 즉, 간단하게 말해서 객체에서 '의존'한다는 의미는 한 클래스가 다..

    [Spring] @Controller와 @RestController

    String에서 컨트롤러를 지정하기 위한 어노테이션으로는 @Controller와 @RestController가 있다. 기존 Spring MVC의 컨트롤러인 @Controller가 존재하는데도 왜 @RestController를 새로 만들어서 사용하고 있는 것인지에 대해서 정리해보고자 한다. MVC 패턴이란? 먼저, Controller라는 개념이 등장한 MVC 패턴에 대해서 알아보자. MVC 패턴은 Model - View - Controller의 약자로, 각 세가지 형태로 역할을 나누어 개발하는 방법론의 일환이다. 간단하게 설명하면, 각 형태는 다음과 같은 역할을 갖는다. View : 사용자에게 시각적으로 보여주는 부분으로, 사용자와 상호작용을 하는 부분 Model : 해당 애플리케이션이 처리하는 데이터를 ..

    [Spring] @RequestMapping

    @RequestMapping이란? client에서 오는 요청을 처리하기 위한 api url을 매핑할 때, Spring에서는 @RequestMapping이라는 어노테이션을 사용한다. 이때, 편의를 위해서 이 RequestMapping을 4가지로 나뉘어 추가적으로 지원하는데, 이는 아래의 5가지와 같다. @GetMapping @PostMapping @PutMapping @DeleteMapping @PatchMapping @ReqeustMapping의 옵션 value value는 간단하게 말하면 연결할 url이다. 이는 다양한 방식으로 사용할 수 있으며, 기본적으로 url을 넣는 이외에도 정규식, 변수, AntPattern 등을 다양하게 활용할 수 있다. @RequestMapping(value = "/exam..

    [우테코 글쓰기 - 레벨 1] 우테코 한달 생활기

    일단 적어놨던게 있으니 블로그에도 공유해보려고 한다. (사실 한달이라기보단 두달 생활기에 가까워졌지만) 코딩 교육을 받으면서 글쓰기까지 하게된다니, 이부분은 사실 내 친구들이 종종 놀란 부분이기도 했다. 개발자한테 말하기, 글쓰기가 중요해? 라는 질문도 받았는데, 코드를 전하는 것 만큼, 나 자신이 목표한 바나 배운 것들을 말할 수 있는 것은 중요한 역량이라고 생각한다. 더하여, 이과생들이 모이면 대체로 글을 못쓴다는 편견이 있는데, 우테코 사람들은 글도 잘써서 '대체 못하는게 뭘까...' 싶은 생각도 했다. 나름 컨셉을 잡아서 적어본다고 한거긴 했는데, 후다닥 적고 미션하느라 퇴고를 많이 못해서 지금 다시 보니 이상한 점이 보이기도 한다. 그리고 내가 생각보다 쉼표를 많이 쓴다는 점을 깨닫게 되었다. ..

    [JAVA] JVM이란?

    1. JVM이란? JVM이란 JAVA Virtual Machine, 자바 가상 머신의 약자를 따서 줄여 부르는 용어이다 (가상머신은 프로그램 실행을 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것.) 자바 애플리케이션은 클래스 로더를 통해 읽어들여 자바 API와 함께 실행한다. 자바 바이트 코드를 실행할 수 있는 주체다. Bytecode는 클래스 단위(.class)로 생성되므로, 프로그램의 수정이 일어나더라도 전체 소스코드를 다시 컴파일할 필요가 없다. Java가 OS에 구애받지 않고 재사용 가능하게 해준다. (중개자의 역할) 메모리 관리, Garbage Collection을 수행한다. 스택 기반의 가상 머신 2. 왜 자바 가상머신을 알아야 하는가? 한정된 메모리를 효율적으로 사용하여 최고의 성..

    [우테코 회고] 레벨 1 - 3-4주차, 로또 미션 회고

    2주가 또 순식간에 지나갔다. 빠르게 지나가는게 좋은건지 나쁜건지 잠깐 고민했는데, 좋은거라고 생각하기로 했다. 이번 기간에도 한 일들을 일단 리스트업 해보자면, 같은 과 사람들과 진행하는 스터디가 25주를 넘었다. 생각보다 긴 기간동안 진행되고 있는데, 이제는 기존에 이끌어주시던 선배님들 없이, 우리들끼리 스터디를 더 이어나가려는 준비를 하고 있다. 우테코 이전부터 진행하던 프로젝트가 (드디어...) 점차 마무리 되어가고 있다. 사실 바빴던건 이쪽도 동시에 신경써야 했기 때문인데, 드디어 끝난다고 생각하니 왠지 기분이 미묘하다. 사실 코드도 레거시 수준의 이상한 코드라고 생각해서... 언젠가 꼭 고쳐야지 생각중. 객체지향의 사실과 오해, 이펙티브 자바를 꾸준히 공부하고 있다. 로또 미션 진행! PR 머..

    [Java] Stream API

    1. Stream API란 스트림이란 자바 8 API에 새롭게 추가된 기능이다. JDK8부터 Stream API와 람다식, 함수형 인터페이스 등을 지원하면서 Java를 이용해 함수형으로 프로그래밍할 수 있는 API 들을 제공해주고 있다. 그 중에서 Stream API는 데이터를 추상화하고, 처리하는데 자주 사용되는 함수들을 정의해두었다. 여기서 데이터를 추상화하였다는 것은 데이터의 종류에 상관 없이 같은 방식으로 데이터를 처리할 수 있다는 것을 의미하며, 그에 따라 재사용성을 높일 수 있다. 이번 로또 과제를 하면서 개인적으로 Stream API의 사용에 대해서 리뷰어분께 질문을 해봤고,대체러 Stream을 사용한다는 이야기를 들을 수 있어, 한번 정리하면서 공부를 진행해보려고 한다. 위의 예제에서 나와..

    [OOP] 객체지향 프로그래밍

    1. OOP란? OOP란 객체지향 프로그래밍 (Object Oriented Programming)의 약자로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체로 취급하여 프로그램에 반영하고, 순차적으로 프로그램이 동작하는 것과는 다르게 객체의 상호작용을 통해 프로그램이 동작하는 것을 말한다. 객체를 연결시켜 프로그래밍하면 상속, 캡슐화, 다형성을 이용해 코드 재사용을 증가시키고, 높은 유지보수성과 더불어 객체들끼리 서로 메시지를 주고받으며 동작할 수 있게 된다. 2. OOP의 장단점 2.1 장점 코드 재사용이 용이 남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장해서 사용할 수 있다. 쉬운 유지보수 절차 지향 프로그래밍에서는 코드를 수정해야할 때 일일이 찾아 수정해야하는 반면..

    [TDD] Test-Driven-Development란 무엇인가

    1. TDD란 무엇인가 많은 개발자들이 개발보다는 디버깅에 많은 시간을 소요한다고 한다. '만들긴 했는데... 문제가 있어...!' '조금 수정했는데... 갑자기 프로그램이 안 돌아가!' 싶은 문제들이 계속 발견된다는 것. "왜... 되는 거지?"와 "왜... 안 되는 거지?"가 반복되다 보면 개발자들은 절망에 빠지게 된다. 사실 나도 해야 되는데... 만 생각하고 늘 미루던 것이 TDD였기에, 우테코에서 실행하며 계속 감을 잡고 있는 중이다. 1.1 TDD란 이때, 이를 해결하기 위한 방법으로 나타난 것이 TDD, 즉 Test Driven Development이다. 이는 말 그대로 테스트가 주도하는 개발을 의미하는데, 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이..

    [우테코 회고] 레벨 1, 온보딩과 자동차경주 미션.

    우테코에서의 정신없는 2주가 지났다. 하나 하면 또 하나가, 아니... 두개가 생기는 느낌. 그래도 아무튼 우테코라는 배에 잘 안착했다. 대충 뭘 했는지 정리해보자면, 온보딩 기간을 걸치면서 우테코의 생활에 대해서 배워가는 시간을 가졌다. kdt나 다른 일정들에 이제 알람을 맞춰놓고 따라서 매일매일 진행하는 중! 페어프로그래밍을 시작했다! (Thanks to 페어 레오! 리뷰어 던!) 레벨 1 필독서를 구매하고 천천히 읽고 있다. (지금 읽는건 객체지향의 사실과 오해, 이펙티브 자바.) 보이는 라디오 팀 프로젝트도 하고, 발표도 재밌게 마무리! (반란소년 포비) 이펙티브 자바 스터디에 들어갔다. (라면 3개 스터디!) 다른 스터디들에도 더 들어가고 싶었는데, 아무래도 몸 상태나 이것저것 고려했을 때, 이..