728x90
반응형

Programming 88

MVC, MVP, MVVM, MVVM-C 및 VIPER 아키텍처 패턴 비교

소프트웨어 개발과 관련하여  아키텍처 패턴은  코드베이스의 품질과 유지 관리를 위해 중요한 설계에서 결정됩니다.  클린 아키텍처(Clean Architecture) 와 소프트웨어 아키텍처 패턴클린 아키텍처(Clean Architecture)는 로버트 C. 마틴(Uncle Bob)이 제안한 소프트웨어 설계 원칙으로, 각 구성 요소의 독립성을 유지하고, 높은 응집성과 낮은 결합도를 목표로 합니다.MVC, MVP, MVVM, MVVM-C 및 VIPER 아키텍처 패턴은 각각 특정 애플리케이션 구조를 나타내며, 클린 아키텍처의 원칙을 적용할 수 있습니다. 아키텍처 패턴과 클린 아키텍처의 관계MVC, MVP: 클린 아키텍처의 기본 원칙을 따를 수 있으며, 특히 프레젠테이션 계층의 분리를 강조합니다.MVVM, MVV..

Programming 2025.01.07

개발 방법론으로 Domain-Driven Design (DDD) 와 CBD (Context-Based Design) 의 비교

개발 방법론으로 Domain-Driven Design (DDD) 와 CBD (Context-Based Design) 의 비교  DDD: 복잡한 비즈니스 로직을 쉽게 이해하고 관리할 수 있게 해주며, 개발자와 비즈니스 전문가 간의 소통을 원활하게 합니다.CBD: 시스템 아키텍처를 체계적으로 설계하고 관리할 수 있게 해주며, 시스템의 각 컨텍스트 간의 상호작용을 명확히 파악할 수 있습니다.  Domain-Driven Design (DDD)DDD는 비즈니스 도메인에 집중하여 소프트웨어를 설계하는 방법론입니다. 주요 특징은 다음과 같습니다: Domain-Driven Design (DDD) 의 특징과 활용 분야를 정리해줘 물론이죠! Domain-Driven Design (DDD)의 특징과 활용 분야를 정리해드리겠..

Programming 2025.01.05

개발방법론 - 스파이럴 모델 (Spiral Model) 반복을 통한 위험 관리

개발방법론 - 스파이럴 모델 (Spiral Model)  반복을 통한  위험 관리  복잡한 분야의 대규모 프로젝트나 위험 관리가 중요한 프로젝트 스파이럴 모델 (Spiral Model)특징: 폭포수 모델과 프로토타입 모델의 결합으로, 위험 분석을 통해 반복적으로 개발 단계를 수행합니다.장점: 위험 관리가 용이하며, 반복적인 개발로 점진적인 개선이 가능합니다.단점: 복잡한 구조로 인해 관리가 어려울 수 있습니다.활용 분야: 복잡한 분야들을 가진 대규모 프로젝트나, 위험 관리가 중요한 프로젝트에 적합합니다. 관련 구성 요소계획 및 요구사항 수집 (Planning and Requirements Gathering)프로젝트 목표와 요구사항을 정의하고, 초기 계획을 수립합니다.초기 위험 분석을 수행합니다.위험 분석..

Programming 2025.01.04

개발방법론 - V-모델 (V-Model) 단계별 검증과 품질 강화

개발방법론 - V-모델 (V-Model) 단계별 검증과 품질 강화 각 단계별 검증과 품질 관리가 중요한 프로젝트의 품질을 강화하는 방법 복잡한 개발을 단순하게 또는 검증없이 개발한다면 개발 기간은 짧지만 유지보수가 길고 어려워 지게 됩니다.안정적인 프로젝트는 빨리 하는 것보다 잘 하는 것이 중요 합니다. 개발 기획 단계부터 오픈까지 각 과정별 검증ㄹ 강보하는 개발 방법론 V-모델을 소개 합니다.V-모델 (V-Model)특징: 폭포수 모델의 변형으로, 각 개발 단계에 대응하는 테스트 단계를 포함합니다.장점: 개발의 각 단계별 테스트가 병행되어 품질 관리가 용이합니다.단점: 폭포수 모델과 유사하게 변경 사항 반영이 어렵습니다.활용 분야: 각 개발 단계별 검증과 품질 관리가 중요한 프로젝트에 적합합니다. 관..

