728x90
반응형

웹, 앱 11

[NestJS] Strategy Pattern (전략 패턴)

1. 서론전략 패턴에 대해서는 간단하게 알고 있었지만 한동안은 if-else 문 혹은 switch 문과의 차이를 크게 못 느꼈었다. 그러다가 실무에서 어떤 환경이 주어졌을 때 전략 패턴이 떠올랐고 적용하면서 이점을 느끼게 되어 기록하게 되었다. 실무에서 NestJS를 사용 중이기에 제목과 예시 코드가 NestJS 이지만 디자인 패턴 중 하나인 만큼 어디에도 적용이 가능할 것이다. 2. 본론정의Strategy Pattern (전략 패턴)은 객체의 행위를 정의하는 방법 중 하나알고리즘을 정의하고 이를 캡슐화하여 클라이언트 코드에서 독립적으로 사용할 수 있도록 하는 디자인 패턴여러 알고리즘을 정의하고, 그 알고리즘을 동적으로 선택하여 사용주요 구성 요소Context: 전략을 사용하는 클라이언트 객체Strate..

웹, 앱 2024.11.13

[스프링부트] 스프링캐시 Spring Cache 설정 및 속도 비교

서론 특정 데이터들을 반복적으로 호출하고 있는 코드가 있었다. 현재까지는 2천 개보다 조금 많은 수준의 데이터를 가지고 있었지만, 앞으로 훨씬 더 많은 데이터가 들어갈 예정인데 단순히 조회를 위한 데이터임에도 여러 곳에서 데이터를 호출해야하기 때문에 캐시 도입을 결정하였다. 캐시를 설정하는데에는 여러 방법이 있지만 스프링부트로 백엔드를 개발하고 있기 때문에 스프링에서 제공해주는 스프링 캐시를 사용하기로 하였다. 본론 1. 캐시 메모리에 저장할 데이터 정의 @Data public class SomeDataCache { private T someData; private LocalDateTime expirationDate; } 2. 캐시 설정 파일 정의 @EnableCaching @Configuration p..

웹, 앱 2023.09.04

[안드로이드] 웹뷰(Webview)에서 캐시 컨트롤(feat. 웹 버전)

서론 프로젝트에서 웹뷰를 활용하여 네이티브 앱을 제작하고 있다. 그 중 안드로이드를 주로 담당하고 있는데, 안드로이드 네이티브 앱은 업데이트 없이 웹 상에서 업데이트가 일어날 경우, 기존에 남아있던 캐시들로 인해 업데이트 반영이 안되어 오류가 발생하는 문제가 있었다. 이를 해결하기 위해 백엔드 상에서는 웹 업데이트 시 버전을 올리고 이를 API로 호출하여 확인할 수 있도록 작업하고 앱에서 별도의 캐시 컨트롤을 해야했다. 본론 목표는 다음과 같다. 웹뷰를 로드하기 전에 기존 앱이 가지고 있던 웹 버전과 로드될 웹 버전을 비교한다. 필요하면 캐시를 삭제한다. 이 목표를 달성하기 위해서는 다음과 같은 작업을 진행해야 한다. 최초 실행 시 웹 버전을 SharedPreference에 저장한다. 실행할 때마다 Sh..

웹, 앱 2023.05.01

[스프링부트] 코드 실행 시간 측정

서론 프로젝트를 진행하면서 이중 for문을 사용하는 코드를 짜는 스스로가 너무 싫어서 코드 실행 시간을 확인해볼 필요성을 느꼈다. 본론 두 가지 방법이 있다는 걸 확인했다. 첫 번째는 자바를 배울 때 사용해서 기존에 알고 있던 방법이었다. long startTime = System.currentTimeMillis(); // 실행 코드 long stopTime = System.currentTimeMillis(); System.out.println("코드 실행 시간: " + (stopTime - startTime)); 두번째는 스프링에서 제공하는 stopwatch 방법이다. StopWatch stopWatch = new StopWatch(); stopWatch.start(); // 실행 코드 stopWatc..

웹, 앱 2023.03.27

[Jenkins] 깃허브와 연동하여 엔진엑스-리액트 자동배포 하기

서론 프로젝트를 진행하면서 업데이트가 있을 때마다 배포하는 과정은 매우 번거롭다. 특히 한창 개발 중인데 https 연결이 필요한 기능을 테스트하기 위해서는 반드시 서버에 배포가 된 상태여야 한다. 그래서 프론트엔드 담당이 어떤 부분을 수정하면 백엔드 담당이 매번 재배포했어야 하기 때문에 번거롭기도 하고 실시간으로 소통이 안되면 작업이 지연될 수 밖에 없어서 이를 해결하고자 자동배포를 구축하였다. +) 실제로 설정한 순서대로 하다보니 설정 중간중간에 작업해주는 과정이 몇 번 있다. 젠킨스 프로젝트 설정을 한번에 하고 싶다면 2, 4, 6번을 먼저 진행해준 뒤 1번부터 읽으면 된다. 본론 1. 젠킨스에 프로젝트 추가 젠킨스 페이지에 접속해서 새로운 Item으로 들어간다. 이름을 적어주고, Freestyle..

