isinstance()파이썬에는 isinstance() 라는 인스턴스가 특정 클래스/데이터 타입인지 검사할 수 있는 메서드가 존재한다. 이는 약타입 언어인 파이썬에서 유용하게 사용될 수 있는 기능이다.import datetime as dtinteger = 1print(isinstance(integer, int)) # Truetoday = dt.date.today()print(isinstance(today, dt.date)) # Truedate → datetime 변환 로직해당 isinstance() 메서드를 이용해 date 객체를 datetime으로 변환하는 다음과 같은 로직이 있다.import datetime as dtdef convert_to_datetime(date: dt.date | dt.da..
개요Docker Hub는 가장 널리 쓰이는 컨테이너 이미지 저장소이지만, 이 외에도 AWS의 ECR, Google의 GCR, Azure의 ACR, 그리고 GitHub와 GitLab 레지스트리 등 다양한 컨테이너 레지스트리 서비스들이 존재합니다.이번 글에서는 Docker Hub를 포함한 여러 컨테이너 레지스트리 서비스를 비교해, 어떤 옵션이 프로젝트에 적합한지 알아보겠습니다.서비스Docker HubDocker Hub는 Docker의 제작사인 Docker Inc.에서 제공하는 기본 컨테이너 이미지 레지스트리입니다.기본 설정으로 docker pull 명령어를 사용할 때 별도의 레지스트리를 지정하지 않으면, 자동으로 Docker Hub에서 이미지를 가져옵니다. 예를 들어, docker pull nginx와 같이..
개요솔리드 커넥션의 웹 파트를 개발하며 HeadVer 버저닝을 기반으로 Github Actions와 Vercel을 사용해 CI/CD 자동화를 이루어낸 기록을 정리합니다.솔리드 커넥션 웹, 그리고 배포 방식솔리드 커넥션은 교환학생을 돕기 위한 서비스입니다. 웹 애플리케이션은 Next.js로 개발되었으며, 배포는 Vercel을 통해 이루어지고 있습니다.Vercel은 정말 편리한 기능들을 많이 제공하고 있습니다. 그 중 하나는 Github과 잘 연계하여 빌드/배포를 매우 편리하게 해주는 것인데요, Github에 올라온 커밋들을 모두 자동으로 빌드해주고, 지정된 배포 브랜치에 올라온 내용을 자동으로 배포해줍니다. 서비스 CD를 위해서 배포용 release 브랜치를 만들고, 해당 브랜치에 PR을 올리는 것으로 배..
개요Celery를 이용하다 celery worker OOM(Out of Memory) Kill 문제가 발생한 것을 해결한 경험을 정리합니다. 최초 문제 발생Celery를 이용하던 중 어느 순간 도커를 이용하여 가동해 둔 Celery worker가 정지해 있는 것을 발견했습니다. 이를 재가동시킨 후 리소스 사용량이 많아 중지된 것인지 확인해 보았습니다.재시작한 컨테이너의 평시 CPU, 메모리 사용량과 디스크 사용량을 확인해 보았습니다.>> docker statsCONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS45dc370549da celery_wo..
개발 환경인 IntelliJ에서 실행시에는 문제 없이 실행 되는 스프링 앱이 빌드만 하면 어떻게 해서도 이상한 문자만이 무한으로 출력되는 오류가 발생했습니다. 위와 같은 방식으로 인코딩이 깨진채로 무한으로 출력되었습니다. 1. 우선 생각해본것은 단순히 인코딩이 깨진것을 의심해 보았습니다. 중간중간에 읽을 수 있는 코드들도 가끔 출력되기도 했고요.그러나 인코딩이 단순히 꺠진것으로 보기에는 로그가 무한으로 출력되고 있기 때문에 다른 것이 문제라 생각되었습니다. 2. gradle의 문제. 빌드시 사용하는 gradlew 파일이 잘못되었다면 이렇게 오류가 날 수 있다 생각해서 살펴보았지만, 기본 설정에서 달라진 것이 없었습니다. 3. 결국 코드와 설정들을 하나씩 삭제해보며 체크해본 결과 문제는 applicati..
GPT4를 사용하고 싶은데, 월 20달러를 내고 사용할정도로 자주 사용하지는 않아 API를 통해 사용하기 위해 찾아보던 중, LibreChat이라는 프로젝트를 찾았습니다. https://github.com/danny-avila/LibreChat GitHub - danny-avila/LibreChat: Enhanced ChatGPT Clone: Features OpenAI, Assistants API, Azure, Groq, GPT-4 Vision, Mistral, BinEnhanced ChatGPT Clone: Features OpenAI, Assistants API, Azure, Groq, GPT-4 Vision, Mistral, Bing, Anthropic, OpenRouter, Vertex AI, ..
brew를 이용해 설치한 postgreSQL을 시작하려면, brew services start postgresql 로 서비스를 시작할 수 있다. 이때 보통 접속을 위해 psql --username=postgres --dbname=postgres 을 시도하는데, 해당 방법으로 접속이 불가능했다. 그래서 psql postgres 로 접속 후 SELECT rolname FROM pg_roles; 로 확인해보니, postgres role이존재하지 않고, 내 컴퓨터 기본 이름으로 생성되어 있었다. 그리하여 CREATE ROLE postgres LOGIN SUPERUSER INHERIT CREATEROLE CREATEDB REPLICATION; 로 새로 생성해주고 pgAdmin4를 이용해 접속
AWS EC2(Elastic Compute Cloud)에는 t2, t3, t4g처럼 t로 시작하는 T instance가 있습니다. 이런 T type instance는 공유 코어를 사용한다는 특징이 있는데요, 이로 인하여 항상 높은 CPU 사용률을 보이지 않는 경우 M instance에 비해 비용을 줄일 수 있습니다.하지만 어느정도 사용할 때 M instance보다 저렴한지 비교하기 어려운데요, 이를 정리해 보았습니다.시작하기 전에 알아둘 점1. T instance는 M instance 특정 종류와 동일한 프로세서를 사용합니다.T instanceM instance프로세서 종류T2M4#2.4GHz 인텔 제온: 하스웰 E5-2676 v3(2.4~3.0Ghz, 15Q4?) 브로드웰 E5-2686 v4(2.3~3..