전체 글 76

[매칭앱 시스템 - 0clock] [CI/CD] Github Actions 삽질하기

이번 프로젝트에선 개발인생 처음으로 CI/CD를 도입해보기로 마음먹었다. 이전 프로젝트들에서 항상 문제가 되던 것이, 배포를 내가 직접 .war 파일, .sql 파일등등을 매번 ssh 나 ftp 를 통해 직접 옮기고, 실행시키는 방법으로 배포를 했었다. 그러다보니, 간혹 서버에 파일을 옮겨놓고, 실행을 하지 않는다던지, 중지 명령어를 먼저 입력하지 않고 실행명령어를 입력한다던지 이런 실수들이 발생하곤 했다. 그 때마다, 영문도 모른채 프론트단에서 api 응답이 안온다던지 이런 상황을 마주치곤 했다. 그 때마다, CI/CD를 하고 싶었지만, 아무것도 모르는 상황에서, 이미 진행중인 프로젝트에 CI/CD 도입하겠다고 설치다간 배보다 배꼽이 더 큰 상황이 될거같아 매번 포기했다. 하지만, 이번 프로젝트는 마침..

Project 2022.07.20

[목표관리 시스템 - 골키퍼][이슈] CORS 설정이 안먹힌다?

개요 - CORS 설정이 안먹힌다고..? 이번에 팀 프로젝트로 진행중인 골키퍼 프로젝트에서 프론트엔드 개발자분들이 CORS를 해결해달라고 요청하셔서, 스프링 설정파일에 CORS 예외 설정을 추가했다. 아래 설정 클래스의 9 ~ 13 라인이 CORS 예외 설정을 하는 코드다. package com.j2kb.goal.config; //import 문 생략 @Configuration @EnableTransactionManagement public class WebConfig implements WebMvcConfigurer { @Autowired private DataSource dataSource; @Override public void addCorsMappings(CorsRegistry registry) ..

Project 2022.05.31

[Spring 공식문서 번역 프로젝트]Spring Web MVC (1.1.9)

1.1.9. View Resolution Spring MVC는 ViewResolver, View 인터페이스를 정의하여 개발자가 모델을 브라우저에서 렌더링할 때 특정 랜더링 기술(view technology 는 랜더링 기술로 번역했습니다.)에 얽메이지 않도록 하였습니다. ViewResolver 는 View의 이름과 실제 View를 대응시키는 기능을 제공합니다. View는 특정한 랜더링 기술로 넘어가기 전에 데이터를 미리 준비합니다. 아래 표는 ViewResolver의 계층구조에 대해 자세히 설명한 표입니다. ViewResolver 종류 설명 AbstractCachingViewResolver 이 클래스의 하위 클래스는 자신이 처리한 view 인스턴스를 캐싱합니다. 캐싱은 랜더링 기술의 퍼포먼스를 향상시킵니다..

개발영어공부 2022.05.22

[J2KB 6기] 후기

올해 2월부터 4월까지, J2KB 라는 동아리에 참여했다. 이제 그 후기를 작성해 본다. 어떻게 J2KB를 알게되었나? 작년 11월 말, 학교 후배랑 카톡하다가, 후배가이런 이야기를 했다. 그렇게 J2KB 6기에 참여하게 되었다. J2KB에서는 매주 정기세션, 서브젝트, 유니콘/포니콘 프로젝트 활동을 진행했다. 정기세션 J2KB 정기세션은 매주 토요일 2시부터 3시까지 한시간동안 진행되었다. 정기세션의 형태를 크게 2가지로 나눌 수 있는데, 하나는 토크이고, 하나는 유/포니콘 발표다. 토크 컨텐츠의 경우 한시간동안 어떤 주제에 대해 운영진과 그들이 섭외한 사람들이 이야기하는 형식으로 진행되었다. 현업에서 일하고 계신 개발자들 모셔다가 왜 개발자의 길을 선택했는지, 어떻게 공부했는지, 등등의 질의응답을 하..

[Spring 공식문서 번역 프로젝트]Spring Web MVC (1.1.5 ~1.1.8)

HandlerExceptionResolver1.1.5 프로세싱 DispatcherServlet은 아래와 같은 순서대로 요청을 처리한다. 프로세스중에 컨트롤러나 다른 요소가 사용할 수 있는 속성인 WebApplicationContext 은 요청에서 검색되고 바인드됩니다. 기본적으로 DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE 키 아래에 바인딩된다. 요청을 처리할 때(View를 렌더링 하거나, 데이터를 준비하는 등의), 요청처리(process)의 각 요소가 locale을 해결할 수 있도록 locale resolver 는 요청에 바인드된다. 만일 locale 처리가 필요없다면 locale resolver는 필요 없다. theme resolver 는 view 등의..

개발영어공부 2022.05.08

[스프링 입문을 위한 자바 객체 지향의 원리와 이해] 부록B 내용정리

