https://pypi.org/account/register/ Create an account The Python Package Index (PyPI) is a repository of software for the Python programming language. pypi.org 가입하기 PyPI에 업로드할 수 있는 간단한 Python 라이브러리를 만드는 과정을 예시 코드와 함께 설명하겠습니다. 예를 들어, 간단한 수학 연산을 수행하는 라이브러리를 만든다고 가정해 보겠습니다. 1. 라이브러리 구조 먼저, 라이브러리의 디렉토리 구조를 설정합니다. 일반적인 구조는 다음과 같습니다: hankyo/ |-- hankyo/ | |-- __init__.py | `-- math_functions.py |-- tes..
self의 사용 유무에 따른 차이를 명확하게 보여주기 위해, 간단한 예시를 통해 설명하겠습니다. 두 가지 경우를 비교하기 위해 "Person" 클래스를 사용할 것입니다. 1. self를 사용하는 경우 이 경우, 각 인스턴스는 고유의 속성 값을 가지고, 이러한 속성들은 객체 생성 시 설정되며 각 객체별로 다릅니다. class PersonWithSelf: def __init__(self, name, age): self.name = name self.age = age def greet(self): return f"Hello, my name is {self.name} and I am {self.age} years old." # 객체 생성 person1 = PersonWithSelf("Alice", 30) per..
클래스를 사용하는 이유는 주로 객체 지향 프로그래밍의 원칙에 근거합니다. 객체 지향 프로그래밍은 데이터(속성)와 그 데이터를 처리하는 메서드(함수)를 하나의 단위로 묶어 관리하는 방식입니다. 클래스는 이러한 데이터와 메서드를 포함하는 템플릿 역할을 합니다. 여기에는 몇 가지 주요한 이점이 있습니다: 캡슐화: 데이터와 이를 처리하는 메서드를 함께 묶어 관리함으로써, 데이터 구조와 데이터를 처리하는 방법을 하나의 '캡슐'로 취급할 수 있습니다. 이는 프로그램의 복잡성을 줄이고 코드의 가독성을 높입니다. 재사용성: 클래스를 정의하면 해당 클래스의 인스턴스를 필요에 따라 여러 번 생성할 수 있습니다. 이는 코드의 재사용성을 높이고 중복을 줄입니다. 확장성: 클래스를 상속받는 새로운 클래스를 만들어 기존 클래스의..
Ubuntu에서 Neo4j를 설치하고 구성하는 방법을 마크다운 형식으로 설명드리겠습니다. 자바 설치하기 Ubuntu에서 Neo4j를 설치하기 전에 Java를 설치해야 합니다. 다음 명령어를 통해 OpenJDK 11을 설치할 수 있습니다: sudo apt-get update && sudo apt-get upgrade -y sudo apt install openjdk-11-jdk 설치 후, 자바 버전을 확인하여 정상적으로 설치되었는지 확인합니다: java -version Neo4j 설치 및 설정 sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install wget curl nano software-properties-common dirmngr ap..
OSI 7 계층 (OSI 7 Layers) 물리 계층 (Physical Layer): 기능: 데이터 전송 매체를 통한 비트 전송 전송 단위: 비트 (Bit) 예: 케이블, 허브, 리피터 데이터 링크 계층 (Data Link Layer): 기능: 오류 검출 및 재전송, MAC 주소 사용하여 프레임 전송 전송 단위: 프레임 (Frame) 예: 스위치, 브리지 네트워크 계층 (Network Layer): 기능: 다양한 네트워크 간 라우팅, IP 주소 사용 전송 단위: 패킷 (Packet) 예: 라우터, IP 전송 계층 (Transport Layer): 기능: 데이터의 전송 제어 및 오류 복구, 포트 번호 사용 전송 단위: 세그먼트 (Segment) 또는 데이터그램 예: TCP, UDP 세션 계층 (Sessio..
1. 프로세스 (Process) 프로세스는 실행 중인 프로그램의 인스턴스로, 실행을 위한 모든 리소스와 정보 (메모리, 파일 핸들, I/O 디바이스 상태 등)를 포함합니다. 특징: 독립성: 각 프로세스는 독립된 메모리 영역을 갖습니다. 하나의 프로세스가 다른 프로세스의 메모리에 직접 접근할 수 없습니다. 오버헤드: 프로세스 간의 컨텍스트 스위치(Context Switch)는 비교적 높은 오버헤드를 가집니다. 2. 스레드 (Thread) 스레드는 프로세스 내에서 실행되는 개별 실행 경로로, 프로세스의 메모리 및 리소스를 공유합니다. 하나의 프로세스는 여러 스레드를 가질 수 있습니다. 특징: 리소스 공유: 같은 프로세스 내의 스레드들은 코드, 데이터 및 시스템 리소스를 공유합니다. 효율성: 스레드 간의 컨텍..
AWS에서 여러 Virtual Private Cloud (VPC) 간에 안전하게 네트워크 통신을 하려면 어떤 방법을 사용해야 할까요? 이 글에서는 AWS의 두 가지 주요 연결 방법, VPC Peering과 Transit Gateway에 대해 알아보겠습니다. VPC Peering (VPC 피어링) 정의: VPC 피어링은 두 VPC 간에 private 네트워크 연결을 생성합니다. 이 연결은 AWS의 다른 서비스와는 독립적으로 작동하여, VPC간에 직접적인 네트워크 라우팅을 가능하게 합니다. 주요 특징: 직접 연결: 두 VPC는 마치 같은 네트워크에 있는 것처럼 서로 통신할 수 있습니다. 데이터 보안: 데이터는 인터넷을 거치지 않고 AWS의 private 네트워크 내에서만 이동합니다. 사용 사례: 두 VPC ..
PLG stack PLG stack 은 레이블 기반의 메타데이터만 인덱싱해서 인덱스에 소요되는 메모리 사용량이 현저히 적은 "Loki" 를 기반으로 한 로깅 시스템입니다. Promtail + Loki + Grafana 로 구성이 되어있고 간단하게 역할을 소개해보겠습니다. Promtail: 역할: 로그 수집 에이전트로 작동하며 로그 파일을 추적하고 읽습니다. 작동 방식: 지정된 위치의 로그 파일을 tailing (즉, 실시간으로 로그 변화를 추적)하며, 해당 로그 데이터를 Loki 서버로 전송합니다. 설치: 일반적으로 로그가 생성되는 각 머신이나 컨테이너에 설치됩니다. 추가 정보: Promtail은 로그의 메타데이터를 수집하여 로그 데이터와 함께 Loki로 전송합니다. 이 메타데이터는 후에 로그를 쿼리할 ..
저번에 했었던 Action 사용해서 AWS S3 에 정적 웹 페이지를 구현을 했었던거에 이어서 이번에는 backend 에서 활용하기 좋은 CICD 방법을 사용해보려고 한다. 현재 golang의 웹 프레임워크중 하나인 echo framework 로 프로젝트를 진행 중인데 그것을 최종적으로 AWS ECS 에 올릴것이기에 AWS ECR 에 올려놓는게 좋겠다 생각이 들었다. 프로젝트 도커라이징 config 파일 정리 (viper 패키지) 데이터베이스와 관련된 정보가 있는 config.json 을 그대로 빌드를 하면 같이 들어가기 때문에 내용은 삭제해준다. { "server": { "port": "8080" }, "database": { "host": "localhost", "user": "root", "pass..
React 프로젝트를 Amazon S3에 배포하는 CI/CD 파이프라인을 설정하기 위해 GitHub Actions를 사용하는 방법을 소개해 보려고 합니다. S3 버킷 설정 S3 정적 배포 시도 기본 S3 설정 ACL 활성화(선택) ACL을 비활성화하면 CloudFront에서 버킷으로 로그 파일을 전송하지 못하게 됩니다. 웹 서비스 배포를 하기위해서 퍼블릭 엑세스 차단을 풀어줍니다. 버킷을 생성합니다. 그다음 버킷에 들어가서 속성탭 맨아래의 정적 웹 사이트 호스팅의 옵션을 변경해 줍시다. index.html 적어줍시다. 테스트 해보기 간단히 코드를 만들고 업로드 해봅니다. // index.html 안녕하세요, 이것은 간단한 테스트 페이지입니다. 이 페이지는 HTML을 사용하여 만들어졌습니다. S3 업로드 ..