SmileCat.

2020 Archive

시뮬레이터 구현

생각보다 남은 작업이 크지 않아서 세 번째 글에 이어 바로 네 번째 글을 작성하였습니다. 이번 글에서는 전체적인 차량 생성 및 설정, 삭제를 처리할 Simulator에 대해 작성하고 합니다. 작동 방식 Simulator의 작동 방식은 이전 글에서 보여드렸던 Task와 Vehicle과 크게 다르지 않습니다. 지도 컴포넌트가 생성될 때, 시뮬레이터도 생성하게 되며 초깃값으로 설정한 만큼의 차량을 생성하게 됩니다. 이후 설정한 값의 변경에 따라 차량을 늘리거나 줄이는 작업 혹은 차량의 설정을 변경하는 작업을 진행하게 됩니다. 최종적으로

차량 구현

길다면 길고, 짧다면 짧은 시간 동안에 세 번째 글을 작성하게 되었네요. 아마 다음 글을 끝으로 이번 작업은 마무리 지을 수 있을 것 같다는 생각이 듭니다. 이번 글에서는 시뮬레이터에서 돌아다닐 차량에 대한 구현에 관해 이야기해보고자 합니다. 작동 방식 지난 글에서 차량의 구현에서 사용할 Worker에 대한 설정을 진행해두었기 때문에 차량은 그저 동작을 수행하고 이걸 Main으로 알려주는 방향으로 구상을 하였습니다. 지난 글에서 작성한 Task와 Vehicle에서 Task는 거의 변경이 없었고, Vehicle은 차량이 일정 주기마

Next.js에 Worker 설정

지난 글에 이어 이번에는 Next.js에서 Worker를 설정하는 방법에 대해서 글을 작성하고자 합니다. 이전 글을 작성할 때에는 Simulator를 먼저 작성하고 Worker를 진행할 생각이었지만 개발 편의상 Worker를 먼저 진행하는 쪽이 낫다고 생각하여 순서를 조정하였습니다. withwebworker 우선 Next.js에서 Worker를 같이 빌드하게 하려면 어떻게할까 찾아보던 중에, Examples에서 withwebworker라는 예제를 찾을 수 있었습니다. 예제를 살펴보면 workerplugin라는 webpack plu

구글 폰트와 이별하기

여느 때와 같이 Feedly를 여러 글을 읽던 중 아웃사이더님의 기술 뉴스 164 : 201215라는 글에서 Google Fonts에 대한 다른 블로그 글의 소개를 보았습니다. 지금 이 블로그도 그렇고 여타 개인 프로젝트도 마찬가지로 Google Fonts를 사용하고 있어서 해당 글이 특히 다른 소개 글 보다 눈에 띄었습니다. 해당 글은 Time to Say Goodbye to Google Fonts라는 글로 최근 10월 크롬 릴리즈에 캐시 파티셔닝이 적용됨으로 인해 Google Fonts를 사용하여 폰트를 적용하는 것에 성능 이점

준비 작업

Task Manager를 옮기며 라는 글을 작성한 지 2달의 시간이 흘렀습니다. 여느 때처럼 마음 한구석에 담아 두었던 해야한다는 생각이 더는 미루면 안되라는 죄책감과 이를 시도해볼 수 있는 환경이 마련되고 나서야 등 떠밀리 듯 또 하나의 무언가를 해보려고 합니다. 동기 무엇을 하든지 저는 동기가 생기지 않으면 잘 시작하지 않는 편입니다만 대체로 여기저기서 씨앗을 받아 심어두었다가 시간이 지나 새싹이 필 때즘 하나씩 시작하게 됩니다. 1년 전쯤 경로를 따라 차량이 경로를 이동하는 것처럼 시뮬레이션을 해봐야 할 일이 있었습니다.

Task Manager를 옮기며

예전에 Playground에 Task를 매니징할 수 있는 Task Runner을 구현하고 해당 구현체에 대해 예제 페이지를 만들어 두었습니다. 일전에 올렸던 글에서 언급했던 것 처럼 기존의 Playground에서 새로운 Playground로 필요하거나 재밌었던 것들을 옮기는 작업을 진행 중에 있습니다. 이에 Task Runner도 다시 리펙토링을 거쳐 옮기는 작업을 진행하였는데, 이 과정에 대해 글로 남기면 좋을 것 같아 포스팅을 작성하고 있습니다. 제작 동기 우선 Task Runner, 현재는 Task Manager로 이름을 바

Firebase 동적 호스팅에서 Heroku로 이전

이전 Firebase 동적 호스팅에 Next.js 배포하기라는 글에서 Next.js를 Firebase 동적 호스팅에 올렸었습니다. 글의 말미에 속도도 잘 나오지도 않아서 Firebase 동적 호스팅을 사용한 Next.js의 배포에 대한 부정적인 의견을 작성하였습니다. 글을 작성한뒤 얼마 더 사용해보고 Firebase 비용 부분을 확인해보니 몇번 호출하지 않았음에도 불구하고 CPU인 부분에서 무료 등급을 초과하는 비용이 발생하였습니다. 그래서 바로 Firebase 동적 호스팅을 내리고 Heroku로 이전 준비를 하였습니다. 개인 테스

