[Application][Backend] ScrapingScheduler 설정 및 Caching 정책
·
Side Project/Application
공지사항을 스크래핑하는 데에는 일정 시간이 소요된다. 따라서 매번 API 요청이 들어올 때마다 스크래핑을 수행하면 불필요한 지연이 발생하고 서버에 과부하를 줄 수 있다. 또한 새로운 공지사항이 게시될 경우 이를 빠르게 감지하고 반영해야 하는데, 이를 효율적으로 처리하기 위해서는 캐싱(Cache)과 스케줄링(Scheduling)이 필수적이다. 먼저, 한 번 스크래핑된 데이터는 캐시에 저장되며 30분간 유지된다. API 요청이 들어오면 기존에 저장된 데이터를 즉시 반환하고, 새로운 스크래핑을 수행하지 않는다. 이를 통해 반복적인 데이터 요청으로 인한 성능 저하를 방지하고, 사용자에게 빠른 응답을 제공할 수 있다. 공지사항 데이터는 5분마다 자동으로 스크래핑되며, 기존 데이터와 비교하여 변경 사항이 있는지 확..
[Application] [Backend] 공지사항 스크래핑 역할 분리
·
Side Project/Application
공지사항을 스크래핑하는 코드를 수정하였다. 기존에 공지사항 분류마다 각각 컨트롤러를 정의하던 것을 하나의 컨트롤러로 통합하여 링크만 추가하면 어떤 페이지든 스크래핑이 가능하다.  캐시 정책 및 공지사항 업데이트, 게시 날짜 파싱까지 대대적인 수정이 이루어졌으나 하나씩 다루도록 한다. 여기서는 스크래핑 클래스는 스크래핑만, 컨트롤러는 링크에 따라 스크래핑 동작, 그리고 링크를 저장하는 config까지 역할을 분리시킨 과정을 다룬다.  우선 스크래핑 클래스는 기존과 크게 다르지는 않지만, 기숙사 공지사항과 학과 공지사항 처리가 추가되었다. 기숙사 공지사항과 학과 공지사항의 경우 기본적으로 페이지에서 게시일이 아닌 마감일을 표시하고 있다. 이는 최근 새로 게시된 공지사항을 표시하는 기능에 방해가 되기 때문에 ..
[Application] Android Studio - 사이드바를 이용한 페이지 구현
·
Side Project/Application
시간표와 공지사항 두가지 기능을 담을 예정이므로, 사이드바를 이용해서 페이지를 구분하도록 구현해보겠다.기본 설정으로 생성한다. build.gradle.ktsbuild.gradle.kts에 다음과 같이  의존성을 추가한다. // Navigation Compose 추가 implementation(libs.androidx.navigation.compose) // 네비게이션 지원 // Material Icons 추가 (선택 사항) implementation(libs.androidx.material.icons.core) // 기본 아이콘 implementation(libs.androidx.material.icons.extended) // 확장 아이콘주석과 같이, 네비게이션을 지원하기 위..
[Application] 엑셀 파일을 Parsing해서 DB로 저장하기
·
Side Project/Application
다소 무거워지던 프로젝트의 열화판으로, 오직 공지사항 스크래핑과 시간표 기능만 모바일 애플리케이션으로 구현한다. 모든 백엔드 서버는 스프링부트로 구축하며, 안드로이드 스튜디오에서 API에 접근해 UI를 구현한다. 이를 위해 먼저 엑셀로 올라오는 개설과목 정보를 읽어 DB에 저장하는 기능을 구현하였다.  실사용 시에는 외부 서버에 파일을 따로 관리해야 하지만, 현재는 프로젝트 directory에 테스트용으로 둔다. 자세한 코드는 github에 저장해두었으며, 본 포스트에서는 핵심적인 내용만 다뤄보겠다. DB 연결과 관련한 내용은 SideProject 카테고리의 '중단'에서 자세히 다루었다.  Course.java 엔티티package zerogod.android_backend.model;import jaka..
zerogod-ai-dev
'Side Project/Application' 카테고리의 글 목록