2022.04.14 - [IT 책 독서록] - [스프링 입문을 위한 자바 객체지향의 원리와 이해] 7장 내용정리 [스프링 입문을 위한 자바 객체지향의 원리와 이해] 7장 내용정리 2022.04.08 - [IT 책 독서록] - [스프링 입문을 위한 자바 객체 지향의 원리와 이해] 6장 내용정리 [스프링 입문을 위한 자바 객체 지향의 원리와 이해] 6장 내용정리 6장은 스프링 프레임워크에서 사용 blog.robinjoon.space 이번 장은 자바 8에서 추가된 람다와 함수형 프로그래밍에 대해 간략히 소개한다. 정말 간략히만 소개해서 사실 본격적인 람다식과 스트림, 메서드 레퍼런스에 대해 공부하기 위해서는 별도의 책이 필요하다. 그저 이런게 있으니 한번 찾아봐라~ 정도로 소개한다. 이 포스팅에선 이런 점을 ..

IT 책 독서록 2022.04.19

[스프링 입문을 위한 자바 객체지향의 원리와 이해] 7장 내용정리

2022.04.08 - [IT 책 독서록] - [스프링 입문을 위한 자바 객체 지향의 원리와 이해] 6장 내용정리 [스프링 입문을 위한 자바 객체 지향의 원리와 이해] 6장 내용정리 6장은 스프링 프레임워크에서 사용하고있는 디자인 패턴 8개를 다룬다. 디자인 패턴 자체가 이 책만으로 이해하기에는 이 책의 내용이 부족하기 때문에 별도의 책을 보는 것을 권장하고있다. 이 blog.robinjoon.space 7장은 스프링에 적용된 핵심 원리인 IOC/DI, AOP, PSA에 대해 다룬다. DI (의존성 주입) 객체지향 프로그래밍에서 의존성이란 한 객체가 다른 객체를 사용하는 것을 말한다. 예를 들어 다음 코드를 보자. public class Car{ Tire tire; public Car(){ this.ti..

IT 책 독서록 2022.04.14

[스프링 입문을 위한 자바 객체 지향의 원리와 이해] 6장 내용정리

6장은 스프링 프레임워크에서 사용하고있는 디자인 패턴 8개를 다룬다. 디자인 패턴 자체가 이 책만으로 이해하기에는 이 책의 내용이 부족하기 때문에 별도의 책을 보는 것을 권장하고있다. 이 책에서는 객체지향의 4대 원칙을 요리도구에, SOLID 원칙을 요리도구 사용법에, 디자인 패턴을 레시피에 비유하고있다. 디자인 패턴은 SOLID 원칙을 준수하며 여러 문제상황을 해결하기 위한 선배들의 탐구과정속에서 정리된 좋은 예시이다. 따라서 스프링에서도 디자인 패턴을 적극 활용하였고, 이번 장에서는 이 디자인 패턴들에 대해 알아보았다. Adapter Pattern (어댑터 패턴) 어뎁터는 직역하면 변환기로 번역된다. 변환기의 역할은 서로 다른 두 인터페이스 사이에 통신이 가능하게 하는 것이다. 이 패턴은 개발자가 외..

IT 책 독서록 2022.04.08

[Spring 공식문서 번역 프로젝트] Spring Web MVC (~1.1.4)

이 포스트는 https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc 의 번역입니다. 영어 공부가 목적이고, 따라서 오역, 의역이 있을 수 있습니다. Web on Servlet Stack ( 서블렛 기반의 웹) 버전 5.3.18 이 문서는 Servlet API기반으로 구축되어 Servlet 컨테이너 에서 동작하는 Servlet 기반의 웹 어플리케이션을 만드는 것을 다룹니다. 세부 챕터들은 Spring MVC, View Technologies, CORS Support, 그리고 WebSocket Support을 포함합니다. 반응형 기반의 웹 어플리케이션에 대한 문서는 Web on Reactive Stack을 참고하세요. ..

개발영어공부 2022.04.07

[스프링 입문을 위한 자바 객체지향의 원리와 이해] 5장 내용정리

SOLID 원칙 SRP(Single Responsibility Principle): 단일 책임 원칙 OCP(Open Closed Principle): 개방 폐쇄 원칙 LSP(Liskov Substitution Principle): 리스코프 치환 원칙 ISP(Interface Segregation Principle): 인터페이스 분리 원칙 DIP(Dependency Inversion Principle): 의존 역전 원칙 이 원칙들을 잘 지키면 좋은 객체지향 설계가 나온다. 이 원칙들은 모두 응집도를 높이고 결합도는 낮추려고 하는 노력으로부터 온 것이다. 응집도 : 하나의 모듈 내부에 존재하는 구성요소들의 기능적 관련성 결합도 : 모듈 간의 상호 의존 정도 SOLID는 개념이다. 제품이 아니다. 따라서 객체..

IT 책 독서록 2022.04.01