웹, 앱 2022.09.30

[Jenkins] Linux-centOS7에 젠킨스 설치 및 초기 설정

※ 젠킨스를 사용하기 위해서는 Java 8 또는 Java 11 버전이 필요하다. https://danpung2.tistory.com/42 [Java] Linux-centOS7에 openJDK 11 설치하기 1. 설치 가능한 JDK를 확인 아래 명령어로 설치 가능한 JDK를 확인한다. yum list java*jdk-devel 2. 다운받을 버전의 자바를 설치해준다. 지금은 11을 설치할 것이므로 다음과 같은 명령어로 설치한다. yum danpung2.tistory.com 1. 젠킨스 설치 # 젠킨스 설치파일 다운로드(stable 버전) sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo # ..

웹, 앱 2022.08.29

[웹서버] 라즈베리파이 서버 구축 A to Z (3) - Tomcat 설치 및 설정

3단계: Tomcat 설치 및 설정 톰캣을 설치하기 전에, 먼저 자바를 설치해준다. 버전은 본인에게 맞는 것으로 설치하면 된다. 나는 openjdk 8을 설치했다. sudo apt-get install openjdk-8-jdk 그 다음으로, apt를 통해서 톰캣8을 설치하려고 했더니 뭐가 잘못된건지 해결이 안되길래 톰캣 사이트에서 직접 다운받았다. https://tomcat.apache.org/ Apache Tomcat® - Welcome! The Apache Tomcat® software is an open source implementation of the Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSo..

웹, 앱 2022.08.03

[웹서버] 라즈베리파이 서버 구축 A to Z (2) - Nginx 설치 및 설정

2단계: Nginx 설치 및 설정 나는 Apache 대신에 Nginx를 이용했다. Apache와 Nginx, 그리고 이 다음에 설치할 Tomcat의 차이점은 아래에서 확인할 수 있다. https://danpung2.tistory.com/35 [현문hyun답] Apache, Nginx, Tomcat 이란 뭐고 차이점은 뭘까? 서론 웹서버를 구축하면서 Apache와 Nginx, 그리고 Tomcat 중에 선택해야 했다. 스프링 부트를 배우면서 Tomcat이 내장되어 있다는 건 알았지만 Tomcat이 뭔지는 몰랐고, 참여하고 있는 프로젝트에서는 Ap danpung2.tistory.com sudo apt-get install nginx 위 명령어로 nginx를 설치했고 나는 기존의 설정 파일을 전부 삭제한 후 설..

웹, 앱 2022.08.03

[웹서버] 라즈베리파이 서버 구축 A to Z (1) - 라즈베리파이 설정

서론 졸업작품에서 웹서버를 구축해야하는데 AWS, NCP, Oracle 등등 의견이 나왔고 비교 분석까지 해봤다. 그런데 개인 프로젝트에서 순수 자바로만 작업해본 덕에 프레임워크의 유용함을 깨달았던 기억 때문에, 라즈베리파이를 통해 직접 서버를 구축하고 배포해보는 경험도 도움이 될 거 같아서 반도체 이슈 때문에 학교에서도 사용하지 못했던 라즈베리파이 20만원(...)을 들여 구매했다. 이걸로 웹서버, DB서버 등을 구축할 예정이다. 환경 - 라즈베리파이4 모델 B - RASPBERRY PI OS (32-BIT) - Nginx - Tomcat8 - mariaDB - React - Springboot 1단계: 라즈베리파이에 운영체제 설치 먼저 SD 카드에 운영체제 이미지를 써줘야한다. 처음에는 centOS를..

웹, 앱 2022.07.26

[스프링부트] 어노테이션(Annotation) 정리

@RestController - 컨트롤러를 JSON을 반환하는 컨트롤러로 만들어 줌 @GetMapping("/path") - HTTP Method인 Get의 요청을 받을 수 있는 API를 만들어 줌. URI는 http://localhost:8080/path가 된다 @RunWith(SpringRunner.class) - 테스트를 진행할 때 JUnit에 내장된 실행자 외에 다른 실행자(SpringRunner)를 실행 - 즉, 스프링부트 테스트와 JUnit사이의 연결자 역할 @WebMvcTest - 여러 스프링 테스트 어노테이션 중, Web(Spring MVC)에 집중할 수 있는 어노테이션 - 선언할 경우 @Controller, @ControllerAdvice 등을 사용할 수 있음 - 단, @Service, ..

웹, 앱 2022.06.25
728x90
반응형