frontend 33

한국 지도에 지하철 역,노선도를 추가해서 지도 UX 개선하기

위 이미지는 OSM에서 제공하는 한국 지리 정보를 기반으로 렌더시킨 지도의 수도권 이미지이다. 당장 사용하기에는 불편해보이니 이 지도 위에 철도, 지하철 노선, 역사 데이터를 추가하려고 한다.  아래 파일은 공공 데이터 혹은 서칭을 통해 직접 만든 한국 철도, 지하철 노선, 역사 데이터이다.  https://github.com/onthegomap/planetiler GitHub - onthegomap/planetiler: Flexible tool to build planet-scale vector tilesets from OpenStreetMap data fastFlexible tool to build planet-scale vector tilesets from OpenStreetMap data fast..

frontend 2025.03.29

MapLibre 기반으로 커스텀 타일을 기존 타일에 오버라이드 하기

개요PMTiles 병합 과정이 워낙 오랜 시간이 걸리다보니 데이터를 수정할 때 마다 매 번 병합을 하기에는 쉽지 않다. 또한 괜찮은 데이터셋이 없다면 데이터 타입을 일일히 맞춰주는 작업도 그리 쉬운 작업은 아니다.  따라서 데이터를 수정할 일이 잦으며 굳이 전역 맵 타일 데이터에 포함되지 않아도 되는 경우라면 타일 데이터를 오버라이드 하는식으로 보여주는 것도 나쁘지 않은 방안중 하나일 수 있다.  이러한 방식이  정말 옳은지에 대해서는 100% 맞다라고 말할 수 없지만 적어도 내가 생각하기에는 한국의 지하철 역 데이터 정도는 오버라이드하여 보여주는것이 관리도 쉽고 개발적인 코스트도 적게 들수도 있다는 생각이 들었다.  글로벌 맵 데이터에서는 한국 지하철 노선도에 대한 정보가 많이 들어있지 않다. 하지만 ..

frontend 2025.03.22

여러개의 PMTiles 파일을 병합하여 스토리지에 올리기

준비먼저 최신 맥이라고 하더라도 노트북의 성능으로는 지도 타일을 만드는데 시간이 매우 오래 걸리기에 지도 타일을 만들기 위한 ec2인스턴스를 잠깐 빌려준다.  64vcpu, 128기가 이상의 메모리, 500기가 ssd 이상 성능을 가진 인스턴스를 빌리는게 가장 좋지만  백그라운드에서 돌아가게 할거이기에 시간이 좀 걸려도 상관 없으니 32vcpu, 128기가 메모리, 500기가 ssd정도로 타협한 m5.8xlarge 인스턴스를 사용한다 만약 이래도 메모리가 부족 문제가 발생한다면 더 높은 메모리의 인스턴스를 사용한다. 타일 다운로드이후 해당 인스턴스에 ssh를 통해 접속 후 아래 명령어를 실행하여 전세계 PMTiles 파일을 다운받아준다. wget https://build.protomaps.com/2025..

frontend 2025.03.15

지도 타일과 PMTiles

지도 타일우리가 흔히 보는 지도는, 사용자가 어떤 줌 레벨에서 지도를 보고 있느냐에 따라 표시해야 하는 정보의 양이 달라진다. 예를 들어,줌 레벨 0에서는 전 세계 지도를 단 1×1, 즉 한 개의 타일로 표현한다.줌 레벨 1에서는 2×2, 즉 4개의 타일로 표현한다.줌 레벨 15인 경우에는 2^15 × 2^15라는 방대한 수의 타일을 갖게 된다. 또한 줌 레벨에 따라 동일한 좌표의 타일이라 하더라도, 실제로 표시해야 하는 정보의 종류나 양이 달라질 수 있다. 예를 들어, 줌 레벨 5에서는 지하철 노선도를 표시하지 않다가, 줌 레벨 6부터는 해당 지하철 정보를 포함하도록 구성할 수 있다. 이는 지도 타일을 어떻게 제작하느냐에 따라 각각 달라진다. 지도 라이브러리의 동작 방식 사용자가 특정 지역을 보고 있을..

frontend 2025.03.04

토스 테스트 자동화 플랫폼 구축 영상 요약

개요현재 직장에서 puppeteer기반 cypress 문법을 사용하는 e2e 테스트 프레임워크를 개발하고 있는데 알고리즘의 선택인지 우연인지는 모르겠지만 토스에서 비슷한 것을 만들고 발표한 영상이 눈에 들어오게 되었고 관심이 생겨 해당 영상을 꼼꼼히 보고 요약한 내용이다. 테스트 자동화 플랫폼을 만드는 목적이 다 같아서 그런건지 사람 생각이 다 거기서 거기라서 그런건지 cypress, playwright와 같은 타 테스트 프레임워크를 사용하지 않고 puppeteer 기반으로 테스트 프레임워크를 직접 만든다는 큰 차이를 제외하고는 많은 부분의 플랫폼 설계가 비슷하여 좀 신기했다.  e2e 플랫폼을 만든다는 큰 목적을 가지고 구조와 흐름을 설계하게 되면 결국 누가 만들던간에 이런 느낌으로 완성이 되지 않을까..