Programming 2025.01.03

애자일개발방법론 - 애자일 (Agile) 신속한 대응과 품질

애자일개발방법론 - 애자일 (Agile) 신속한 대응과 품질 커뮤니케이션을 통해 비즈니스 요구사항에 유연한 대응이 가능한 방법론시장의 변화 즉 소비자 사용자의 반응에 따라 민첩한 대응을 위해서는 매일매일 다른 전략이 필요합니다.처음 만든 프로그램으로 변경없이 운영하는 것으로 서비스를 활성화하는 것은 불가능 합니다.고객의 지속적인 반응과 행동에 인게이지먼트 즉 연결성을 유지하기 위해 지속적인 기능 개선과 노력이 필요 합니다.민첩한 것은 미리 준비된 것을 상차림 하는 것과 같다.항상 새로운 시장을 준비하라.애자일 (Agile) 개념: 고객의 요구사항 변화에 유연하게 대응하며, 반복적이고 점진적인 개발을 통해 지속적으로 개선합니다.특징: 스프린트라고 불리는 짧은 반복 주기를 통해 개발하고, 각 스프린트마..

Programming 2025.01.02

개발방법론 - 폭포수 모델 (Waterfall Model) 개발 방법론의 교과서

개발방법론 - 폭포수 모델 (Waterfall Model)  개발 방법론의 교과서 폭포수 모델 (Waterfall Model)특징: 각 단계가 순차적으로 진행되며, 이전 단계가 완료되어야 다음 단계로 넘어갈 수 있습니다.장점: 명확한 구조와 단계별 진행으로 관리가 용이합니다.단점: 변경 사항 반영이 어렵고, 초기 단계에서의 오류가 후반에 큰 영향을 미칠 수 있습니다.활용 분야: 요구사항이 명확하고 변경이 적은 대규모 프로젝트, 정부 프로젝트, 방위산업 프로젝트 등 관련 구성 요소요구사항 분석 (Requirements Analysis)프로젝트의 요구사항을 수집하고 분석하여 명확히 정의합니다.요구사항 명세서를 작성합니다.시스템 설계 (System Design)요구사항을 바탕으로 시스템의 구조와 설계를 구체화..

Programming 2025.01.01

애자일개발방법론 - 린 (LEAN) 비용 절감과 효율성 극대화

애자일개발방법론 - 린 (LEAN) 비용 절감과 효율성 극대화 비용 낭비를 최소화하고 가치를 극대화 하는 개발 방법론 빠르게 변화하는 시장의 변화에 민첨한 대응은 Agile조직에 중요한 미션입니다. 특히 불확실한 시장에 제품을 출시하기 위해 과감한 투자보다 작은 시적으로 점진적인 성장을 이루어 가는 것이 중요합니다.그런 측면에서 린(LEAN) 개발.방법론은 애자일 개발 방법론이라 하겠습니다. 린 (LEAN) 개요개념: 낭비를 최소화하고 가치를 극대화하는 개발 방법론으로, 효율적인 프로세스와 지속적인 개선을 강조합니다.특징: 작업 흐름을 시각화하고, 낭비 요소를 식별하여 제거합니다. 지속적인 피드백을 통해 프로세스를 개선하고, 고객의 가치를 최우선으로 생각합니다.활용 방법: 작업 흐름을 시각화하고, 낭비 ..

Programming 2024.12.31

개발방법론 - Domain-Driven Design (DDD) 비즈니스 설계

개발방법론 - Domain-Driven Design (DDD) 비즈니스 설계 #도메인 전문가와 개발자가 협력하여 도메인 모델을개발방법론 - Domain-Driven Design (DDD) 정의 # 도메인 모델에 기반하여 개발하는 방법론 개념: 소프트웨어 설계를 도메인 모델에 기반하여 개발하는 방법론으로, 비즈니스 도메인의 복잡성을 명확히 표현하고 관리합니다.특징: 도메인 전문가와 개발자가 협력하여 도메인 모델을 정의하고, 이를 기반으로 소프트웨어 아키텍처를 설계합니다.활용 방법: 도메인 모델을 중심으로 코드와 비즈니스 로직을 구현합니다. 도메인 전문가와 개발자가 협력하여 도메인 모델을 정의합니다.활용 분야: 복잡한 비즈니스 도메인을 명확히 표현하고, 유지보수가 용이한 소프트웨어를 개발하려는 프로젝트. 예..

