[Go] encoding/csv 패키지를 이용해 csv 다운로드 API 구현하기
·
Project
서버를 개발하다 보면 데이터를 csv 형태로 내보내는 기능을 구현해야할 때가 있다.특히 통계 데이터나 리포트를 제공하는 서비스에서는 필수적인 기능이다. 이번 포스트에서는 실제 프로덕션 코드를 기반으로 golang에서 csv 다운로드 API를 구현하는 방법을 자세히 살펴보자.CSV 파일이란?CSV(Comma Separated Values) 파일은 각각의 데이터 값을 콤마(,)로 구분하는 파일의 형식이다.이 파일은 데이터 레코드로 구성되며, 각 레코드가 테이블의 단일 행에 해당하고, 각 필드는 쉼표로 구분한다.각 열에 어떤 정보가 저장되어 있는지 설명하는 열 머리글은 파일의 첫 줄에 자주 표시한다. JSON Response vs CSV Response일반적으로 API를 개발할 때 우리는 JSON 형태의 응답..
Go 서버 악마 퇴치기 2탄 - goroutine과 channel의 무서움
·
Error Handling
(최초 작성일: 2024.12 ...ㅎ...)프로젝트를 진행하면서 전체 코드 마무리를 내가 맡았는데, 데이터를 꼼꼼히 다시 재검토하면서 데이터가 기존과 상이한 것을 발견했다.대충 코드를 훑어보면 아무 문제가 없어 보였기 때문에 대체 왜!!! 왜!!! 데이터가 제대로 쌓이지 않는지 내 소중하 머리털을 쥐어 뜯으며 삽질에 삽질을 더했다.다른 이슈들도 병행했기 때문에 원인 발견에만 이틀 정도가 소요되었다!! 해결하지 못하면 어떡하지 싶은 아찔한 기분도 느꼈었다.원인을 알아내니 다행히 해결은 차근차근 빠르게 진행할 수 있었다. 나는 이 에러들을 'Go 서버의 악마들'이라고 감히 말하고 싶다!평소에는 Go 언어의 장점으로 개발자들에게 편의성을 제공하는걸로 알려져 있지만 잘못 사용하게 된다면 그야말로 악마로 탈변하..
[Go] 실시간 ohlcv 차트(캔들 차트) 데이터 적재 서버 개발 in 블록체인 플랫폼 - Part 2. 해결편
·
Error Handling
이 글을 3월 9일에 쓰기 시작했는데 현생이 바빠서 6월에 완성..ㅎ..~블록체인 플랫폼 실시간 ohlcv 차트 개발기 시리즈~[1] 실시간 ohlcv 차트(캔들 차트) 데이터 적재 서버 개발 in 블록체인 플랫폼 - Part 1. 문제편[2] 실시간 ohlcv 차트(캔들 차트) 데이터 적재 서버 개발 in 블록체인 플랫폼 - Part 2. 해결편[3] 블록체인 플랫폼 실시간 ohlcv 차트 적재 서버 후속편:Refactoring (1)[4] 블록체인 플랫폼 실시간 ohlcv 차트 적재 서버 후속편: Refactoring (2)[5] 블록체인 플랫폼에서 실시간 ohlcv 차트 적재 서버 후속편: RestructuringRestructuring🟧 얼기설기 끼워 맞추기QA 테스트 기간 전까지 남은 개발 기..
[Go] 실시간 ohlcv 차트(캔들 차트) 데이터 적재 서버 개발 in 블록체인 플랫폼 - Part 1. 문제편
·
Error Handling
블록체인 업계에서 핫했던 '밈 코인 발행 플랫폼'을 우리 회사에서도 개발하게 되었다.~블록체인 플랫폼 실시간 ohlcv 차트 개발기 시리즈~[1] 실시간 ohlcv 차트(캔들 차트) 데이터 적재 서버 개발 in 블록체인 플랫폼 - Part 1. 문제편[2] 실시간 ohlcv 차트(캔들 차트) 데이터 적재 서버 개발 in 블록체인 플랫폼 - Part 2. 해결편[3] 블록체인 플랫폼 실시간 ohlcv 차트 적재 서버 후속편:Refactoring (1)[4] 블록체인 플랫폼 실시간 ohlcv 차트 적재 서버 후속편: Refactoring (2)[5] 블록체인 플랫폼에서 실시간 ohlcv 차트 적재 서버 후속편: RestructuringRestructuring 🟧 개요 '밈 코인 발행 플랫폼'이란 사용자가..
[Go] util 함수 개발기 - klaytn 패키지의 unpack 함수에서 abi 의존성 제거하기
·
Project
이력서를 정리하면서 내가 많은걸 배웠던 버그 리폿팅 & 기능 개발에 대해서도 같이 정리하는 편이다.그 중 블로그에 올려도 괜찮겠다 싶은 사례가 있어서 가져왔다. 이것말고도 더 많지만 아직 글이 정리가 안되어서 다듬어지면 또 가져와보겠다..ㅎ 3문단으로 이 글을 요약하자면 아래와 같다. [Situation]- RPC 통신으로 받은 데이터를 바로 프로젝트 안에서 사용하는 변수에 할당해주는 unpack 함수 개발 필요(unpack 함수를 지원하던 패키지를 확장성 문제로 사용하지 않게됨)[Task]- 기존 사용하던 외부 패키지의 함수는 ABI 규격을 이용해 변수에 알아서 할당을 해주었음. 그러나, gateway 서버를 사용하는 현재 프로젝트 구조상 ABI를 참고할 수 없음- 현재 모든 서버가 공통적으로 RPC ..
[Go] Decimal decoder : Decimal을 MongoDB에 바로 String으로 저장
·
Language/Go
Go 서버에서 mongoDB에 데이터를 넣을 때 추가할 수 있는 신기한 기능(?)을 리팩토링 코드 리뷰를 받으면서 알게되어 그 내용을 정리하여 글을 쓰고자 한다.리뷰받은 코드는 다음과 같다.types.DataToUpdateInMongo{ ... TotalTradingVolume: totalTradingVolume.String() ...} 여기서 TotalTradingVolume 엄청나게 큰 숫자 값(블록체인 서비스다보니 기본 단위가 10^18 이기 때문)이다. 이래저래 사칙연산도 필요하다 보니 decimal.Deciaml 타입인 totalTradingVolume을 변수로 계산을 마친 후, 이제 mongo db 저장을 위해 최종 구조체에 값을 저장하려고 하는 코드이다. mongo에 이..