Logging (로깅)로깅은 프로그램 실행 중 발생하는 사건들을 기록하여 디버깅, 오류 추적, 시스템 모니터링 등을 보조하는 행위입니다.로깅을 통해 코드의 실행 흐름과 상태를 파악할 수 있으며, 시스템의 상태를 실시간으로 모니터링하여 문제 발생 시 빠르게 대응할 수 있습니다.Logging ModulePython의 logging 모듈은 표준 라이브러리로 제공되며, 다양한 로그 메시지를 기록할 수 있는 유연한 로깅 시스템을 제공합니다. Logger: 로그 메시지를 기록하는 인터페이스입니다. 애플리케이션 코드에서 직접 호출됩니다.Handler: 로그 메시지를 특정 대상(파일, 콘솔 등)으로 전송합니다.Formatter: 로그 메시지의 형식을 지정합니다.Level: 로그 메시지의 중요도를 나타냅니다. (DEBU..
Advanced Data Type (고급 자료형)이번 글에서는 Python의 Advanced Data Type (고급 자료형)에 데하여 설명을 해보겠습니다.List (리스트)List(리스트)는 순서가 있는 가변 길이의 Sequence 자료형입니다.주요한 특징은, 순서를 유지하고, 중복순서를 하용하며, 요소의 추가, 삭제, 수정이 가능하다는 점입니다.list_example = [1, 2, 3, 4]list_example.append(5) # [1, 2, 3, 4, 5]list_example.remove(3) # [1, 2, 4, 5]Set (세트)Set(세트)는 서가 없는 중복되지 않은 요소의 집합입니다.주요한 특징은, 순서가 없고, 중복순서를 하용하지 않으며, 집합 연산 (교집합, 합집합, 차집합)에..
Exception Handling (예외 처리)예외 처리는 프로그램 실행 중 발생하는 오류를 관리하고 처리하는 기법입니다.예외 처리를 통해 프로그램의 비정상 종료를 방지하고, 사용자에게 유용한 오류 메시지를 제공하여 프로그램의 안정성과 신뢰성을 높일 수 있습니다.예외와 오류의 차이오류 (Error): 프로그램 실행을 중단시키는 심각한 문제로, 일반적으로 복구가 불가능한 상황을 의미합니다.예를 들어, 메모리 부족, 시스템 충돌 등이 있습니다.예외 (Exception): 프로그램 실행 중 발생할 수 있는 처리 가능한 오류로, 예외 처리를 통해 복구할 수 있습니다.예를 들어, 파일을 찾을 수 없음, 0으로 나누기 등이 있습니다.예외의 종류내장 예외 (Built-in Exceptions), 사용자 정의 예외 (..
모듈 (Module)모듈은 파이썬 코드의 논리적인 단위로, 관련된 함수, 클래스, 변수 등을 하나의 파일에 모아놓은 것입니다.모듈을 사용하면 코드의 재사용성과 유지보수성을 높일 수 있으며, 코드의 구조를 더 체계적으로 관리할 수 있습니다.하나의 .py 파일이 하나의 모듈을 의미합니다.모듈 가져오기import 키워드를 사용하면 전체 모듈을 불러올 수 있습니다.import mathprint(math.sqrt(16)) # Output: 4.0from 키워드를 사용하면 모듈에서 특정 함수, 클래스 등을 가져올 수 있습니다.from math import sqrtprint(sqrt(16)) # Output: 4.0as 키워드를 사용하여 모듈이나 항목에 별칭(alias)을 지정할 수 있습니다.import nump..
Database데이터베이스는 구조화된 데이터의 집합으로, 데이터를 효율적으로 저장, 관리, 검색할 수 있도록 설계된 시스템입니다.데이터베이스는 다양한 응용 프로그램에서 데이터를 일관성 있게 관리하고 사용할 수 있게 합니다.데이터베이스의 유형관계형 데이터베이스 (RDBMS)관계형 데이터베이스는 데이터를 테이블 형식으로 저장하며, SQL(Structured Query Language)을 사용하여 데이터를 관리하고 조작합니다.관계형 데이터베이스의 대표적인 예로는 MySQL, PostgreSQL, Oracle 등이 있습니다.장점:데이터의 무결성을 보장합니다.복잡한 쿼리 작성이 가능합니다.트랜잭션 처리를 지원합니다. 비관계형 데이터베이스 (NoSQL)비관계형 데이터베이스는 다양한 데이터 모델을 지원하며, 관계형 ..
파일 입출력의 개념파일 입출력은 파일 시스템을 통해 데이터를 읽고 쓰는 작업을 의미합니다. 이를 통해 프로그램은 데이터 영속성을 유지하고, 외부 데이터 소스와 연동하며, 대용량 데이터를 처리할 수 있습니다. 데이터 영속성 유지: 프로그램이 종료되더라도 데이터를 저장하고, 이후에 다시 사용할 수 있습니다.외부 데이터 소스와의 연동: 파일 입출력을 통해 외부 파일에서 데이터를 읽어오거나, 데이터를 외부 파일에 저장할 수 있습니다.대용량 데이터 처리: 메모리에 저장하기 힘든 대용량 데이터를 파일에 저장하고 처리할 수 있습니다.With 문with 문은 자원 관리가 필요한 코드 블록에서 사용되는 구문입니다.코드의 가독성과 안전성을 높이며, 자원 해제를 자동으로 처리하여 코드의 안정성을 보장합니다.특히 파일을 열고..
Generator (제너레이터)제너레이터는 일련의 값을 생성하는 이터레이터의 일종으로, 함수처럼 정의되지만 값을 반환할 때 return 대신 yield 키워드를 사용합니다.제너레이터는 지연 평가(Lazy Evaluation)를 통해 필요한 시점에 값을 생성합니다.지연 평가: 필요한 시점에 값을 생성하여 메모리 효율성을 높입니다.상태 유지: 마지막 실행 지점에서 멈추고 상태를 기억하여 다음 호출 시 그 지점부터 재개합니다.메모리 효율성: 한 번에 하나의 값만 생성하므로 메모리 사용을 최소화합니다.코드 간결화: 복잡한 이터레이터 코드를 간단히 작성할 수 있습니다.def my_generator(): yield 1 yield 2 yield 3 yield 4for item in my_gene..
Arithmetic Operation (산술 연산)컴퓨터에서 덧셈 및 뺄셈을 할때? 피연산자 3개로 구성됩니다.Source 2개 및 destination 1개로 구성됩니다.모든 산술 연산에는 아래 예시와 같은 형식이 있습니다Design Principe 1. 정규성을 위한 단순성 (Simplicity favors regularity)연산의 규칙성을 통해 구현이 더욱 간단해집니다.단순성으로 더 낮은 비용으로 더 높은 성능을 제공한다는 특징이 있습니다.Register Operands (피연산자 등록)산술 명령어는 레지스터 피연산자를 사용합니다RISC-V (RV32I) has a 32 x 32-bit register files: x0 ~ x31효율적인 Register의 사용은? → 연산 결과의 성능 상승으로 이..
OpenCV DNN으로 YOLO Inference 구현시 유의 사항YOLO 모델 구현시 알아두어야 할 점은, OpenCV YOLO Inference Code는 기존 OpenCV inference 코드와는 다릅니다.또한 Darknet 구성 환경 및 YOLO Architecture에 따라 사용자가 직접 Object Detection 정보를 추출해야 합니다.Pretrained된 inference 모델 로딩 방법Weight 모델 파일과 config 파일은 Darknet 사이트에 Download가 가능합니다.cv2.dnn.readNetFromDarknet(config 파일, weight 모델 파일)으로 pretrained된 inference 모델을 로딩합니다.readNetFromDarket(config 파일, w..
Object-Oriented programming (OOP - 객체지향 프로그래밍)객체지향 프로그래밍은 객체(Object)를 중심으로 프로그램을 구성하는 프로그래밍 패러다임입니다.객체는 데이터와 이를 처리하는 메서드(method)를 포함하는 하나의 단위입니다.OOP의 주요 개념은 추상화, 캡슐화, 상속, 다형성입니다.주요 개념Abstraction (추상화)추상화는 중요한 정보만을 표현하고 불필요한 세부 사항을 숨기는 것입니다.class Animal: def __init__(self, name): self.name = name def speak(self): passclass Dog(Animal): def speak(self): return "Woof!"..