[MySQL] 변수 선언 시 @의 의미 이전에 MySQL의 변수에 대해서 포스팅을 한 적이 있었다. [MySQL] SQL 변수 선언 및 사용[MySQL] SQL 변수 선언 및 사용MySQL에서 변수를 사용하는 것은 데이터베이스 내에서 반복 작업을 자동화하거나, 복잡한 쿼리를 간결하게 만드는 데 매우 유용하다. MySQL에는 주로 세 가지 종류의heywantodo.tistory.com해당 포스팅에서 사용자 정의 변수에 대해 설명할 때, `@`를 붙여야 한다고 설명을 했는데왜 붙여야 하는지에 대한 설명이 부족했던 것 같아 보충하고자 한다. 세션 변수 (User-defined Variable)`@` 변수명 형식으로 선언하면, 세션이 유지되는 동안 값을 저장하고 사용할 수 있는 변수다.일반 쿼리에서는 `@` 없..
[boto3][Pandas] s3에서 여러개의 파일을 읽어 하나의 df로 저장하기데이터를 비교해야하는 업무가 있었는데, s3 버킷에 여러개의 csv 파일이 있었고 해당 파일을 하나의 df로 묶어비교 대상과 비교해야했다. 나는 `boto3`를 이용하여 객체를 읽은 다음 df에 append 하는 방식으로 진행을 했는데 자세히 알아보자. 함수 정의import pandas as pdimport boto3from io import StringIOdef combine_csv_from_s3(bucket_name, prefix): # S3 클라이언트 생성 s3 = boto3.client('s3') # 지정된 prefix 아래의 모든 객체 목록을 가져옵니다. response = s3.lis..
[Python] 주피터 노트북 커널 생성하기파이썬에서 가상환경을 설치 후 `jupyter notebook`을 실행하여 사용하고 있었는데, 노트북 커널이 로컬의 기본 python3로 설정되어있어 코드 실행 시 라이브러리 설치를 요구했다. 라이브러리 충돌을 피하기 위해, 프로젝트 별로 가상환경을 두어 관리하는 것이 좋다.노트북에서 가상 환경의 커널을 사용하기 위해선, 사용 중인 가상환경에서 새로 커널을 설치 후 사용을 해야한다. 이번 포스팅에서는 가상환경을 주피터 노트북에서 사용할 수 있도록 설정하는 방법에 대해 알아보고자 한다. 가상환경(venv) 생성먼저, 프로젝트 폴더에서 아래 명령어를 실행하여 가상환경을 생성한다.python -m venv myenv여기서, myenv는 가상환경의 이름이며, 원하는 ..
[Git] 특정 파일만 git add 취소하기 얼마전 로컬에서 git 변경 사항에 대해 수정을 한 후, 수정한 파일의 갯수가 많아 `git add .` 명령어로 로컬 전체의 파일을 staged 상태로 추가했더니, `.idea`라는 폴더의 전체 파일이 staged 상태가 되었다. `.idea`는 intellij의 프로젝트별 세팅파일이라고 한다. 여담으로 아래에서 어떤 파일이 gitignore 되어야하는지 아닌지를 확인할 수 있다고 한다. gitignore/Global/JetBrains.gitignore at main · github/gitignoreA collection of useful .gitignore templates. Contribute to github/gitignore development b..
[AWS] EC2에서 IAM 역할 사용하기얼마전 EC2로 생성한 서버에서 aws s3 cli를 통해 내 계정의 s3로 접근을 하려고 했지만,내가 사용하는 iam 유저에 s3 full account 권한이 있음에도 권한 오류로 접근이 되지 않았다. 이유를 알아보니 내 계정에 mfa가 걸려있기에, admin 권한이 있음에도 불구하고 mfa 임시 토근을 발급을 받아야접근이 가능했다. 해당 임시토큰은 몇시간만 유지되며, 서버를 새로 띄울때마다 발급을 받는 것이 번거로워, 해당 프로파일을 사용하는 대신EC2에 IAM 역할을 연결하여 사용하는 방법을 사용했다. 이번 포스팅에선, EC2에 IAM 역할을 연결하여 사용하는 방법에 대해 알아보고자 한다. IAM 역할 생성하기1. EC2에 부여할 IAM 역할을 생성하기..
[AWS] AWS에서 풀 스택 개발하기 (AWS Amplify)MinIO를 대체 할 S3 Web Exploler 서비스를 계속해서 찾고있었는데, 바로 얼마전 AWS에서 제공하는Storage Browser for S3 서비스에 대해 알게되었다. 해당 서비스는 간단히 애기하면 웹 애플리케이션에 추가하여 S3에 저장된 데이터에 대한 간단한 인터페이스를 최종 사용자에게 제공 할 수 있는 오픈소스다. 해당 서비스는 AWS의 Amplify Gen2 Project 에서 동작하는데, 이번 포스팅에서 Amplify에 대해 먼저 알아보자. AWS Amplify란?AWS Amplify는 프론트엔드 및 풀스택 웹, 모바일 애플리케이션을 손쉽게 개발, 배포, 관리할 수 있도록 지원하는 클라우드 기반 서비스다. React, A..
[Python] Salt앞서 해시와 SHA-256에 대해 포스팅을 한적이 있었다. [알고리즘] SHA-256 해시 알고리즘: 개념과 활용[알고리즘] SHA-256 해시 알고리즘: 개념과 활용SHA-256(Secure Hash Algorithm 256)은 SHA-2 계열의 암호학적 해시 함수 중 하나로,입력된 데이터를 256비트(32바이트)의 고정된 길이 해시 값으로 변환하는 알heywantodo.tistory.com 해당 포스팅에서 사용자의 비밀번호와 같은 민감한 데이터를 저장할때는 단순 해싱만으로 충분하지 않고,Salt 기법을 함께 사용해야지 보안성을 높일 수 있다고 짤막하게 언급했었다. 이번 포스팅에서는 Salt에 대해 보다 자세히 알아보고자 한다. Salt란?Salt는 암호화(특히 해싱)할 때 추가..
[알고리즘] SHA-256 해시 알고리즘: 개념과 활용SHA-256(Secure Hash Algorithm 256)은 SHA-2 계열의 암호학적 해시 함수 중 하나로,입력된 데이터를 256비트(32바이트)의 고정된 길이 해시 값으로 변환하는 알고리즘이다. 이 알고리즘은 강력한 보안성과 낮은 충돌 가능성을 제공하여 다양한 보안 애플리케이션에서 사용된다. SHA-256의 내부 동작 방식1) 입력 데이터 패딩 (Padding)입력 데이터의 길이를 512비트의 배수가 되도록 추가적인 비트를 붙인다.마지막 64비트는 원래 메시지의 길이를 저장한다. 2) 초기 해시 값 설정(Initial Hash Value)8개의 고정된 초기 해시 값(32비트씩 8개, 총 256비트)이 설정된다. 3) 메시지 블록 처리(Messa..
[Python] 파이썬으로 해시(Hash)와 해시테이블(Hash Table) 구현하기앞선 포스팅에 대해서 해시 자료구조에 대해서 알아봤다. [자료구조] 해시(Hash)와 해시 테이블(Hash Table)[자료구조] 해시(Hash)와 해시 테이블(Hash Table)해시는 데이터 보안, 검색 최적화,, 암호화, 분산 시스템 등 다양한 분산 시스템에서 활용된다.해시 테이블은 매일 사용하는 기술 속에 자리잡고 있heywantodo.tistory.com이번 포스팅에서느 파이썬을 이용해 해시와 해시테이블을 구현하는 법에 대해서 알아보고자 한다. 파이썬에서 해시(Hash) 사용하기파이썬에서는 `hash()` 내장 함수를 사용하여 쉽게 해시 값을 생성할 수 있다.# 문자열 해시 값print(hash("hello"))..
[자료구조] 해시(Hash)와 해시 테이블(Hash Table)해시는 데이터 보안, 검색 최적화,, 암호화, 분산 시스템 등 다양한 분산 시스템에서 활용된다.해시 테이블은 매일 사용하는 기술 속에 자리잡고 있지만, 그 원리에 대해 명확히 이해하고 있지 않은 것 같아서해당 포스팅에서 해시에 대해 조금 더 자세히 알아보고자 한다.해시(Hash)란?해시(Hash)란 어떤 데이터를 일정한 길이의 고유한 값(해시 값)으로 변환하는 과정을 의미한다.이때 사용되는 해시 함수(Hash Function)는 입력값을 특정한 규칙에 따라 변환하여, 짧고 고유한 숫자나 문자값(해시 값)으로 매핑하는 역할을 한다. 해시의 특징은 다음과 같다.고정된 길이 : 입력 크기에 관계없이 항상 동일한 길이의 해시 값을 반환한다.빠른 연산..
[Airflow] Airflow에서 DAG 파일을 처리하는 법 (DagFileProcessor)Airflow는 DAG(Directed Acyclic Graph) 파일을 통해 워크플로우를 정의하는 워크플로우 관리 도구다.DAG 파일은 Python 코드로 작성되는데, Airflow가 이를 어떻게 인식하고 실행하는 지에 대해 궁금점이 생겼다, Airflow에서 DAG 파일을 처리하는 핵심 컴포넌트 중 하나가 바로 DagFileProcessor다. 이 글에서는 DagFileProcessor가 무엇인지, 어떻게 동작하는지에 대해 알아보고자 한다. DagFileProcessor란?DagFileProcessor는 Airflow가 DAG 파일을 주기적으로 읽고 파싱하여, 메타 데이터를 저장하게하는 역할을 한다.Airf..
[Pandas] explode데이터 프레임을 다루다보면, 하나의 열에 리스트나 튜플 형태로 저장된 데이터를 여러 개의 행으로 나누어야 할 때가 있다. Pandas의 `explode()` 함수는 이러한 상황에서 매우 유용하게 사용할 수 있는 기능이다. explode()`explode`는 데이터프레임(Dataframe)이나, 시리즈(Series)의 특정 열에있는 리스트, 튜플 또는 set과 같은 iterable 데이터를 각각 개별적인 행으로 변환해주는 함수다. 리스트가 아닌 데이터에는 그대로 유지되며, NaN값은 영향을 받지 않는다. 다음은 explode를 사용한 간단한 예제다.import pandas as pddf = pd.DataFrame({ 'id': [1, 2, 3], 'values': [..