본문 바로가기
반응형

개발용어28

SOLID 원칙 - 의존성 역전 원칙, DIP (Dependency Inversion Principle) SOLID 원칙 - 의존성 역전 원칙, DIP (Dependency Inversion Principle) 의존성 역전 원칙이란? (DIP, Dependency Inversion Principle) 의존성 역전 원칙은 소프트웨어 모듈을 느슨하게 결합하기 위한 구체적인 방법론 입니다. 고수준 모듈에서 저수준 모듈로 설정된 종래의 종속 관계가 역전되어, 저수준의 모듈 구현 세부 사항과 무관하게 고수준 모듈을 구현할 수 있도록 하는 원칙입니다. 의존성 역전 원칙을 잘 지키기 위해서는 "저수준 모듈이 고수준 모듈에서 정의한 추상 타입에 의존하도록 하며, 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안 된다" 준수하면 됩니다. 좀 더 쉽게 말씀드리면 "자신보다 변하기 쉬운 것에 의존하지 않도록 한다"라고 이해하시.. 2022. 10. 15.
CSRF란, CSRF 동작원리, CSRF 방어방법 CSRF란, CSRF 동작원리, CSRF 방어방법 CSRF란 CSRF란, Cross Site Request Forgery의 약자로, 한글 뜻으로는 사이트간 요청 위조를 뜻합니다. CSRF는 웹 보안 취약점의 일종이며, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(데이터 수정, 삭제, 등록 등) 을 특정 웹사이트에 요청하게 하는 공격입니다. 예를 들어, 피해자의 전자 메일 주소를 변경하거나 암호를 변경하거나 자금이체를 하는 등의 동작을 수행하게 할 수 있습니다. 특성에 따라, 공격자는 사용자의 계정에 대한 완전한 제어권을 얻을 수 있을 수도 있습니다. CSRF 동작원리 CSRF가 성공하려면, 아래 3가지 조건이 만족되어야 합니다. 1. 사용자는 보안이 취약한 서버로부터 이미 로그인되어 있는 상태.. 2022. 8. 3.
MVC패턴이란, Spring MVC란, Spring MVC 장점, Spring MVC MVC패턴이란, Spring MVC란, Spring MVC 장점, Spring MVC MVC 패턴이란 MVC 패턴이란 Model(모델), View(뷰), Controller(컨트롤러)의 앞글자를 따서 이름지어진 디자인 패턴입니다. 각 컴포넌트는 아래와 같은 역할을 갖고 있습니다. 모델(Model): 애플리케이션 데이터만을 포함하고, 데이터 조작하는 로직을 포함하지 않습니다. 뷰(View) : 모델(데이터)를 사용자에게 표시합니다. 컨트롤러 (Controller): 뷰와 모델 사이에 컨트롤러가 있습니다. 뷰(또는 다른 외부 소스)에 의해 변경요청된 이벤트들을 감지하고, 이러한 이벤트들에 대한 적절한 로직을 실행합니다. 세 가지 구성요소의 관계를 그림으로 표현하면 다음과 같이 표현할 수 있습니다. @star.. 2022. 7. 6.
code bad smell - 중첩 if문 code bad smell - 중첩 if문 if문의 중첩은 잘만 쓴다면 나쁘지 않습니다. 하지만 대부분의 코드의 경우에는 중첩이 될수록 흐름을 읽기 힘들기 때문에 나쁜 코드가 많습니다. 수많은 if와 else가 있으면 어떤 조건에 대한 else인지 알 수 힘들기도 합니다. 게다가, 유지보수할 경우에는 수정하기도 어려움이 생깁니다. 예를 들어 아래 코드를 보았을때, "error" 라는 글씨가 출력되기 위한 조건이 무엇일까요? function check(first, second, third, fourth){ if( first == true ) { if( second == true ) { if( third == true ) { if( fourth == true ) { return 'OK'; } else { r.. 2022. 6. 27.
FTP - passive 모드/ active 모드 차이점 ftp - passive 모드/ active 모드 차이점 최근 ftp 를 사용하는 레거시 시스템에서의 방화벽 이슈로 정상동작 하지 않는 문제가 있었습니다. 이에 대해 ftp 통신방법인 passive 모드와 active 모드에 대해 알아보겠습니다. FTP (File Transfer Protocol)란? FTP(File Transfer Protocol)는 TCP/IP(Transmission Control Protocol/Internet Protocol) 네트워크에서 컴퓨터 간에 파일을 통신하고 전송하는 데 사용되는 통신규약(protocol) 입니다. 권한이 부여된 사용자는 파일 전송 프로토콜 서버(FTP 호스트/사이트라고도 함)에서 파일을 수신하고, 전송할 수 있습니다. 한마디로, 인터넷에서 파일전송을 위한.. 2022. 5. 23.
SOLID 원칙 - 인터페이스 분리 원칙, ISP (Interface Segregation Principle) SOLID 원칙 - 인터페이스 분리 원칙, ISP (Interface Segregation Principle) 인터페이스 분리 원칙이란? (ISP, Interface Segregation Principle) 인터페이스 분리 원칙은 "클라이언트는 자신이 사용하지 않는 메소드에는 의존하지 않아야된다"라는 의미로 사용되는 원칙입니다. 인터페이스나, 상속을 하였는데, 사용하지 않는 메소드가 있다면 분리를 해줘야 한다는 원칙입니다. 이 원칙이 지켜지면 무슨 이점이 있는지 바로 코드 예제로 살표보겠습니다. ISP 를 준수하지 않는 코드의 예 interface Machine{ string name; int showCurrentTime(); int playMP3(string path); int calculateAdd(.. 2022. 5. 11.
SOLID 원칙 - 리스코프 치환 원칙, LSP (Liskov Substitution Principle) SOLID 원칙 - 리스코프 치환 원칙, LSP (Liskov Substitution Principle) 리스코프 치환 원칙이란? (리스코프 치환 원칙, LSP ,Liskov Substitution Principle) 리스 코프 치환 원칙은 "특정 메소드가 상위타입을 인자로 사용할때, 그 타입의 하위 타입을 대입했을때도 정상동작해야한다"라는 내용입니다. 리스코프 치환 원리는 바바라 리스코프가 1987년 컨퍼런스 기조연설 《데이터 추상화》에서 처음 소개한 내용입니다. 리스코프 치환 원칙의 수학적 정의는 다음과 같습니다. "Φ(x)가 T형의 객체 x에 대해 증명 가능한 성질이라고 하자. 그러면 S가 T형의 하위 유형인 S형의 객체 y에 대해서는 Φ(y)가 참이어야 한다." 예를 들어서 설명을 해볼까요? "Φ.. 2022. 5. 9.
SOLID 원칙 - 개방폐쇄원칙, OCP (Open Closed Principle) SOLID 원칙 - 개방폐쇄원칙, OCP (Open Closed Principle) 개방폐쇄원칙 원칙이란? (개방폐쇄원칙, OCP ,Open Closed Principle) 개방형 폐쇄 원칙은 객체 지향 설계의 5가지 SOLID 원칙 중 하나이다. 객체 지향 프로그래밍에서 개방폐쇄의 원리는 "소프트웨어 엔티티(클래스, 모듈, 기능 등)는 확장을 위해 개방되어야 하지만 수정에 대해서는 폐쇄되어야 한다" 라는 원칙입니다. 이 원칙을 지킨다면, 소스 코드를 수정하지 않고 동작을 확장하도록 허용할 수 있습니다. 또한, 기능 변경을 하려면 많은 곳에서 코드를 변경하지 않고도 할 수 있어야 한다는 것을 의미합니다. 이상적으로는 새로운 코드를 추가하고, 오래된 코드를 거의 또는 전혀 변경하지 않아도 새로운 기능을 구.. 2022. 5. 7.
SOLID 원칙 - 단일책임원칙, SRP (Single Responsibility Principle) SOLID 원칙 - 단일책임원칙, SRP (Single Responsibility Principle) 단일 책임원칙이란? (단일책임원칙, SRP ,Single Responsibility Principle) 단일 책임 원칙(Single-responsibility principle, SRP)은 컴퓨터 프로그램의 모든 기능/모듈이 기능의 한 부분에 대해 책임을 져야 하며, 그 부분을 캡슐화해야 한다는 원칙입니다. 그 모듈, 클래스 또는 기능의 서비스는 그 책임을 좁게 설정해야합니다. SPR 는 커플링된 책임들을 여러 클래스를 나누라는 원칙이기도 합니다. 또한, 클래스는 단일 기능에 초점을 맞추고, 그 클래스는 단 하나의 작업만 수행해야 한다는 것을 의미합니다. SRP를 준수해야하는 이유 - 더 많은 기능을 가.. 2022. 5. 5.
객체지향(Object-oriented)용어 - 상속, 다형성, 메소드오버로딩, 메소드오버라이딩, inheritance, method override, method overload 객체지향(Object-oriented)용어 - 상속, 다형성, 메소드오버로딩, 메소드오버라이딩, inheritance, method override, method overload 상속(Inheritance) 상속은 객체 지향 프로그래밍(OOP) 언어의 핵심 개념 중 하나입니다. 한 클래스의 어트리뷰트와 메소드를 공유할 수 있도록 하는 메커니즘입니다. 상속된 클래스는 상위 클래스의 "하위 클래스" 혹은 "차일드 클래스"라고 합니다. 상속을 통해 프로그래머는 기존 클래스의 동일한 동작을 유지하면서 새로운 구현을 지정하고, 코드를 재사용하며, 공용 클래스와 인터페이스를 통해 코드를 확장할 수 있습니다. 상속을 활용한 코드의 예 class A{ int a = 0; public void print(){ Syste.. 2022. 4. 25.
객체지향(Object-oriented)용어 - ADT, Class, Object, 클래스, 오브젝트 객체지향(Object-oriented)용어 - ADT, Class, Object, 클래스, 오브젝트 객체지향(Object-oriented) 는 재사용성과 유연성을 위해 도입된 프로그래밍 패러다임입니다. Class 기반으로 개발을 하며, ADT, 상속(Inheritance), 다형성(Polymorphism)으로 구성되어있습니다. Object oriented를 구성하는 각각의 용어에 대해 알아보겠습니다. Abstract Data Type (ADT) ADT, 추상적 데이터 타입은 데이터의 캡슐화(encapsulation)와 데이터에 연관된 동작(operation)을 하나의 단위(single syntactic unit)에 포함한 것입니다. 클래스(Class) 클래스는 ADT라는 개념을 실제로 구현한 것입니다. .. 2022. 3. 31.
디자인패턴이란, GoF디자인패턴이란, 디자인패턴의유래, 패턴을쓰는이유, 디자인패턴이란, GoF디자인패턴이란, 디자인패턴의유래, 패턴을쓰는이유, 디자인패턴이란, 디자인 패턴의 유래? 건축가인 크리스토퍼 알렉산더(Christopher Alexander) 가 건물및 도시 설계를 개선하기 위해 반복되는 행태와 환경을 패턴으로 정리해본것이 디자인패턴의 시초입니다. 전문가들은 종종 새롭지만 비슷한 문제를 맞닥뜨리는데, 이전에 사용했었던 경험들을 토대로 문제를 풀고, 이전에 문제를 풀었던 방식을 재사용합니다. 다양한 분야의 전문가들은 반복되는 방법을 패턴으로 정리하였습니다. 소프트웨어 개발에서 또한 이러한 방법론이 연구되어 디자인패턴이 만들어졌습니다. 소프트웨어 디자인패턴의 역사 - 1977년: The architect Christopher Alexander, A Pattern Lang.. 2022. 3. 29.
반응형