대중교통 길찾기를 구현해보자! (GTFS, OTP, OSM)
·
Spring/Kotlin
1.  소개예전 포스팅에서 자료조사를 했습니다. 한 요청에 대량의 경로탐색이 필요한 프로젝트 특성상 외부 API 사용은 비용의 문제가 있었습니다. 그래서 자체 대중교통 경로탐색이 필요했습니다. 자료조사를 통해 GTFS(대중교통 스케줄), OSM(지도 데이터)를 찾았고 추가로 OTP(경로탐색 오픈 소스)를 찾았습니다. 이제 필요한 것들을 다 모았으니 구현을 해봅시다 `최소 16GB 이상의 메모리를 사용하시는 걸 추천합니다. 되도록이면 32GB``현재 서비스중인 kakao, naver와의 예상 시간이 꽤 차이가 나 실사용은 어렵습니다` 2. 사전 준비대중교통 경로 탐색에는 3가지가 필요합니다.OSM(Open Street Map) : 공간 정보를 위한 지도 데이터OTP(Open Trip Planner) : 지..
대중교통 길찾기를 해보자! (GraphHopper)
·
Spring/Kotlin
1. 문제지난 포스팅에서 Open Trip Planner를 사용해 대중교통 길찾기를 시도했지만 시간차이가 심해 실사용이 어렵다고 판단했습니다. 네이버 지도 기준 약 40분 거리를 탐색하면 2시간이 넘는다는 결과가 반환됬고 otp를 띄우는데도 오랜 시간이 걸렸습니다. 그래서 osm 홈페이지에서 소개하는 경로 탐색 엔진 중 GraphHopper를 사용해보겠습니다. osm, gtfs파일은 지난 포스팅에서 사용했던 파일들을 재사용하면됩니다.https://klaus9267.tistory.com/50 대중교통 길찾기를 구현해보자! (GTFS, OTP, OSM)1.  소개예전 포스팅에서 자료조사를 했습니다. 한 요청에 대량의 경로탐색이 필요한 프로젝트 특성상 외부 API 사용은 비용의 문제가 있었습니다. 그래서 자체..
음성 파일에서 텍스트를 뽑아오자(with faster whisper)
·
ETC
🎈 Faster Whisper & OpenAI WhisperFaster Whisper는 CTranslate2를 사용한 OpenAI Whisper의 재구현 버전입니다.원본과 동일한 정확도를 유지하면서4배 더 빠른 처리 속도더 적은 메모리 사용8-bit 양자화로 CPU/GPU 모두에서 추가 최적화 가능 성능 비교 (13분 오디오 기준)GPU (RTX 3070 Ti 8GB)OpenAI Whisper: 2m23s / 4.7GB VRAMFaster Whisper: 1m03s / 4.5GB VRAMFaster Whisper (batch_size=8): 17s / 6.1GB VRAMFaster Whisper (int8): 59s / 2.9GB VRAMCPU (i7-12700K, 8 threads)OpenAI Whi..
Spring에서 Cache를 사용해보자! (with Caffine)
·
Spring/Java
🎈 Cache란캐시(Cache)는 임시 장소(Memory)에 데이터나 값을 미리 복사해 놓는 행위를 가리킵니다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용됩니다. 캐시를 사용하면 인기글, Auth의 사용자 확인과 같이 자주 조회되는 데이터를 메모리에 저장 후 사용하기 때문에 DB의 부하는 낮춰 리소스를 절약할 수 있습니다.하지만 캐시를 사용할 때 주의해야하는 부분도 있습니다.정합성https://tech.kakaopay.com/post/local-caching-in-distributed-systems/ 분산 시스템에서 로컬 캐시 활용하기 | 카카오페이 기술 블로그분산 시스템에서 로컬 캐시를 설계하고 구현한 경험을..
Termux를 사용해서 웹서버를 띄워보자
·
Infra
🎈 문제상황지난 포스트에서 `Termux`에서 qemu를 사용해 alpine linux container를 띄워서 그 안에서 `docker`를 사용해 프로젝트를 띄웠습니다. 하지만 속도가 굉장히 느렸고 prometheus, grafana 관련 에러가 지속적으로 발생해 모니터링 스택을 임시로 없애고 termux만을 사용해 웹서버를 구축하기로했습니다.  그럼 termux에서 spring application을 돌려봅시다!! 🎈 사전 준비안드로이드 기기와 와이파이를 사용해 자체 배포하는 방법입니다.안드로이드 기기는 termux를 다운받고 권한을 허용해주면 되며 와이파이는 몇 개의 설정을 수정해줘야합니다. 해당 설정들을 termux에서 docker를 사용하기 위한 포스팅에서 이미 설정을 했으므로 해당 포스팅..
H2를 사용한 Test Code의 초기 데이터 설정
·
Spring/Java
🎈 구현이유지난 포스팅에서 안드로이드 기기에 가상화 에뮬레이터를 사용해 docker의 사용 방법을 학습했습니다. 하지만 이후 Prometheus에서 지속적인 에러가 발생하고 현재 프로젝트에서 트래픽이 적기 때문에 termux에서 gradle을 사용해 빌드하기로 결정했습니다. 이후 트래픽 증가하면 prometheus를  docker가 아닌 직접 설치하여 운용할 예정입니다. 그래서 github에서 프로젝트를 clone후 빌드과정에서 테스트 코드의 최신화가 안되어있어 해당 부분을 점검 중 초기 데이터를 data.sql을 사용해 넣는 방식이 아닌 빌드 과정에서 PostConstruct 어노테이션을 사용해 save하는 방식으로 데이터를 설정하는 코드를 발견했습니다.  해당 방식은 Transcation 어노테이션..
java곰
'분류 전체보기' 카테고리의 글 목록