전체 글369 추상 메서드와 추상 클래스란? 추상 메서드와 추상 클래스란?추상 메서드와 추상 클래스는 객체지향 프로그래밍에서 중요한 개념으로, 구체적인 구현 없이 설계만 정의하는 데 사용됩니다. 이는 주로 공통적인 인터페이스나 동작을 여러 하위 클래스가 공유하게 하고 싶을 때 사용됩니다.1. 추상 클래스(Abstract Class)란?추상 클래스는 인스턴스화(객체를 만드는 것)가 불가능한 클래스입니다. 이 클래스는 주로 다른 클래스들이 상속받아 구현해야 할 공통적인 인터페이스나 메서드를 정의하는 용도로 사용됩니다. 추상 클래스 자체는 완전한 클래스가 아니기 때문에, 직접 객체를 생성할 수 없고 반드시 상속을 통해서 사용해야 합니다.파이썬에서는 abc 모듈의 ABC 클래스를 사용하여 추상 클래스를 정의할 수 있습니다.2. 추상 메서드(Abstract.. 프로그래밍공부(Programming Study)/파이썬(Python) 2024. 9. 8. 파이썬에서 상속과 확장, 인터페이스에 대한 자세한 설명 1. 상속(Inheritance)이란?상속은 객체지향 프로그래밍의 중요한 개념 중 하나로, 하나의 클래스가 다른 클래스를 기반으로 하여 그 속성과 메서드를 물려받는 것을 의미합니다. 상속을 통해 기존 클래스의 기능을 재사용하거나 확장할 수 있으며, 코드를 더 효율적이고 관리하기 쉽게 만듭니다.예시:# 부모 클래스class Animal: def __init__(self, name): self.name = name def speak(self): print(f"{self.name} makes a sound.")# 자식 클래스class Dog(Animal): def speak(self): print(f"{self.name} barks.")# 'Animal' .. 프로그래밍공부(Programming Study)/파이썬(Python) 2024. 9. 8. SOLID 원칙과 파이썬 예제 1. SOLID 원칙이란?SOLID 원칙은 로버트 C. 마틴(Robert C. Martin)이 소프트웨어 개발에서 객체 지향 설계 원칙을 효율적으로 적용하기 위해 제시한 다섯 가지의 핵심 원칙입니다. 이 원칙들은 코드의 가독성, 유지보수성, 재사용성을 높여줍니다. 각 원칙은 특정 문제를 해결하고 시스템의 복잡성을 줄이기 위해 고안되었습니다.SOLID는 다음과 같은 다섯 가지 원칙으로 이루어져 있습니다:S - 단일 책임 원칙 (Single Responsibility Principle, SRP)O - 개방-폐쇄 원칙 (Open-Closed Principle, OCP)L - 리스코프 치환 원칙 (Liskov Substitution Principle, LSP)I - 인터페이스 분리 원칙 (Interface Se.. 프로그래밍공부(Programming Study) 2024. 9. 8. 윈도우즈 액티브 디렉토리와 LDAP: 개념, 특징, 그리고 활용 사례 1. 윈도우즈 액티브 디렉토리란?개념 정의윈도우즈 액티브 디렉토리(Active Directory, AD)는 마이크로소프트에서 개발한 디렉토리 서비스로, 기업 내의 사용자, 컴퓨터, 네트워크 리소스 등을 중앙에서 관리하고 인증하는 시스템입니다. AD는 조직 내의 리소스를 논리적으로 구조화하여 관리하기 쉽게 해주며, 모든 네트워크 사용자와 자산에 대한 접근 권한을 제어하는 중요한 역할을 합니다.주요 기능사용자 및 그룹 관리: AD는 조직 내 모든 사용자를 중앙에서 관리하며, 사용자 권한을 쉽게 설정하고 관리할 수 있습니다.정책 관리: 그룹 정책을 통해 사용자와 컴퓨터 환경을 중앙에서 통제할 수 있습니다.인증 및 권한 부여: AD는 인증된 사용자에게만 네트워크 자원에 접근할 수 있도록 합니다.2. LDAP란?.. 프로그래밍공부(Programming Study) 2024. 8. 29. AWS IMDS의 문제점과 보안 취약성: 무엇을 알고 대비해야 할까? AWS IMDS란 무엇인가?AWS IMDS(Instance Metadata Service)는 AWS에서 실행되는 EC2 인스턴스가 메타데이터 및 사용자 데이터를 조회할 수 있는 서비스입니다. 이 서비스는 인스턴스의 설정 정보를 확인하거나, 임시 보안 자격 증명을 가져오는 등의 작업에 사용됩니다. IMDS는 EC2 인스턴스 내에서 HTTP 엔드포인트(http://169.254.169.254)를 통해 접근할 수 있습니다.AWS IMDS의 주요 기능메타데이터 접근: 인스턴스 ID, 인스턴스 타입, AMI ID 등의 정보를 조회할 수 있습니다.사용자 데이터 접근: 인스턴스가 시작될 때 제공된 스크립트나 설정 데이터를 조회할 수 있습니다.임시 자격 증명: IAM 역할을 가진 인스턴스에서 임시 자격 증명을 가져와 .. 프로그래밍공부(Programming Study)/보안(Security) 2024. 8. 28. Java, Python, TypeScript, Go 언어 preprod, prod환경 Assertion 활용 방법 1. 개요Assertion은 코드가 예상대로 동작하는지 확인하는 데 사용되는 도구로, 주로 개발 및 테스트 단계에서 코드의 논리를 검증하는 데 사용됩니다. 하지만 운영 환경에서는 Assertion이 성능에 영향을 미칠 수 있기 때문에 사용을 피하거나 비활성화하는 것이 일반적입니다. 이 글에서는 Java, Python, TypeScript, Go 언어에서 개발(develop), 스테이징(stage), 운영(production) 환경에 따라 Assertion을 어떻게 효과적으로 사용할 수 있는지 살펴보겠습니다.2. Java에서 Assertion 사용 방법2.1 개발 환경에서의 Assertion개발 환경에서는 Assertion을 활성화하여 코드의 논리적 오류를 쉽게 발견할 수 있습니다. 다음은 자바에서 Ass.. 프로그래밍공부(Programming Study) 2024. 8. 28. Buffer Overrun: 개념, 특징, 장단점, 그리고 예방 방법 1. 개요버퍼 오버런(Buffer Overrun)은 프로그래밍에서 발생하는 메모리 관련 보안 취약점으로, 버퍼의 크기를 초과하여 데이터를 쓰려고 할 때 발생합니다. 이 문제는 종종 시스템의 예측 불가능한 동작을 일으키거나 악의적인 코드 실행으로 이어질 수 있어 매우 위험합니다.2. Buffer Overrun의 특징메모리 초과: 버퍼에 할당된 메모리보다 더 많은 데이터를 쓸 때 발생합니다.보안 취약점: 악의적인 사용자가 이 취약점을 이용해 시스템 권한을 탈취할 수 있습니다.프로그램 충돌: 메모리 침범으로 인해 프로그램이 비정상적으로 종료될 수 있습니다.3. Buffer Overrun의 장단점장점:버퍼 오버런 자체는 보안 취약점이므로 장점으로 간주되지 않습니다.단점:보안 위험: 해커가 악용할 수 있는 보안 .. 프로그래밍공부(Programming Study)/보안(Security) 2024. 8. 28. HMAC 키 공유 방법: 보안 요구 사항에 따른 다양한 키 관리 방식 1. HMAC 키 관리의 중요성HMAC(Hash-based Message Authentication Code)는 메시지의 무결성을 보장하고 인증을 제공하는 데 사용되는 중요한 보안 메커니즘입니다. HMAC의 핵심은 비밀 키로, 이 키가 유출되면 메시지의 무결성과 인증이 손상될 수 있습니다. 따라서 HMAC 키를 안전하게 관리하고 공유하는 것은 매우 중요합니다. 이 글에서는 HMAC 키를 안전하게 공유하는 몇 가지 방법을 설명합니다.2. HMAC 키 공유 방법1. 사전 공유 (Pre-shared Key, PSK)방법: HMAC 키를 시스템의 초기 설정 단계에서 물리적 매체(예: USB) 또는 안전한 통신 채널을 통해 공유합니다.장점: 설정이 간단하고, 양측 시스템 간에 동일한 키를 쉽게 공유할 수 있습니다.. 프로그래밍공부(Programming Study) 2024. 8. 26. JWT와 HMAC: 안전한 인증을 위한 핵심 개념 1. JWT (JSON Web Token)란?JSON Web Token(JWT)은 두 개체 간에 JSON 객체로 정보를 안전하게 전송하기 위한 개방형 표준(RFC 7519)입니다. 이 토큰은 일반적으로 사용자 인증 및 정보 교환에 사용되며, 기본적으로 Base64Url로 인코딩된 세 부분으로 구성됩니다:헤더(Header): 토큰 유형과 해시 알고리즘(HMAC, RSA 등)을 지정합니다.페이로드(Payload): 인증된 사용자와 관련된 클레임(정보)을 포함합니다.서명(Signature): 토큰의 무결성을 확인하는 데 사용됩니다. 이는 헤더와 페이로드를 합친 후 지정된 알고리즘(HMAC 등)으로 서명합니다.JWT는 자체적으로 서명이 되어 있어 클라이언트와 서버 간에 신뢰할 수 있는 방식으로 정보를 교환할 수.. 프로그래밍공부(Programming Study)/보안(Security) 2024. 8. 26. Toss SLASH24 이번년도에는 기필코... SLASH24 Live로 참여하고 싶다.작년엔 DevOps 새싹으로 발돋움했으니, 이번엔 이파리 하나하나 쑥쑥 내밀고 싶다. 컨퍼런스(Conference, Session) 2024. 8. 25. 같은 것을 포함하는 중복순열: 개념과 계산 방법 1. 중복순열이란?중복순열이란, 주어진 집합에서 원소를 중복하여 선택하여 순서를 고려해 배열하는 방법을 의미합니다. 일반적으로 중복을 허용하지 않는 순열과 달리, 중복순열에서는 동일한 원소가 여러 번 선택될 수 있습니다.2. 같은 것을 포함하는 중복순열이란?같은 것을 포함하는 중복순열이란, 중복된 원소들이 있는 집합에서 그 원소들을 순서 있게 배열하는 방법을 계산하는 것입니다. 예를 들어, "AAB"와 같은 문자열에서 A가 두 번 반복될 때, 이 문자열을 재배열하는 방법의 수를 구하는 것이 이에 해당합니다.특징: 같은 것을 포함하는 순열에서는 중복된 원소들이 있을 경우, 순열의 전체 경우의 수에서 중복된 경우를 제외해야 합니다.3. 같은 것을 포함하는 중복순열의 공식같은 것을 포함하는 중복순열의 수는 다.. 프로그래밍공부(Programming Study)/이산 수학(Discrete Mathematis) 2024. 8. 18. 조합, 순열, 중복조합, 중복순열, 팩토리얼: 개념과 차이점 정리 1. 조합이란?조합(combination)이란, 순서에 상관없이 주어진 집합에서 특정 개수의 원소를 선택하는 방법을 말합니다. 조합에서는 순서가 중요하지 않기 때문에, 예를 들어 {A, B}와 {B, A}는 같은 조합으로 간주됩니다.표기법: 조합의 개수는 (\binom{n}{r}) 또는 (C(n, r))로 표기되며, 이는 n개의 원소 중 r개의 원소를 선택하는 방법의 수를 나타냅니다.공식: 조합의 수는 다음과 같이 계산됩니다:[\binom{n}{r} = \frac{n!}{r!(n-r)!}]2. 순열이란?순열(permutation)이란, 주어진 집합에서 특정 개수의 원소를 선택하여 순서를 고려하여 배열하는 방법을 말합니다. 순열에서는 순서가 중요하기 때문에, 예를 들어 {A, B}와 {B, A}는 서로 다.. 프로그래밍공부(Programming Study)/이산 수학(Discrete Mathematis) 2024. 8. 18. 이전 1 2 3 4 5 6 7 8 ··· 31 다음 728x90