분류 전체보기
-
20221012 TIL SpyBean VS. MockBeanTIL 2022. 10. 12. 10:52
이번 주 부터 본격적으로 스프링부트 TDD를 배우고 있는데, 테스트하는 과정에서 @SpyBean을 사용하고 있다. 그런데 무엇을 하는 친구인지 궁금해서 찾아보았다. 일단 @SpyBean을 이해하려면 Test Double을 이해해야 한다. Test Double은 테스트를 할 때 원하는 부분의 테스트에 집중할 수 있게 관심사 밖의 부분을 대체 해준 것이다. 즉, 정말로 테스트하고자 하는 부분 외의 부분 중에 실제를 사용하기 곤란한 경우 Test Double을 이용하게 된다. Mock, Spy등이 있다. Mock은 껍데기만 있고, 나머지는 우리가 원하는대로 채워 넣어줘야 하고, Spy는 특정 부분만 우리가 원하는 대로 작동하게 하고, 나머지는 그대로 작동하게 하고 싶은 경우 사용한다. Spy라는 용어가 왜 붙..
-
20221011 TIL 막힐 때는 단계를 나누어 차근차근TIL 2022. 10. 11. 09:21
오늘 코딩테스트를 풀다가 for문으로 풀면 쉽게 풀릴 것 같은데 stream을 바로 사용하려니 어떻게 해야할 지 감이 잘 안 잡혔었다. 그런데 시간이 가고 있는 것을 보니 일단 for문으로 풀어야겠다는 생각이 들어서 for문으로 풀었고, 그 후에 stream으로 리팩토링을 했는데, 리팩토링에 걸린 시간이 생각보다 오래 걸리지는 않았던 것 같다. 예전에 어떤 분이 자신은 코딩테스트를 풀 때 일단 풀기 쉬운 언어로 먼저 풀고 그 뒤에 java 등 필요한 언어로 푼다고 하신 글을 본 적이 있다. 이렇게 두 번에 걸쳐 푸는데도, 오히려 java만으로 푼 사람보다 더 빠르게 푸셨다고 하셨다. 글을 읽을 당시에는 믿기 어려웠지만, 풀다보니 빠르게 갈 수 있는 길을 돌아가는 것 같아도, 일단 빠르게 풀어보고, 리팩토..
-
프로그램을 유연하게 만들어주는 객체 지향, [개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴]책을 읽자 2022. 10. 10. 22:16
수정하지 않는 프로그램은 없다. 사용자의 요구사항은 항상 변하기 때문에 유지보수에 용이한 프로그램을 짜는 것이 중요하다. 객체 지향 기법을 적용하면 소프트웨어를 더 쉽게 변경할 수 있고, 따라서 요구사항의 변화를 더 빠르게 수용할 수 있다. 절차 지향은 프로시저들로 프로그램을 구성하는 기법인데, 다수의 프로시저가 데이터를 공유하는 방식으로 만들어진다. 따라서 프로그램 규모가 커질수록 데이터가 수정될 때 수정해야 되는 프로시저가 증가하고, 같은 데이터를 프로시저들이 서로 다른 의미로 사용하는 경우가 발생할 가능성이 높아진다. 이러한 단점을 보완할 수 있는 것이 이 책에서 자세하게 설명하는 객체 지향이다. 객체 지향은 객체들의 협력으로 구성된 프로그램이고, 객체는 자신만의 데이터와 프로시저를 갖고, 기능을 ..
-
20221010 TIL Stream api와 친해진 하루TIL 2022. 10. 10. 16:12
저번 주부터 stream api를 배열과 함께 사용을 하다가 toArray()메소드가 Object[] 형태로 반환을 해서 형 변환에 어려움을 겪고 있었다. 캐스팅을 해도 아래와 같은 ClassCastException에러가 떠서 그냥 for문을 돌려서 오늘도 코딩테스트를 풀었다. 그런데 뭔가 방법이 있을 것 같아서 찾아보다가 https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#toArray-java.util.function.IntFunction- Stream (Java Platform SE 8 ) A sequence of elements supporting sequential and parallel aggregate operatio..
-
8주차 개념노트메가테라 2022. 10. 9. 23:54
Spring Java기반의 웹 애플리케이션 프레임워크이다. 동적인 웹사이트를 개발하기 위한 서비스들이 제공된다. 레포지토리, 서비스, 컨트롤러의 계층의 의존성을 스프링 프레임워크가 연결해준다. 스프링 프레임워크가 필요에 따라 사용자의 코드를 호출하는, 제어 역전이 나타난다. 동적 웹 정적 웹과 대조되는 개념이다. 옛날 옛적에는 정적인 웹이 주로 제공되었었다. 정적인 웹은 말 그대로 바뀌지 않는, 이미 완성품이 제작된 상태에서 서버가 제공만 하는 형태였다. 예를 들면 회사 소개 웹사이트의 경우에는 이미 소개 내용이 작성된 상태에서 서버가 제공만 하기 때문에 정적 웹에 해당한다. 동적 웹은 사용자가 방문할 때 다른 내용이 제공될 수 있는 웹이다. 예를 들면 게시판의 경우 게시판에 글을 쓸 때마다 목록이 바뀌..
-
20221009 TIL 쓰고 싶은 프로그램을 만들자TIL 2022. 10. 9. 18:05
저번 주에는 스프링 없이 자바로 웹 서버를 만들어 봤다. 물론 자바만으로 만드는 것도 재밌었지만, 간단한 프로그램을 만드는데도 의존성 주입을 많이 해줘야 했다. 만약 커다라고 복잡한 프로그램을 자바만으로 만든다고 했다면 정말 의존성 관리가 힘들었을 것 같다. 이번 주부터는 Spring을 배우고 있는데, 스프링이 의존성 관리를 해줘서 훨씬 깔끔한 프로그램을 짤 수 있을 것 같다. 스프링이 없었다면 프로그램이 커질수록 고통이 커졌을 텐데, 스프링 덕분에 확장성 있는 프로그램을 쉽게 만들 수 있을 것 같다. 토스를 처음 써봤을 때 복잡했던 이체를 이렇게 간단히 할 수 있음에 감사했었던 것처럼 스프링을 써보면서 감사한 마음이 들었다. 스프링을 만들어주신 분들께 감사하며 프로그램을 만들어야 될 것 같다. 그리고 ..
-
20221008 TIL 그럴 수 있어. 이런 날도 있는 거지 뭐.TIL 2022. 10. 8. 16:38
너무 예쁜 하루다. 오늘은 한글날 연휴의 시작이지만 연휴가 아니다. 메가테라에 연휴나 주말은 존재하지 않기 때문이다. 코딩도장에 오면서 날씨가 너무 예쁜 나머지 놀러가고 싶은 마음이 마구마구 커져만 갔다. 하지만 아직 정리하지 못한 개념들, 다음 주 강의가 나를 기다리고 있어서 차마 놀러가지는 못하고 코딩도장에 도착했는데 집중이 잘 되지 않았다. 싱숭생숭한 마음을 붙잡고 HTTP 개념을 정리하기 시작했다. 평일동안 꼭 해야되는 것을 먼저 했더니 꼭 해야되는 것이 끝나고 나서 해야 되긴 하지만 미룰 수 있는 것을 안 하는 것이 반복되었었다. 시간이 충분하다면 미룰 수 있는 것을 먼저 하고, 꼭 해야되는 것을 뒤에 해야 둘 다 할 수 있을 것 같아서 오늘은 개념 공부를 먼저 했다. 하지만 너무 집중이 되지 ..
-
웹 개발자라면 무조건 알아야 하는 HTTP [그림으로 배우는 HTTP & Network Basic]책을 읽자 2022. 10. 7. 17:51
그림으로 배우는 HTTP & Network Basic은 우리가 하루에도 수 없이 많이 쓰는, 없는 삶은 상상하기도 어려운 웹을 지탱하고 있는 HTTP에 대한 책이다. 우리가 웹 사이트를 방문할 때마다 우리는 HTTP로 서버에게 GET요청을 하는 것이고, 우리가 로그인을 하는 등 어떤 데이터를 입력한다는 것은 HTTP로 서버에게 POST요청을 한다는 것이다. 즉, 우리는 알게 모르게 HTTP를 계속 사용하고 있었다. 그렇다면 HTTP란 뭘까? HTTP는 문서 전송 프로토콜(약속)이다. 우리가 어떤 웹페이지의 리소스를 받고 싶을 때 서버에게 웹 브라우저(클라이언트)가 요청을 하게 되는데, 서버와 클라이언트는 HTTP 프로토콜로 통신을 한다. 즉, HTTP는 서버와 클라이언트가 어떻게 메시지를 주고 받을지에 ..