반응형

DEV 46

[파이썬] XIRR 구하기, 일괄 업데이트

투자회수 내역의 XIRR 값들을 일괄 업데이트 해야 하는 이슈가 있었는데 간결하고 심플한 파이썬으로 작업을 하게 되었습니다.이미 Spring 웹서버에 단건의 투자건에 대해 XIRR을 구하는 로직은 구현이 되어 있었고 포팅만 하면 되는 상황이었는데 생산성을 높이고자 파이썬으로 작업을 하게 됩니다 XIRR 일괄 업데이트는 FAST API 를 발행해서 스케줄러를 통해 새벽 시간대에 업데이트를 하도록 설정하고 XIRR 산식은 채찍피티를 갈궈서 빠르게 클래스 객체로 만들어 내게 됩니다.생산성은 기가 막히는데 딜레마에 빠지기도 하지만 MSDN 찾아보고 구글링 하던 시절 생각하면 별반 차이는 없다고 생각이 드네요   CashFlow 는 현금흐름 정보를 가지는 객체입니다class CashFlow: def __in..

DEV/python 2024.11.07

유효하지 않은 문자, RFC 7230과 RFC 3986 오류 처리

기존 apache 웹서버를 nginx 로 교체하는 작업 진행후 몇가지 버그사항이 발생했던 부분은 nginx 서버 셋팅으로 잡을 수 있었는데이번 유효하지 않은 문자 오류는 서버 셋팅으로는 해결이 안되었어요  파일 다운로드 실패  파일 다운로드 링크 클릭 시 아래처럼 유효하지 않은 문자가 발견되었다고 합니다get 방식으로 호출하는 부분인데 한글 파일명의 경우 처리실패로 나타나는 부분이었어요  요청 타겟에서 유효하지 않은 문자가 발견되었습니다. 유효한 문자들은 RFC 7230과 RFC 3986에 정의되어 있습니다.  아래 처럼 URIEncoding는 "UTF-8" 로 설정하고,  relaxedQueryChars 는 "[]()^|"" 설정해서Query String에 한글 또는 특수문자가 있을 시 제대로..

DEV 2024.09.23

[nginx] 413 request entity too large 에러 처리

413 request entity too large 오류 기존 윈도우 서버에서 구동중이던 웹서버를 apache에서 nginx 로 교체하는 작업을 진행 후 몇가지 테스트를 진행하다 아래와 같은 오류를 맞이하게 됩니다. 413 request entity too large413 요청 엔터티가 너무 큽니다 2개의 서버에 같은 nginx 를 설치했는데 2개의 서버가 넘겨주는 메시지도 하나는 영어, 하나는 한글인데 왜인지 파악해보아야 겠습니다. 해당 오류를 찾아보니 클라이언트의 요청 사이즈가 제한에 걸려서 발생하는 문제인데 주로 첨부파일 업로드시 발생하는 부분이었습니다.아래와 같이 nginx  공식문서에서 해당 오류가 발생하는 경우를 설명해두었는데요 client_max_body_size 값일 수정해 클라이언트 요청..

DEV/미분류 2024.08.26

웹소켓을 이용한 주가정보 실시간 반영하기(html, python)

WebSocket 을 활용한 주가정보 실시간 조회 작업 대쉬보드에서 주식 종목 정보를 보여주는 부분이 존재하는데 주가정보는 전일 오후 3시 30분, 장이 마감되고 난 뒤에 일괄 업데이트 된 정보만을 보여주다보니 당일 실시간으로 변하고 있는 주가정보를 반영해주지 못하고 있었습니다.20분 지연시세도 아닌 전일 종가라서 당일 변동에 따른 수익률의 변화를 실시간으로 반영하지 못하고 있는 부분으로 인해 이 부분을 개선해주기로 하였습니다.  주가정보는 서버에서 가져오게 하고, 뷰단에서는 수신된 주가정보를 업데이트 하도록 했습니다.웹페이지 접속 시 웹소켓을 이용해 서버로 접속 요청 이후 접속 성공 시 주가정보를 내려받을 종목 코드 리스트를 넘겨주도록 합니다. 서버는 python 으로 작성되었으며 주가정보는 Finan..

DEV/python 2024.08.07

[Lightsail] react 배포 과정 트러블슈팅(feat. EPIPE, out of memory)

생짜로 프로젝트를 만들고 디자인을 입혀가며 기능을 만들기에는 시간이 많이 걸리기에 디자인 템플릿을 활용해보기로 합니다. react dashboard 형태의 무료 템플릿도 많이 볼 수 있었으나 좀 더 다양한 기능을 제공해주는 유료 템플릿을 사용해보기로 합니다. themeforest.net 사이트를 통해 velzon dashboard를 구매하게 됩니다. 잘 짜여진 디자인 템플릿이었지만 내부를 보니 복잡도가 상당합니다. 좀 더 간소화 시킨 라이트한 버전이 필요했지만 따로 제공되지는 않았습니다. 결국 소스를 분석하며 필요한 기능만 남기고 나머지는 쳐 내는 과정을 거쳐야 할수 밖에 없습니다. 일단 내려받은 소스를 yarn install & build & yarn start 를 통해 로컬에서 정상적으로 도는 것을 ..

