분류 전체보기 1172

[Celery/Flower] 설치 및 실행

개요업무 상 Airflow에서 CeleryExecutor를 사용하고 있어 이전에  2023.08.09-[Python] Celery 란 글로 간단한 개념을 알아보았었다. 하지만 막상 Celery를 들여다보는 상황이 되면 관련 개념 부족을 느끼곤 했다. 때문에 아주 간단하게 Celery를 직접 설치해 보고 실행해 보는 경험에 대한 필요성을 느껴 적어두려고 한다. 공식 문서의 튜토리얼을 참고하여 작성했고, Message Broker로는 Redis를 사용한다. 단순 테스트이기 때문에 환경은 killercoda를 사용한다.  Message Broker 설치Celery를 사용하기 위해서는 Worker 간 Task를 주고받는데 사용할 Message Broker가 필요하다.이 글에서는 redis를 사용한다고 명시했으므..

Apache Airflow 2024.09.26

[MySQL] GROUP_CONCAT - 그룹 별 행 압축

개요여러 값이 저장되어 있는 테이블에서 특정 컬럼에 그룹 별로 값이 어떤 것들이 있는지 확인하고 싶다. 이럴 때는 그룹 별로 여러 행의 데이터를 하나의 필드로 연결하는 GROUP_CONCAT 함수를 사용할 수 있다. 사용법을 적어둔다.  GROUP_CONCATGROUP_CONCAT은 여러 행의 데이터를 하나의 필드로 연결하는데 사용하는 함수이다. 그룹에 NULL이 아닌 값이 포함되어 있으면 문자열 값을 반환하는 집계 함수로, 그룹에 값이 전부 NULL이면 NULL을 반환한다.SELECT GROUP_CONCAT ( [DISTINCT] col_name1 [ORDER BY 절] [SEPARATOR str_val] ) FROM 테이블_이름 GROUP BY 그룹화_기준_열;   예시다음과 같이 물건의 유형과 이름..

Database 2024.09.25

[DBeaver] Connection is read-only. Queries leading to data modification are not allowed.

현상DBeaver를 사용해 MySQL에서 작업을 수행하려고 하는데, 언제부터인가 데이터 SELECT문은 정상적으로 동작하지만 ALTER, WITH, CREATE 등의 SQL을 사용할 때는 다음과 같은 에러가 발생하면서 수행되지 않았다.계속 작업이 불가능한 상태라 해결 방법을 적어둔다.   해결 방법최근 Connection 설정을 편집하면서 실수했는지, rea-only connection 설정을 활성화한 게 원인이었다. 다시 수정해 보자. 1. Connection 설정 편집창 열기Connection 우클릭 > Edit Connection으로 접근할 수 있다. 2. General 탭 > Security 항목 확인Securitydml Read-only connection 설정을 체크 해제한 후 저장한다.   ..

Database 2024.09.24

[Tomcat] 응답에 Server 속성값 지정

개요2024.09.05-[Nginx] server_tokens - 서버 정보 명시 여부 결정에서 nginx 사용 시 서버 정보를 노출하지 않도록 설정을 했었다. 비슷한 설정으로 이번 글에선 Tomcat 사용할 때 응답에 server 정보를 설정해 보자.  기본 설정Tomcat 사용할 때의 서버 정보는 conf/server.xml의 Connector 설정에서 지정할 수 있는 것 같다.  설치 후 기본 설정은 위와 같은데, 기본 설치 후 서비스를 시작하여 Tomcat 서버에 접속해 보면 응답 헤더는 다음과 같다.   server 속성응답 헤더에 server 정보를 임의로 지정할 때는 server.xml의 Connector 부분은 server 속성을 추가하면 된다. server 속성은 http 응..

Linux 2024.09.23

[Nginx] server_tokens - 서버 정보 명시 여부 결정

개요최근 API 서버를 구성하면서 nginx를 사용하고 있는데, response header에서 아래와 같이 서버 정보가 노출되어 잇어 삭제해달라는 요청이 있었다.관련 설정에 대해서 적어둔다.  server_tokensserver_tokens는 오류 페이지만 Server의 Response Header에서 nginx 버전의 출력 여부를 결정한다.server_tokens 값설명onnginx 버전 출력. 기본값offnginx 버전 미출력buildnginx 버전 및 빌드 이름 출력   설정 방법Ubuntu 기준으로 /etc/nginx/nginx.conf에서 값을 설정할 수 있다.user www-data;worker_processes auto;pid /run/nginx.pid;include /etc/nginx/m..

Linux 2024.09.20

[GitLab] Merge Request - Squash 기본 활성화하기

