분류 전체보기(42)
-
Typescript 로 개발하며 만들어본 유용한 유틸리티
TL;DRTypescript 로 개발하며 여러 타입들을 조합하는 상황을 마주해왔다.반복되는 Type Manipulation 상황에서 이를 간단하게할 유틸리티들을 만들었고, 이를 공유하고자 한다.생상한 타입들은 아래와 같다.MakeRequiredMakeOptionalEnumToUnionNonEmptyArrayUnionToIntersectionMakeRequiredByPathshttps://github.com/SecretJuJu/typescript-type-utilsMakeRequired특정 필드만 Required 로 바꾸는 유틸이다.비즈니스로직에선 특정필드는 필수값이어야할때 별도의 손수 만들지 않아도 된다. MakeOptional특정 필드만 Optional 로 바꾸는 유틸이다.데이터모델에서 특정필드를 선..
2024.12.28 -
[트러블슈팅] PostgreSQL alter table 무한로딩
TL;DR개발 서버에서 새로 추가된 테이블의 FK와 인덱스를 제거하려는데 무한로딩이 발생.pg_stat_activity 로 원인을 추적해 `ALTER TABLE` 쿼리를 강제 종료했지만, 재시도에도 문제 지속.FK의 대상 테이블에서 `SHOW TRANSACTION ISOLATION LEVEL` 명령어가 idle in transaction 상태로 남아 있음을 발견하고, 해당 명령어를 실행한 세션을 종료해 문제 해결.문제발생개발서버 데이터베이스에서 새로운 테이블에 변경사항이 발생해 FK 를 Drop 하고있었다.ALTER TABLE 명령어가 완료되지 않고 계속 실행되고있었다.개발서버에서 Lambda Timeout 에러가 발생하고, RDS 세션을 조회했더니 세션하나가 종료되지 않고 있었다.문제원인 탐색 및 해결..
2024.10.26 -
Go map 과 struct 의 메서드, 참조타입
니콜라스 선생님의 Go 강의를 보다가 struct 의 값을 메서드를 사용해 수정하는 코드와, map 의 값을 수정하는 부분이 달라 이부분을 파헤쳐 보기로 했다. 우선 코드는 다음과 같은데 HTML 삽입미리보기할 수 없는 소스 HTML 삽입미리보기할 수 없는 소스 HTML 삽입미리보기할 수 없는 소스 struct 같은 경우 함수에 인자로 넘기거나 return 할때 값이 복사가 되어 전달되기 때문에 pointer 를 사용하며 복사에서 발생하는 비효율을 우회하거나 수정등을 할 수 있다. 하지만 map 을 사용할때 map 에 무언가가 추가되는경우 pointer 를 사용하지 않았는데 값이 제대로 추가가 된 것이었다. 이유는 map 은 reference type 이므로 함수에 전달될때 이미 메모리주소가 전달되고, ..
2024.07.18 -
서울 시위/행사 알리미 앱 개선하기
기존에 다니던 회사가 폐업하여 7월부터 백수가 되었는데.. 이틈을 타 기존에 미뤄왔던 사이드프로젝트 개선을 하려고 한다. https://winbuntu.tistory.com/35 서울 시위/행사 알리미 앱 고치기 - 메모리 관련서울 시위/행사 알리미 앱이란? https://topis.seoul.go.kr/ 의 api 를 특정 주기마다 크롤링하여 이메일로 서울시 내 시위/행사 관련 알림을 보내주는 lambda 애플리케이션 이다. 서울로 출근하거나 놀러winbuntu.tistory.com 위 서울/시위 행사 알리미 앱을 새로운 유저도 신청 가능하게 만들기 위한 여정을 시작할 것이다. 우선 기존 프로젝트의 한계는 다음과 같았다. 1. 유저가 늘어나면 이메일 발송에 timeout 이 발생하여 SQS Retry ..
2024.07.12 -
[학습노트] MySQL 학습노트
업그레이드MySQL은 마이너 버전 간 업그레이드는 대부분 데이터 파일의 변경 없이 진행됨.따라서 많은 경우 여러 버전을 건너뛰어서 업그레이드할 수 있음 (ex: 8.0.16 -> 8.0.21)이때 업그레이드는 MySQL 서버 프로그램만 재설치하면 됨.메이저 버전 간 업그레이드는 크고 작은 데이터 파일 변경이 필요.때문에 반드시 직전 버전에서만 업그레이드가 허용됨.따라서 여러 메이저 버전을 업그레이드하는 경우, 인플레이스 업그레이드보다 mysqldump를 이용한 논리적 업그레이드가 더 나을 수 있음.MySQL 8.0으로 업그레이드 시 고려 사항사용자 인증 방식 변경: MySQL 8.0 버전부터 Caching SHA-2 Authentication 인증 방식이 기본 인증 방식으로 바뀜.호환성 체크: 8.0 업..
2024.07.09 -
Postman 사용시 자주하는 실수. Public
postman 은 http, grpc, graphql, websocket 등 api 를 테스트하기 매우 간편한 툴이다. 하지만 꽤 많은 사람들이 Postman 을 사용하며 이것을 까먹는 것 같다. 바로바로 Postman 의 Workspace 를 public 으로 만드는 것 이다. 현재 대기업을 포함하여 꽤 많은 회사들의 기술과제나 내부에서 사용하는 api, 심지어 인증키나 숨겨진 api 등이 이런식으로 노출되어있다. 앞으로 Postman 의 워크스페이스를 생성할때 반드시 접근한을 확인할것. 현재 회사의 api spec 이 외부에 노출되어있는지 확인할것. 확인하는 꿀팁 구글에 다음과 같이 검색 [회사명(혹은 프로젝트명)] site:postman.com
2024.07.05