Programming 2024.12.30

개발 방법론 - 민첩한 비즈니스 성공을 위한 개발 방법론의 종류와 특징

민첩한 비즈니스 성공을 위한  개발 방법론의 종류와 특징 개발 방법론은 소프트웨어 개발을 조직적이고 체계적으로 진행하기 위해 사용되는 방법론입니다. 다양한 방법론을 이해하고  특정 상황이나 프로젝트에 따라 다르게 적용할 필요가 있습니다.  1. 애자일 (Agile)개념: 고객의 요구사항 변화에 유연하게 대응하며, 반복적이고 점진적인 개발을 통해 지속적으로 개선합니다.특징: 스프린트라고 불리는 짧은 반복 주기를 통해 개발하고, 각 스프린트마다 기능을 추가하고 개선합니다.장점: 변화에 신속히 대응할 수 있으며, 고객과의 지속적인 커뮤니케이션을 통해 높은 품질의 소프트웨어를 개발합니다.단점: 명확한 계획 없이 진행될 경우 혼란이 발생할 수 있으며, 팀의 경험과 능력에 크게 의존합니다.     활용분야 : 스..

Programming 2024.12.29

개발방법론 - 프로토타입 모델 (Prototype Model) 명확한 품질

개발방법론 - 프로토타입 모델 (Prototype Model) 명확한 품질사용자 요구사항을 명확히 파악하고 높은 품질의 소프트웨어를 개발 프로토타입 모델 (Prototype Model)특징: 초기 프로토타입을 개발하여 사용자 피드백을 받고, 이를 바탕으로 최종 소프트웨어를 개발합니다.장점: 사용자 요구사항을 명확히 파악할 수 있으며, 개발 초기 단계에서 문제를 발견할 수 있습니다.단점: 프로토타입 개발에 시간이 소요될 수 있으며, 최종 제품과의 차이가 발생할 수 있습니다.활용 분야: 사용자 요구사항이 명확하지 않은 프로젝트나, 사용자 피드백이 중요한 프로젝트에 적합합니다.개발 절차 초기 요구사항 수집 (Initial Requirements Gathering) 사용자와의 인터뷰, 설문조사 등을..

Programming 2024.12.29

개발방법론 - 효율적인 프로젝트 수행을 위한 개발 방법론의 종류와 특징

개발방법론 - 효율적인  프로젝트 수행을 위한 개발 방법론의 종류와 특징 Prolog낫놓고 기역자를 모른다는 내용 처럼  " Agile, Lean, CBD, DDD " 알고  폭포수 모델 같은 것은 좋지 않은 것으로 분류해서 필요없다고 생각할 수도 있습니다.  꼭 최신 개발방법론을 하면 프로젝트의 성과가 좋은 것도 아닙니다. 오히려 절차를 무시하고 프로젝트를 수행하면 개발 기간은 단축이 되지만 유지보수와 서비스 확장에 더 많은 비용을 지불해야 하는 상황이 더 크다고 봅니다.  종종 개발을 하고 추가로 간단한 기능하나를 만들려면 개발자들이 여러가지 핑계를 대는 경우를 보면됩니다.개발 방법론은 간단 한 것이 좋은 것이 아니라  모든 개발 방법론들을 살펴보고,  프로젝트의 규모와 특성에 따라 제대로 활용을 해..

Programming 2024.12.27

블록 암호화 모드 종류외 사용법

블록 암호화 모드 종류와 사용법블록 암호 알고리즘을 다양한 방식으로 운용하여 더욱 안전하고 효율적인 암호 시스템을 구축하는 데 적절한 방식을 선정하여 사용합니다. 파이썬 예시를 통해 사용법을 알아 봅니다.블록 암호 운영 모드 종류■ ECB (Electronic Codebook) 모드:각 블록을 독립적으로 암호화하는 가장 간단한 모드입니다.장점: 병렬 처리가 가능하고 구현이 간단합니다.단점: 동일한 평문 블록은 항상 동일한 암호문 블록으로 변환되므로 패턴 분석 공격에 취약합니다.사용 예: 이미지 압축 등 데이터의 무결성이 중요하지 않은 경우 ECB를 이용한 암호화 예시from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modesfr..

