분류 전체보기
[Nginx] 웹에서는 동작하는데 모바일에서 동작하지 않는다면 파일의 크기를 고려해보자!(feat. 파일의 크기 제한 413)
발단 최근에 토이 프로젝트를 진행하며 웹에서는 동작하는데 모바일에서 같은 동작임에도 오류가 발생하여 공유하고자 한다. 문제 발생 웹에서는 `파일`을 전송하고 모바일에서는 `카메라를 조작하여 서버에 파일`을 전송한다. 둘은 같은 동작을 함에도 왜인지 모바일에서는 정상적으로 요청을 할 수 없었다. 원인 로그를 확인하여 보니 413 오류를 내 뱉고 있었고, 이는 서버가 허용할 수 있는 크기보다 더 큰 크기의 파일을 전송하고 있다는 것을 의미하였습니다.(아래 참고 확인) 해결 방법 첫번째로 파일의 크기를 리사이징하여 서버가 허용할 수 있는 크기의 파일을 보내는 방법과, 두번째로 서버가 허용할 수 있는 파일의 크기를 늘리는 방법이 있을 것 입니다. 이 중에서 저는 프로젝트의 방향성에 따라 두번째 방법을 선택하여 ..
[React] 모바일 환경에서 카메라를 통해 이미지를 획득하는 방법(feat.. input, environment)
발단 디바이스의 카메라를 제어해야 하는 상황에서 간단하게 카메라를 통해 이미지를 획득할 수 있는 방법을 알게 되어 공유합니다. 카메라 제어 방법 위 input 의 이벤트를 발생시키게 되면 모바일 환경에서 카메라를 제어할 수 있습니다. Capture 프로퍼티 `environment, user` 두가지 속성을 가집니다. environement : 모바일 환경의 후면부 카메라를 제어합니다. user : 모바일 환경의 전면부 카메라를 제어합니다. capture 프로퍼티는 모바일 환경에서만 동작하는 API 임으로 웹에서는 우리가 아는 input 으로써의 동작을 행합니다. 자세한 설명은 아래 참고를 확인하여주세요. 간단한 카메라 예제 코드 import React, {useState} from 'react'; fun..
[nginx] 윈도우즈 환경에서 nignx 를 통한 서버를 구성시 확인해야 하는 방화벽 요소(feat.. 방화벽)
발단 서버용 컴퓨터를 통해 서비스를 진행하기에 앞서 nginx 로 웹서버를 구성하고자 하였다. 도메인까지 연결을 맺은뒤 연결을 시도하였는데 ping 은 패킷을 응답받았지만 페이지 접근이 불가하였다. 환경 windows 11 nignx 1.24.0 도메인 연결은 맺어진 상태이고, 내부에 server 도 뜨워진 상태이다. Nginx 설정 http { ... server { listen 80; server_name 연결된 도메인; location / { proxy_pass http://localhost:[띄워진 서버 포트]/; } } ... } 위 코드에서처럼 `연결된 도메인`에 접근하게 되면 내부에 띄워진 서버로 `리버스 프록시`를 시도하여 연결된다. 문제 추론 체크리스트 도메인이 정상적으로 연결되었는가? ..
[DB] JPA 버전 다운그레이드 과정에서 동작하던 sql 이 동작하지 않는다면(feat. native query)
발단 정부 프레임워크 사용을 위해 기존의 spring boot v3 가 아닌 v2 로 다운그레이드를 진행하면서 sql 이 실행되지 않아 동작하지 않는 경우가 발생하였다. 프로젝트를 진행하며 DB 검색을 위한 조건이 많지 않다면 JPA 의 native query 를 사용하였습니다. 이 때 sql 작성시 `;`을 붙여 해당 query 의 끝을 의미하게 하였습니다. 환경 spring boot starter jpa 페이징과 같이 사용 ... 원인 Spring boot 의 다운그레이드를 언급한건 jpa 의 버전이 spring boot 버전에 따라 달라지는 것을 명시하기 위함이다. 마이그레이션 전에 동작했지만 이후 동작하지 않은 이유는 `;` 때문이었습니다. JPA 버전에 따른 sql 전처리? v3 에서는 `;` ..
[Github] github packages maven 방식으로 업로드(feat. intellij, 예제)
Github package 란? Github 문서 설명 GitHub Packages is a software package hosting service that hosts software packages privately or publicly for designated users and makes them available as dependencies in your project. 깃허브 패키지는 비공개/공개적으로 설계된 소프트웨어를 호스트하고 프로젝트에 의존성으로 사용가능하게끔 만들어진 소프트웨어 패키지 호스팅 서비스 이다. 여기서 호스팅은 서버를 빌리는 행위보다도, 제공한다 정도로 해석하는게 맞지 않을까 싶다. Maven 으로 Github 패키지 구성 Github PAI(Personal Access ..
[ETC] Swagger 와 OAS(Open Api Specification)는 어떤 관계가 있는걸까?
발단 Swagger 를 사용하면서 OAS(Open Api Specification)에 대해서 자주 언급되는 것을 볼 수 있다. 두 개념은 어떤 관계에 있길래 같이 사용되는지 늘 궁금하였는데, 정리를 통해 어떤 관계에 있는 것인지 알아보고자 한다. Swagger 측에서의 설명 The OpenAPI Specification, formerly known as the Swagger Specification, is the world’s standard for defining RESTful interfaces. Swagger Specification 으로 알려진 OpenApi Specification 은 RESTful 인터페이스를 정의하기 위한 세계 표준이다. 여기까지는 OAS 가 Swagger 로 알려져 있구나,..
[Spring Boot] Spring 에서 Redis 를 사용할 때 ConnectionFactory 를 왜 Bean 으로 등록해서 사용해야 할까?(feat. Kotlin, Lettuce, LettuceConnectionFactory was not initialized through afterPropertiesSet())
발단 RedisTemplate 의 connectionFactory 를 Bean 으로 등록된 RedisConnectionFactory 로 사용하는 예제가 많은데 왜 그래야 하는지 설명이 없어 궁금하여 찾아보게 되었다. (Bean 으로 등록하여 사용하지 않으면 `LettuceConnectionFactory was not initialized through afterPropertiesSet()` 오류가 발생한다.) 설명 Spring 에서 Redis 서버와의 연결을 위해 getConnection 메서드를 호출한다. getConnection 메서드 내부에는 assertInitialized 검증 메서드를 호출한다. assertIntialized 는 initalized 변수를 통해 초기화 여부를 판단하는데, 해당 변..
[Spring Boot] custom error page 적용(feat. 예제, ErrorController)
상황 Spring 을 통해 웹서비스를 제공할 때 오류가 발생하면 에러 페이지(white label, 위사진)에 도달하게 되는데, 해당 에러 페이지와 웹서비스의 디자인이 많이 다름으로 사용자로 하여금 혼란이 올 수 있다는 생각이 들어서 임의의 에러 페이지를 제공하고자 하였다. 간단한 설명 Spring 에서는 에러 페이지 생성을 위해 ErrorController 를 제공한다. ErrorController 를 사용하면 default 에러 페이지 핸들러를 대체하게 된다. 예제 코드 밑에 자세한 설명을 포함하였습니다. Custom Error Page 예제 View 생성 성공적으로 접근 되는 것을 확인하기 위한 페이지와, 에러 페이지 중에서 404 와 500 을 재연하기 위해 세개의 view 를 생성한다. inde..
[Spring Boot] JWT 라이브러리를 의존성 추가했음에도 빌드 오류가 나는건 왜일까?(feat. `io.jsonwebtoken:jjwt-api`)
발단흔히 사용하는 jwt 라이브러리인 jjwt 를 사용하여 개발하려 하니 2018년도 이후로 업데이트 되지 않고 있었다. 예제로도 jjwt 를 사용하는 경우가 많지만 최신 패키지인 jjwt-api 가 있기에 이를 사용하여 공부하던 도중 문제가 발생한 의존성에 대해 트러블 슈팅 하는 과정을 작성하였다. 환경Spring Boot: 3.1.0 (kotlin, gradle)jjwt-api 0.11.5 jjwt 와 jjwt-api 의 상관관계 GitHub - jwtk/jjwt: Java JWT: JSON Web Token for Java and AndroidJava JWT: JSON Web Token for Java and Android. Contribute to jwtk/jjwt d..
[Spring Boot] s3 aws-java-sdk(v 1.1) 을 사용하는 개발환경에서 SSL 인증서와 무관하게 통신하는 방법(feat. ValidatorException: PKIX path building failed)
발단 개발 환경에서 object storage 에 접근할 때 SSL 인증서 이슈로 임시로 https 를 허용해야 하는 상황이 발생하였다. PKIX(Public Key Infrastructure X.509) 오류 PKIX : 인증서 기반의 보안 인프라 오류 발생 경우 일반적으로 신뢰할 수 없는 인증 기관에 의한 발급 인증서의 유효 기간이 만료 도메인 이름과 일치하지 않는 경우 혹은, Java 의 신뢰할 수 있는 인증서 리스트에 등록한 인증서가 없는 경우 코드 /** * 설명 * - AmazonS3 클라이언트를 구성하는 코드입니다. * */ AmazonS3ClientBuilder.standard() .withEndpointConfiguration( ... ) .withClientConfiguration( C..