Firebase 동적 호스팅에 Next.js 배포하기

동기 항상 도구나 테스트를 필요할 때 Playground에 작성하곤 했습니다. 이 저장소는 Openlayers Examples의 기본 골격을 바탕으로 작성하였는데, Openlayer의 업데이트에 맞춰 따라가지를 못하고 그렇다고 계속 유지 보수 해가며 사용하기에는 이런저런 불편함이 있었습니다. 덕분에 Github Security에는 항상 몇 개의 경고가 노출되고 있었지만, 다른 대안이 없어서 애써 무시하며 사용하고 있었습니다. 그러다 최근에 새로운 도구를 작성하고 싶다는 생각이 들어 이를 어떻게 해결할까 하다 자유롭게 사용할 수 있고

Node에서 대용량 CSV 파일 읽기

Papa Parse를 사용해 대용량의 CSV 파일을 열어서 작업을 수행을 하는데 파일이 너무 커서 파일을 읽다가 JavaScript heap out of memory 에러로 죽어버리는 문제가 생겼습니다. 그래서 다음과 같이 stream을 전달하고 async하게 시도해 보았지만, 그래도 JavaScript heap out of memory를 동일한 오류가 발생했습니다. 그래서 Papa Parse의 API 문서에서 이 문제를 해결할 마땅한 방법이 보이지 않아 다른 CSV 라이브러리를 찾아보았습니다. csvparse를 보다 보니 대용량

Map Server 구축해보기

작년에 GIS 공부 관련해서 "Map Server 환경 설정 및 사용"이라는 목표를 잡았었지만 달성하지 못했고 올해도 이어서 목표로 잡아두었습니다. 지도 관련 업무를 하면서 늘 클라이언트에서 타일 서버에서 호출은 하지만 늘 뒤단은 장막에 가려진 것처럼 보이지 않는 영역이었습니다. 그래서 이를 목표로 잡아 한번 DB에서 서버로, 서버에서 클라이언트로의 한 사이클을 직접 만들어보고 싶었습니다. 얼마 전 동료분께서 Vector Tile Server using PostGIS라는 글을 공유해 주셔서 이를 바탕으로 환경을 구성해보고 정리하는

React Native에서 어떻게든 gRPC-Web 사용했던 삽질기

6개월 전 React Native를 사용하면서 gRPCWeb을 사용하고자 이런저런 삽질을 했었습니다. 삽질을 하는 동안 다른 서비스 로직들과 별개로 확인할 수 있는 환경이 필요했고, 혹시 나중에 찾아볼 일이 있지 않을까 싶어 별도의 저장소를 생성해두었습니다. 이번 글을 통해 단순한 코드만 있는 저장소에서 삽질한 부분만 추려내서 정리해보고자 합니다. 코드만 확인하고자 하신다면 reactnativegrpcweb에서 확인하실 수 있습니다. 왜 React Native에서 gRPCWeb을 사용하게 되었나요? gRPC가 무엇인지, React

2020년 1분기 회고

올해부터는 연말 회고 외에도 분기별로 회고를 하며 피드백을 가지고자 하여 회고를 작성하였다. MKPI 개발 GIS에 대한 역량을 강화 FrontEnd에 대한 역량을 강화 Graphics에 대한 역량을 강화 Architecture에 대한 역량을 강화 작년과 같이 개발에 관련해서는 위와 같이 4가지의 Mission을 목표로 잡았다. GIS GIS 지리정보학 읽기 : 0% 월에 한번 내용 정리 : 0% Openlayers 분석 : 0% Mapbox 분석 : 0% Map Server 환경 설정 및 사

필드

필드(Field, 체) 대수적 구조의 하나로 사칙연산을 집합 안에서 소화할 수 있는 집합을 의미한다(연산의 결과 또한 해당 집합의 원소). 체에 대한 기본적인 예시로는 유리수의 집합($\mathbb Q$), 실수의 집합($\mathbb R$), 복소수의 집합($\mathbb C$) 등이 있으며, 나눗셈을 하였을 때 나누어 떨어지지 않는 정수의 집합($\mathbb Z$)은 체가 되지 않는다. Ref Ch2 43p 복소수(Complex number) 실수만 고려하면 $x^2 = 1$의 해를 찾을 수 없다. 이런 문제를

[Stocker] The Foundation of Stocker 마일스톤 회고

동기 첫 번째 마일스톤을 회고하는 글이기 때문에 이 프로젝트를 하게된 동기부터 이야기하고자 한다. 이 프로젝트는 예적금 이외에 투자를 시작하고자 하여, 작게나마 주식에 투자를 하며 주식이 형성되는 가격이 어떻게 형성되는지 궁금해 하며 시작하게 되었다. 그 이유를 재무재표와 같은 데이터에서 찾고자 하였고, 개인 프로젝트 거리를 찾으며 이런 데이터들을 직접 모아서 다루며 분석하면 어떨까 싶었다. 때마침 업무에서도 새로운 프로젝트가 진행되고 있었고 이 프로젝트와 병행하며 양쪽에서 여러가지 기술이나 방법론을 적용해가며 확인 해볼 좋은 기회