개요2024.08.30-[Git] Squash - 커밋 압축하기에서 여러 개의 작은 커밋을 하나의 커밋으로 압축하는 Squash를 알아보았다.이번 글에서는 GitLab에서 Merge Request를 머지할 때 Squash 기능을 사용하는 방법을 적어둔다.  Merge Request - SquashGitLab에서 Merge Request를 할 때 Squash commits 체크박스를 체크하면 머지할 떄 압축된 커밋 하나와 머지 커밋 하나, 총 두 개의 커밋이 target branch에 추가된다.   기본 옵션 설정레포지터리 설정에서 Merge Request를 생성할 때의 Squash 관련 기본값을 설정할 수 있다. 설정할 수 있는 기본값은 아래와 같다.Do now allow : Squash 미허용. 체크 ..

Git | GitLab 2024.09.19

[Git] Squash - 커밋 압축하기

개요Git으로 프로젝트를 관리하는 경우, commit 이력을 깔끔하게 관리하는 것은 프로젝트의 이력 파악에 도움을 준다. 다만 커밋을 수행한 직후에 사소한 오타 등을 수정하기 위해 다시 커밋을 수행하는 상황에 의해 커밋 이력이 난잡해질 수도 있다. 이런 경우 git squash라는 기능을 이용하여 커밋을 압축하는 방식으로 커밋 이력을 정리할 수 있다.이번 글에서는 git squash를 사용하는 방법을 적어둔다.  Squash사전적으로 squash란 '짓누르다'라는 의미로, git에서는 여러 커밋을 하나의 커밋으로 짓눌러 합치는 기능을 제공한다. 불필요하게 작게 나뉜 커밋을 유의미한 변경 사항을 담은 커밋으로 압축할 수 있게 한다.로컬 레포지터리에서 개발한 내용을 원격 저장소로 올리기 전에 squash를 ..

Git | GitLab 2024.09.13

[Python] singledispatch - Overloading 하기

개요2024.08.28-[Python] multipledispatch - Overloading 하기에서 Python에서 Overloading을 구현하는 방법에 대해서 정리했었는데, multipledispatch가 아니라 functools의 singledispatch를 이용한 방법도 존재하는 것 같아서 적어둔다.  singledispatchfunctools 라이브러리에서 제공하는 singledispatch는 함수를 인자 하나의 데이터 타입에 따라 구현이 결정되는 제네릭 함수로 변환하는 기능을 제공한다. ❓ 제네릭(Generic) 이란?하나의 값이 여러 데이터 타입을 가질 수 있는 기술에 중점을 두어 재사용성을 높이는 프로그래밍 방식함수 등을 정의할 때 인자에 구애받지 않고 같은 이름의 함수를 인자 타입에 ..

Python 2024.09.12

[Python] multipledispatch - Overloading 하기

개요컴퓨터 프로그래밍에서 메서드 오버로딩(Overloading)이란, 함수 이름은 같지만 매개변수나 반환 데이터 타입을 다르게 정의하는 것을 의미한다.Python은 함수를 정의할 때 타입을 지정하기 않기 때문에 기본적으로 오버로딩을 지원하지 않는다. 하지만 multipledispatch라는 라이브러리를 사용하면 오버로딩을 적용할 수 있다고 한다. 사용 방법을 정의한다.  multipledispatchPython multipledispatch는 상속, 인스턴스 메서드, 추상 클래스, Union 타입 지원 등을 제공하는 라이브러리이다.Python 기본 라이브러리가 아니기 때문에 pip 등으로 설치해야 한다.pip install multipledispatch  모듈 임포트메서드 오버로딩을 구현할 때는 disp..

Python 2024.09.11

[AWS] S3 - 미완료 멀티파트 업로드 데이터 삭제

개요2023.07.12-[AWS] S3 - 멀티파트 업로드/다운로드에서 정리한 바에 의하면 aws s3는 sync, cp 명령어를 사용할 때 일정 용량 이상의 객체에 대해서 자동으로 멀티파트 업로드를 사용하도록 되어 있다. 하지만 멀티파트 업로드가 항상 성공적으로 완료되는 것은 아닌데, 멀티파트 업로드 미완료로 인해 객체의 일부만 S3에 업로드된 경우에는 S3에서 객체를 생성하지 않기 때문에 객체는 확인할 수 없고 용량에 의해 비용을 청구받는 상태가 될 수 있다.이번 글에서는 미완료 멀티파트 업로드 데이터를 모니터링하고, 삭제하는 방법에 대해서 적어둔다.  미완료 멀티파트 업로드 확인미완료 멀티파트 업로드 데이터는 S3 스토리지 렌즈 기능을 사용하여 확인할 수 있다.S3 스토리지 렌즈의 추세 및 배포 항..

AWS 2024.09.10