DEV 2023.12.28

PM2 모니터링 웹기반 서비스

nodejs express 서버를 AWS에서 무중단 서비스로 구동하기 위해 PM2를 사용중에 있습니다. https://pm2.keymetrics.io/ npm install pm2 -g 명령어로 손쉽게 설치가 가능하며 pm2 list 로 현재 리스트업된 목록을 확인가능하고 pm2 monit 명령어로 구동중인 서버 로그를 확인도 가능합니다. 다만 로그를 하나씩 확인하는게 너무 불편하고 모니터링 하기엔 부적절하다는 판단하에 모니터링 툴을 알아보던 중 pm2 자체에서 제공해주는 모니터링 웹서비스가 있음을 확인해서 설치하게 되었습니다. 기존 스프링에서 진행했었던 프로메테우스와 Grafana를 그대로 차용해서 활용해보고 싶었으나 일단 빠르게 시작할 수 있는 PM2를 먼저 건드려 보게 되었습니다. https://i..

DEV 2023.12.20

mysql 쿼리 select 결과 JSON 형태로 내보내기 - GROUP_CONCAT

들어가며 mysql에서 select 쿼리 결과를 JSON형태로 뽑아주는 함수가 있습니다. JSON_ARRAY, JSON_OBJECT, JSON_QUOTE 사용법은 공식 문서를 통해 확인할 수 있으며 MYSQL 5.7 버전 이상에서만 지원되는 함수입니다. https://dev.mysql.com/doc/refman/8.0/en/json-creation-functions.html MySQL :: MySQL 8.0 Reference Manual :: 12.17.2 Functions That Create JSON Values 12.17.2 Functions That Create JSON Values The functions listed in this section compose JSON values from co..

DEV/미분류 2023.11.02

[express] nginx 웹서버에 https ssl 적용(feat. Let's encrypt)

certbot 을 이용해 Let's encrypt SSL 인증서 발급받기 nodejs + express 로 구성된 API 서버앞단에 nginx 웹서버를 올려두었습니다. 멀티 서버 구성을 위해 포트 포워딩 방식을 적용해서 LightSail AWS 서버 하나에서 모든 웹 서버들을 구동시키고자 이 구성을 도입했습니다. 기존에 운영하던 서버에서는 아파치와 톰캣으로 멀티 서버를 구성했었는데 이미 한번 해본 경험이 있다보니 어렵지 않게 구성을 완료하였습니다. nginx 웹서버는 이미 셋업이 되어 있다는 가정하에 인증서 발급을 위한 절차를 진행해줍니다. 아래 명령어를 통해 certbot 을 설치해줍니다.letsencrypt를 설치해주면 certbot도 자동으로 설치가 된다고 하는데 certbot만 따로 설치해줘도 됩..

DEV 2023.10.11

nextjs 에서 구글 oAuth 인증으로 로그인하기(react-oauth/google)

react-oauth/google 라이브러리를 이용해 구글 oAuth 인증하기 소셜로그인 기능을 구현해두기 위한 초석으로 구글 auth 인증 기능을 구현중에 있습니다. 토이 프로젝트 개념으로 서버단과의 통신은 배제한 프론트 단에서 처리를 위한 베이스를 깔아두려고 프로젝트를 하나 만들었습니다. 아주 간단하게 구글 oAuth 인증을 통해 액세스 토큰을 발급받고 서버로 보내 로그인 여부를 체크하는 기능을 구현할건데 백엔드는 생략하고 프론트 부분에서 할 수있는 처리까지만 구현해보았습니다. 최종 결과물은 아래와 같이 Google 계정으로 로그인 버튼과 커스텀 로그인 버튼을 만들고 버튼 클릭 시 구글 계정으로 로그인을 진행하는 팝업 윈도우를 오픈하고 계정이 선택 될 시 인증성공과 함께 리턴되는 결과를 콘솔에 뿌리도..

DEV 2023.09.18

VSCode에서 LightSail SSH 연결 설정하는 방법

아마존 LightSail 서버를 운영하면서 브라우저 방식의 ssh 콘솔을 이용해왔었는데 라이트한 작업만 했었다보니 로컬에 따로 접속 환경을 설정해두지 않았으나 이번에 mysql 설치 작업을 진행하면서 VSCode 환경에 ssh 접속 환경을 셋팅하게 되었습니다. 제게 있어서도 VSCode 가 개발IDE 로써 점점 사용빈도가 높아지고 있다보니 더욱 이쪽 환경을 더 많이 셋업하게 되네요 Remote SSH 확장팩 설치 => SSH Key 다운로드 => SSH Config 파일 수정 => SSH 접속 먼저 확장팩 탭으로 이동해 Remote-SSH 를 검색해서 설치를 진행해줍니다. 설치가 완료되면 검색바에 >Open SSH Configuration FIle 을 찾아서 열어줍니다. 풀 경로는 >Remote-SSH ..

DEV/IDE 2023.09.17
반응형