frontend 2025.01.07

Cypress의 단점을 극복하기 위한 puppeteer 기반의 e2e 테스트 프레임워크 개발(2)

https://jjongsk.tistory.com/entry/Cypress%EC%9D%98-%EB%8B%A8%EC%A0%90%EC%9D%84-%EA%B7%B9%EB%B3%B5%ED%95%98%EA%B8%B0-%EC%9C%84%ED%95%9C-Puppeteer-%EA%B8%B0%EB%B0%98-%EC%95%84%ED%82%A4%ED%85%8D%EC%B3%90-%EA%B5%AC%ED%98%841 Cypress의 단점을 극복하기 위한 puppeteer 기반의 e2e 테스트 모듈 구현(1)개요 e2e 테스트 라이브러리가 필요하여 cypress에 대해 분석하다가 이를 사용하는 것은 현재 구조에서 불가능하다고 판단하여 puppeteer를 사용하여 e2e 테스트 아키텍쳐를 직접 구현하기로 결정하jjongsk.tist..

frontend 2024.12.20

Cypress의 단점을 극복하기 위한 puppeteer 기반의 e2e 테스트 프레임워크 개발(1)

개요 e2e 테스트 라이브러리가 필요하여 cypress에 대해 분석하다가 이를 사용하는 것은 현재 구조에서 불가능하다고 판단하여 puppeteer를 사용하여 e2e 테스트 아키텍쳐를 직접 구현하기로 결정하였다. cypress를 사용하는 것이 불가능한 이유는 아래와 같다.cypress의 너무 느린 속도불가능한 유지보수불가능한 병렬처리쉽지않은 커스텀특히 1번 속도 문제가 너무 심각하였다. 하지만 cypress에서 제공하는 테스트 코드 문법, 여러가지 e2e 기능은 충분한 가치가 있었기에 cypress의 특정 기능을 비개발자(qa,qc 등)가 사용할 수 있도록 cypress 인터페이스를 유지하면서 테스트를 실행할 수 있는 솔루션을 만드는게 이번 프로젝트의 핵심 목표이다. cypress의 테스트 코드는 문법은 ..

frontend 2024.12.16

React Dev Tools는 정확한 성능 측정을 방해할 수 있다.

개요React 디버깅을 돕는 Chrome 확장 프로그램 React Developer Tools는 분명히 편리한 도구이다. 이 확장 프로그램을 사용하면 어떤 부분에서 re-rendering이 발생하는지, 어떤 컴포넌트의 렌더링에 얼마나 시간이 걸리는지를 쉽게 파악할 수 있다. 하지만, React Developer Tools는 정확한 성능 측정에는 오히려 문제가 될 수 있다는 사실을 발견하였다. 최근, 매우 큰 테이블을 다루는 작업 중 최악의 성능 환경에서 성능 최적화를 진행한 적이 있다. DOM 크기가 매우 커진 상황에서 element.focus() 요청 시, 예상보다 훨씬 속도가 느려지는 현상을 발견했다. memoization 적용, 렌더링 관리, 상태 분리, 알고리즘 최적화 등 성능 향상을 위한 다양한..

frontend 2024.10.24

immer, Redux Toolkit 성능 문제

immer란React에서 상태의 불변성은 성능에 큰 영향을 미친다. 상태가 불변하게 유지되면 React는 변경된 부분만 효율적으로 다시 렌더링할 수 있기 때문에 성능 최적화가 가능해진다. 하지만 불변성을 수동으로 관리하는 것은 번거로울 수 있는데, 이때 immer 라이브러리는 개발자가 불변성을 유지하는 데 신경을 많이 쓰지 않더라도 이를 쉽게 관리할 수 있도록 도와준다. immer는 프록시(proxy)를 사용하여, 객체나 배열을 직접 수정하는 요청을 가로채어 새로운 객체에서 해당 요청을 작업한다. immer의 핵심 함수인 produce는 두 가지 인자를 받는데, 첫 번째는 원본 상태, 두 번째는 상태를 변경하는 콜백 함수이다. 이 함수 내에서 원본 객체는 수정할 수 있는 것처럼 보이지만, 실제로는 프록시..

frontend 2024.10.11

프론트엔드 전체 테스트 환경 구축해보기(3.웹서버)

2편(CLI 구축) 보러가기https://jjongsk.tistory.com/entry/frontend%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EC%A0%84%EC%B2%B4-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95%ED%95%B4%EB%B3%B4%EA%B8%B02CLI 프론트엔드 전체 테스트 환경 구축해보기(2.CLI)1편(설계) 보러가기https://jjongsk.tistory.com/entry/1%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EC%A0%84%EC%B2%B4-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%99%98%EA..

frontend 2024.09.22