Programming 2024.12.19

go 언어 db ORM framework best

go 언어  db  ORM framework  best 각각의 Go 언어 데이터베이스 입출력 프레임워크를 예시와 함께 비교해드릴게요.1. GORMGORM은 Go에서 가장 인기 있는 ORM 패키지 중 하나로, 코드 우선 접근 방식을 사용합니다. 스키마 자동 마이그레이션, 로깅, 준비된 문, 제약 조건 등을 지원합니다.예시:```gopackage mainimport (    "gorm.io/driver/sqlite"    "gorm.io/gorm")type User struct {    ID   uint    Name string    Age  int}func main() {    db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})    if err ..

Programming 2024.08.19

비밀번호 관리 해시 알고리즘 비교 - Argon2, Scrypt, PBKDF2, SHA2Crypt, Bcrypt

비밀번호 관리 해시 알고리즘 비교 - Argon2, Scrypt, PBKDF2, SHA2Crypt, Bcrypt 비밀번호 해시 알고리즘은 사용자 비밀번호를 안전하게 저장하기 위해 중요한 역할을 합니다. 각 알고리즘은 서로 다른 보안 모델과 성능 특성을 가지고 있으며 적절한 선택이 필요합니다. 이번에는 Argon2, Scrypt, PBKDF2, SHA2Crypt, Bcrypt 등 암호화 알고리즘들의 주요 특징과 차이점을 비교하고 평가해 보겠습니다. 1. Argon2 개요: Argon2는 최신 비밀번호 해시 알고리즘으로, 2015년 비밀번호 해시 챌린지에서 우승하여 주목받았습니다. 메모리 집약적이고 병렬화가 가능하여 높은 보안성을 제공합니다. 장점: - 높은 보안성: 메모리와 CPU 사용량을 조절하여 다양한..

Programming 2024.08.16

(암호화)AES128_GCM 암호화를 이용한 키 암호화

(암호화)AES128_GCM 암호화를 이용한 키 암호화 AES-GCM AES-GCM(게일로아/카운터 모드)은 병렬 처리가 가능합니다. 즉, 암호화 및 복호화를 동시에 수행할 수 있습니다. AES-256이 AES-128-GCM보다 키 길이가 길어서 안전하다고 합니다. 하지만 AES-128로도 안전하고 비용 효율적인 방식이라고 봅니다. AES-128 GCM 모드 *AES (Advanced Encryption Standard)**는 널리 사용되는 대칭 키 암호화 알고리즘으로, 다양한 보안 요구사항을 충족시키기 위해 설계되었습니다. AES는 다양한 암호화 모드를 지원하며, 그 중 *GCM (Galois/Counter Mode)*는 고성능 및 보안 기능을 제공하는 모드입니다. AES-128 GCM 모드의 주요 특..

Programming 2024.07.04

AES256 암호화 - 안전한 암호화를 위한 Salt와 IV(Initialization Vector)

AES256  암호화 - 안전한 암호화를 위한 Salt와 IV(Initialization Vector) 안전한 암호화를 위해서 암호와 키의 보관과 암호를 유도하는 Salt 키와 IV(초기화 백터값)을 이용한 보안을 강화하는 방법을 정리하여 봅니다.  ㅁ AES (Advanced Encryption Standard) 암호화AES (Advanced Encryption Standard)는 미국 국립표준기술연구소(NIST)가 선정한 암호화 표준으로, 다양한 보안 애플리케이션에서 널리 사용됩니다. AES는 대칭 키 블록 암호화 방식으로, 동일한 키를 사용하여 데이터를 암호화하고 복호화합니다. AES는 128비트, 192비트, 256비트 키 길이를 지원하며, AES-256은 256비트 길이의 키를 사용하는 가장 강..

Programming 2024.07.03

Andorid - iOS - 모바일 기기별 고유식별값 - Android ID 와 Identifier for Vendor (IDFV)

Andorid - iOS -모바일 기기별 고유식별값 - Android ID 와 Identifier for Vendor (IDFV) - 모바일 앱/기기별 고유한 값(식별키)을 이용할때 필요한 식별 키값의 종류 -모바일 앱에서 기기별로 고유한 값을 생성하여 사용하는 데는 여러 가지 방법이 있습니다. 각 방법은 목적과 보안 요구 사항에 따라 적절히 선택되어야 합니다. 다음은 주요 키값의 종류와 그 특성입니다.Android 1. Android ID : 기기별 고유한 64비트 값 - 단말기에서 구글 계정을 로그인하면 생성됨, 앱을 제거하고 재설치 해도 변경 되지 않음 - Android ID는 기기 내의 특정 사용자에 대해 고유합니다. 즉, 동일한 기기라도 사용자 계정이 다르면 Android ID..

Programming 2024.07.02

브라우저 확장 - 자동 로그인 입력기 작성 예제 - Auto Login Extension

크롬 익스텐션(chrome-extension) 으로 로그인 자동 입력기 "Auto Login Extension" 을 작성해 보았습니다.  * 크롬 익스텐션으로 자동 로그인 입력기(Auto Login Extension) 예제 파일 :  크롬 익스텐션(chrome-extension, 크롬 확장 프로그램 ) 개요 크롬 익스텐션(chrome-extension, 크롬 확장 프로그램) 은 구글 크롬 브라우저를 확장하여 사용자에게 추가 기능을 제공하는 소프트웨어입니다. 크롬 확장 기능은 JavaScript, HTML, CSS 등을 사용하여 개발되며, 브라우저의 기능을 확장하거나 사용자의 맞춤형 경험을 제공할 수 있습니다. 크롬 익스텐션의 주요 특징1. 사용자 인터페이스 향상: 사용자 인터페이스(UI)를 변경하거나 향..

Programming 2024.06.20

[python] python virtualenv (가상환경) 사용하기

[python] python virtualenv (가상환경) 사용하기 Python virtualenv (가상환경,venv)은 파이썬 패키지 및 응용 프로그램을 독립적인 환경에 설치하고 실행할 수 있는 파이썬 모듈입니다. 가상 환경을 사용하면 각 프로젝트별로 필요한 패키지를 별도의 공간에 설치하여 각 프로젝트 간에 서로 영향을 미치지 않습니다. 이를 통해 의존성 문제를 해결할 수 있습니다.python venv 가상환경을 이용하는 방법1. 가상 환경을 만들 디렉토리를 선택합니다.2. 새로운 가상 환경을 생성합니다.3. venv 가상 환경을 사용하도록 활성화합니다.4. 가상환경에서 패키지를 설치 합니다.5. 가상 환경을 비활성화합니다.6. 패키지 설치 시 pip 버전이 낮은 경우  python venv 가상환..

Programming 2024.04.26

[엑셀] Excel VBA 코드 작성 - 엑셀 문자열 찾는 ZLOOKUP - 사용자 정의 엑셀 함수 만들기

[엑셀] Excel VBA 코드 작성 - 엑셀 문자열 찾는 ZLOOKUP - 사용자 정의 엑셀 함수 만들기 #엑셀 LOOKUP함수 #엑셀_사용자정의_함수 ZLOOKUP 함수는 Excel VBA를 사용하여 맞춤형 검색 기능을 구현한 것입니다. 이 함수는 지정된 범위 내에서 문자열을 검색하고, 해당 문자열이 포함된 행에서 특정 컬럼의 값을 반환합니다 엑셀 2010 이후 , XLOOKUP 함수가 있으면 된다는데 엑셀 2010 이전 버전이라 작동이 안되어서 직접 작성해 보았습니다. 엑셀에서 원하는 영역에서 특정 문자열이 있는 항목을 찾고 싶은데 VLOOKUP, HLOOKUP 같은 문자열을 찾는 함수들을 이용하는 것은 했지만 원하는 결과를 얻기 어려웠습니다. 그래서 여러 기능들을 찾아 보다가 직접 만들어 보기로 ..

Programming 2024.04.09
728x90
반응형