본문 바로가기

분류 전체보기

(17)
Chart.js 버그 픽스 컨트리뷰션 회사에서 신규 화면 구성을 위해 Chart.js를 사용하던 중 복장터지는 레이아웃 버그를 하나 만나게 되는데... 바로 이 툴팁의 위치가 미묘하게 왼쪽으로 틀어져버리는 버그였다. Chart.js 옵션 중 stack이라는 것을 활용하면 위처럼 하나의 bar 엘레먼트에 두 데이터를 쌓아서 표시할 수 있는데, 이 경우에 툴팁의 포지션이 틀어져버리는 것이었다. 왜그러는 것인가.. 소스 코드를 분석하던 중 툴팁 관련 로직이 모여있는 plugin.tooltip.js 파일을 발견. 이 파일 안에 있는 `positioners.average` 함수가 툴팁의 위치를 계산해주는 놈이었다. const positioners = { average(items) { if (!items.length) { return false; } ..
혜움 레포트 프론트 개선 - 2 지난 이야기... 안녕하세요. 혜움랩스에서 개발자로 일하고 있는 문현제입니다. 이번 글에서는 전편에 이어서 프론트 개선 작업을 하면서 마주쳤던 어려움들과 해결 과정에 대해서 적어보려고 합니다. Frontend 마이그레이션 전략 장고템플릿과 Vue 코드가 강하게 결합된 기존 형태에서, 온전한 SPA로 프론트 앱을 어떻게 분리시킬지 결정이 필요했습니다. 기존에 동작하고 있는 서비스를 문제없이 사용자들에게 제공하면서 신규 프레임워크 Vue3도 적용할 수 있어야 했습니다. 여러 방식들을 리서치 해본 결과, path 별로 다른 앱을 보여주는 방식, 레거시 앱을 전부 신규 앱으로 이전하는 방식, 하나의 화면에 두 앱이 표시되는 multi-app 방식을 고려했습니다. path별 앱 분리 path 별로 앱을 분리하는 ..
혜움 레포트 프론트 개선 - 1 안녕하세요. 혜움랩스에서 개발자로 일하고 있는 문현제입니다. 혜움에는 혜움 레포트라는 세무 서비스를 위한 페이지가 있습니다. 이번 글에서 혜움 레포트를 점진적으로 개선했던 경험을 공유해보려고 합니다. 혜움의 서비스는 장고로 구성되어 있고 모든 트래픽을 장고에서 처리하는 방식이었습니다. 사용자가 브라우저를 통해 혜움 레포트에 접속하면 다음과 같이 요청이 처리되고 있었습니다. 그리고 혜움 레포트의 화면은 장고 템플릿으로 공통 컴포넌트가 그려지고 실제 메인 페이지 부분은 django-webpack-loader를 통해 vue.js앱이 그려지고 있었습니다. 또한 장고 템플릿으로만 작업된 페이지들도 있었습니다. 이런 구조 속에서 개발을 하면서 불편한 점이 몇 가지 있었습니다. 화면에 그려주는 로직이 프론트(vue...
레거시 코드에 대해 레거시라는 단어는 유산이라는 뜻이다. 이 단어 안에는 특정한 가치를 가지고 있지 않다. 물려 받은 유산이 좋은 것인지 나쁜 것인지 알 수 없기 때문이다. 다만 소프트웨어 업계에서는 이 단어가 꽤나 부정적인 뜻을 가지고 있는 것 같다. 레거시에 대한 이미지는 대부분 '잘 구조화 되어 있지 않은', '테스트가 잘 되어있지 않은', '복잡한', '구식의' 등의 단어를 연상하게 한다. 개발자로 일을 시작한지 얼마 안되었을 때, 제대로 짜여져있지 않은 레거시 코드들을 보며 이전 작업자들을 이해할 수 없다는 식으로 생각한 적이 있었다. '왜 이렇게 작업을 했지', '나라면 더 잘 짰을 것 같은데' 이런 생각을 하면서 말이다. 그런데 개발자로 조금 더 일을 해보니 생각이 달라졌다. 첫 번째로 바뀐 생각은 내가 했어도..
타입스크립트가 싫다 js를 사용하는 곳이라면 대부분 ts를 도입하고 사용하려 한다. 타입이 모든 에러를 잡아줄 것이다라는 희망을 가진 수 많은 개발자들이 ts를 찬양하고 도입하는 추세이다. 근데 나는 ts가 별로인 것 같다. 모든 코드가 완벽한 타입으로 정의 되어있고 ide가 모든 것들을 잘 처리해주면 불만이 없을 텐데, 사용하다보면 타입 없이 js로 개발된 모듈을 사용해야될 때가 있고, 그를 보완하기 위해 @types/어쩌구 패키지를 설치해야하며, js로 작성된 모듈이 변경될 때 types도 수정을 해줘야한다. 그마저도 types 패키지가 없으면 직접 모듈 문서를 참고하여 타입을 선언해줘야 한다. any 같은 타입을 허용할 거면 애초에 ts를 쓰는 이유가 없다. 정적 타입 체킹이 과연 오류를 줄이는데 도움을 주는가에 대한..
토픽 트롤리 토트 폴딩 MTX 바스켓 생활차로 사용하는 자전거에서 짐을 적재하는 능력은 굉장히 중요하다고 생각한다. 음식을 포장해서 가져온다거나 장을 봐올 때 자전거에 실을 수 있는 것이 내가 생각하는 생활차의 핵심이다. 다만 내 자전거는 본격적인 라이딩과 생활차의 역할 모두를 수행해야 하기 때문에 적절한 짐받이와 바구니가 필요했다. 그래서 선택한 것이 토픽 MTX 바스켓이다. 토픽에서 나온 MTX 형식의 짐받이에 체결하여 고정할 수 있는 방식이어서 장착, 분리가 쉽다. 게다가 바퀴와 손잡이가 달린 접이식 바구니여서 활용성이 굉장히 좋다. 펼친 상태에서 박스 형태의 강성을 확보하기 위해 두 개의 보강바를 적용했다. 무거운 짐을 실을 때 확실히 유용하다. 토픽 제품이 저렴하다고 할 수는 없겠지만 만듬새나 사용성이 상당히 훌륭한 제품이라고 생각..
Magene Gemini 210(S3+) 센서 펌웨어 업데이트 몇 년 전에 알리에서 가성비 좋은 것으로 유명한 Magene Gemini 210 속도/케이던스 센서를 두 개 샀다. (지금은 거의 같은 제품을 Gemini S3+라는 이름으로 바꿔서 팔고 있는 것 같다.) 나는 따로 바이크 컴퓨터를 사지 않았기 때문에 각각 속도/케이던스 용으로 블루투스를 이용해 아이폰과 연결할 계획이었다. 그런데.... 도대체가 연결이 안되는 것이었다. 제대로 케이던스/속도 모드로 각각 세팅을 했고 배터리도 있는데 대체 왜 안되는건지... 그 후 자전거와 잠시 멀어지게 되면서 이 아이들도 방치되었다. 그리고 최근에 다시 자전거를 타게되면서 이 아이들을 다시 꺼내보게 되었다. 오픈라이더에 각각 케이던스, 속도 센서로 등록은 잘 되는데 라이딩시 정보를 읽어오지를 못했다. 열심히 구글링한 결..
Cycplus M1 속도계 주로 아이폰을 이용하여 라이딩을 기록했었는데 이게 노출된 상태로 사용을 하다보니 너무 덥거나 추울때, 배터리가 넉넉하지 않을 때 사용하기가 힘들었다. 그래서 적당한 바이크 컴퓨터를 하나 구매해보자 싶어 찾은 것이 이 Cycplus M1 속도계이다. 이 제품을 선택한 특별한 이유는 바로 가격이다... 무료배송으로 37달러. 카드사 승인 금액 기준 4만 3천원이 안된다. 네이버 쇼핑에서는 공식 수입사에서 유통+AS 비용까지 합쳐서 9만원 정도에 판매중이다. 이 정도 가격에서는 그냥 알리에서 직접 사는게 저렴하지 않나 싶다. 패키지 구성은 심플하다. 본체, 핸들바나 스템에 장착가능한 마운트, usb 케이블, 설명서 이렇게 끝이다. 가격이 모든 것을 용서할 수 있는 제품이다. XOSS 앱을 통해 스트라바 업로드..