항해 99/Spring (49) 썸네일형 리스트형 Spring - Image Resize 학습 목적토이 프로젝트로 Pixiv 사이트의 기능을 만들어 보고 싶어서 이미지 업로드와 리사이즈를 통한 썸네일화에 대해 배워보려고 한다. 이미지 리사이징하는 이유? 페이지 로딩 속도 개선: 큰 이미지 파일은 로딩 시간이 길어질 수 있습니다. 이미지를 리사이즈하면 파일 크기가 줄어들어 웹 페이지의 로딩 속도가 빨라집니다. 빠른 로딩 시간은 사용자 경험을 개선하고, 검색 엔진 최적화(SEO)에도 긍정적인 영향을 미칩니다.대역폭 절약: 리사이즈된 이미지는 파일 크기가 작아져 서버와 사용자 양측에서 사용되는 데이터 대역폭을 절약할 수 있습니다. 이는 특히 모바일 데이터 요금이 중요한 상황이나 대역폭이 제한된 환경에서 유용합니다.적절한 해상도유지: 디바이스별로 최적의 해상도를 유지하기 위해 이미지를 리사이즈할 수.. 프로젝트 코드 리팩토링 개요항해 99 기간의 실전 프로젝트의 6주 기간동안 애플리케이션의 정상적인 동작과 유저 테스트를 위해 코드를 짜고 오류가 발생하면 수정하는 데 쫓기다 보니 코드의 가독성이나 불필요한 중복 등의 문제를 신경 쓰지 못했고, 프로젝트 기간 이후에 유저 피드백을 통한 개선과 프로젝트 코드 리팩토링을 진행하기로 했다. 파트웹 게임 프로젝트를 만들었고, 그 중에서 게임 로직 관련 코드를 작성했기 때문에 내가 작성한 코드에 대한 리팩토링을 진행하고 개선 사항을 적용하기로 했다. 코드 리팩토링(Code Refactoring) 기존 코드의 기능을 그대로 유지하면서 코드의 구조를 개선하는 과정 주요 목적코드의 가독성, 유지보수성, 확장성을 높이는 것 주요 리팩토링 기법함수 추출(Extract Method): 길고 복잡한 .. CI/CD 2 개요GiHub Actions에 대해 학습하고, GitHub Actions를 사용한 CI/CD 과정과 프로젝트에서 사용한 Docker 설정 파일에 대해 분석을 해 볼 것이다. GitHub Actions 깃허브 액션은 깃허브에서 제공하는 CI/CD 플랫폼으로 빌드, 테스트, 배포를 자동화 시키는 파이프라인을 만들 수 있다. GitHub Action 구성 요소Workflow한 개 이상의 job을 실행할 수 잇는 자동화된 작업YAML 파일로 저장되며 event에 의해 실행된다.Eventworkflow 실행을 발동시키는 특정한 활동깃허브에 소스코드를 푸시하면 발생하는 push event, pull request event, issue event 등 깃허브에서 발생하는 대부분의 작업을 event로 정의할 수 있다... CI / CD 개요팀 프로젝트를 하면서 애플리케이션 자동 배포 및 여러 이점으로 CI/CD를 도입해 사용했고 편리했던 경험이 있었다.CI/CD를 직접 설정해보지 않았기 때문에 CI/CD에 대해 공부하고 프로젝트에 사용했던 설정을 분석하여 다른 프로젝트에서 적용할 수 있도록 연습해 볼 생각이다. CI/CD 란? CI/CD는 약어로, 몇 가지의 다른 의미를 가지고 있다. CI/CD의 "CI"는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다.CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문.. ORM ORM(Object Relational Mapping, 객체-관계 매핑)객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 기술객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용하기 때문에 객체 모델과 관계형 모델 간에 불일치가 존재한다.ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.데이터베이스 데이터 ←매핑→ Object 필드객체를 통해 간접적으로 데이터베이스 데이터를 다룬다.Persistant API라고도 할 수 있다.JPA, Hibernate 등ORM의 장단점장점객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.ORM을 이용하면 SQL Query가 아닌 직관적인 코드(메서드)로 데이터를 조작할.. Web Game 코드 설계 정리 기술 스택 결정 WebSocket 과 WebRTC 사용 목적 WebSocket : 주로 양방향 통신을 위해 주로 사용 WebRTC : 브라우저 간의 실시간 통신을 가능하게 하며, 주로 비디오, 오디오, 데이터 스트리밍에 사용 웹 게임에서 실시간 오디오, 비디오 통신 또는 피어-투-피어 데이터 교환을 구현하고자 할 때 WebRTC를 사용하게 되며, 이 경우 시그널링 서버가 필요함 WebRTC를 사용하지 않고 순수하게 게임 로직이나 상태 정보 교환 등을 WebSocket만으로 처리하는 경우, 시그널링 서버는 필요하지 않음 WebSocket은 실시간 양방향 통신을 가능하게 하여, 서버와 클라이언트 간에 실시간 메시지 교환이 필요한 웹 기반 게임에 적합하며, 턴제 게임에서 요구되는 기능들을 효과적으로 구현할 수.. 프로젝트 코드 분석 Spring Web Game Project Code Review Controller package com.service.indianfrog.domain.game.controller; import com.service.indianfrog.domain.game.dto.GameBetting; import com.service.indianfrog.domain.game.dto.GameDto.StartRoundResponse; import com.service.indianfrog.domain.game.dto.GameInfo; import com.service.indianfrog.domain.game.dto.GameStatus; import com.service.indianfrog.domain.game.dto.Use.. Reflection API Reflection API 리플렉션은 힙 영역에 로드된(런타임) Class 타입의 객체를 통해, 원하는 클래스의 인스턴스를 생성할 수 있도록 지원하고, 인스턴스의 필드와 메서드를 접근 제어자와 상관 없이 사용할 수 있도록 지원하는 API이다. 로드된 클래스 : JVM의 클래스 로더에서 클래스 파일에 대한 로딩을 완료한 후, 해당 클래스의 정보를 담은 Class 타입의 객체를 생성하여 메모리의 힙 영역에 저장해 둔 것(new 키워드를 통해 만드는 객체와는 다른 것) 자바에는 동적으로 객체를 생성하는 기술이 없었으나 동적으로 인스턴스를 생성하는 Reflection으로 그 역할을 대신하게 된다. Reflection으로 객체의 형은 알고 있지만 형변환을 알 수 없는 상태에서 객체의 메서드를 호출할 수 있다. R.. 이전 1 2 3 4 ··· 7 다음