분류 전체보기
-
[Spring] AppConfig / IoC / DIBackend/Spring 2022. 5. 9. 23:53
AppConfig 애플리케이션 전체 동작 방식을 구성하기 위해 구현 객체를 생성하고 연결하는 책임을 가지는 설정 클래스이다. 애플리케이션 실제 동작에 필요한 구현 객체를 생성하고 생성자를 통해서 객체 인스턴스 참조를 주입한다. 이는 DIP를 가능하게 하고 객체를 생성하고 연결하는 역할을 분리한다. DI(Dependency Injection) : 의존관계 주입 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴이다. 애플리케이션 실행 시점에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것이다. 클라이언트 코드를 변경하지 않고 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 있다. IoC(Inversion Of Control) : 제어의 역전..
-
[Spring] SOLIDBackend/Spring 2022. 5. 9. 23:41
SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리했다. SRP(single responsibility principle) : 단일 책임 원칙 OCP(Open/Closed principle) : 개방-폐쇄 원칙 LSP(Liskov substitution principle) : 리스코프 치환 원칙 ISP(Interface segregation principle) : 인터페이스 분리 원칙 DIP(Dependency inversion principle) : 의존관계 역전 원칙 SRP 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 변경이 있을 때 파급효과가 적으면 단일 책임 원칙을 잘 따른 것이다. OCP 개방-폐쇄 원칙 소프트웨어 요소는 확장에는 열려있으나 변경에는..
-
[Spring] 스프링/스프링컨테이너/스프링빈 이란?Backend/Spring 2022. 5. 9. 23:27
스프링 스프링 DI(Dependency Injection) 컨테이너 기술 스프링 프레임워크 스프링 부트, 스프링 프레임워크 등을 모두 포함하는 스프링 생태계 자바 언어 기반의 프레임 워크로서 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임워크이다. 객체 지향 프로그래밍의 추상화, 캡슐화, 상속, 다형성을 보장한다. 그 중 다형성은 제어의 역전, 의존 관계 주입을 통해 역할과 구현을 편리하게 다룰 수 있도록 지원한다. 스프링 컨테이너 자바 객체(Bean)의 생명 주기를 관리하며 생성된 자바 객체드레게 추가적인 기능을 제공한다. 제어흐름을 외부에서 관리할 수 있게 해주며 객체들 간의 의존관계를 런타임에 만들어준다. 종류에는 2가지가 있다. 1. BeanFactory 빈 등록, 생성, 조회 등 관리..
-
[Algorithm] 분할 정복 알고리즘 (Divide and Conquer)Algorithm/Algorithm Theory 2022. 5. 9. 21:22
분할 정복 크고 방대한 문제를 작은 문제 단위로 나눈 다음 그것을 다시 합쳐서 해결하는 알고리즘이다. 이 알고리즘은 3가지 단계를 가진다. Divide : 문제를 더이상 분할할 수 없을 때까지 동일한 유형의 여러 하위 문제로 나눈다. Conquer : 작은 단위의 문제를 해결한다. Combine : 해결한 문제의 결과를 통합하여 답을 얻는다. 대표적인 예로 quick sort나 병합정렬이 있다. 병합 정렬 https://miraekwak.tistory.com/73?category=922962 [Algorithm] 정렬 알고리즘 & Python3 코드 & 시간복잡도 정리 1. 병합 정렬 분할 정복 방식을 이용한 알고리즘으로 말 그대로 배열을 분할 후 정렬하면서 병합하는 방식이다. 배열의 원소를 절반씩 잘라..
-
[Django] Rest FrameworkBackend/Django 2022. 5. 8. 23:01
RESTful Reprensentational State Transfer http의 url과 http method(GET, POST, PUT, DELETE)를 사용해서 API 가독성을 높인 구조화된 시스템 아키텍쳐이다. 하나의 url로 4가지의 HTTP method를 전송할 수 있다. REST Framework RESTful API 서버를 쉽게 구축할 수 있도록 도와주는 오픈소스 라이브러리 # 설치 pip install djangorestframework # 설정에 추가 INSTALLED_APPS = [ ... 'rest_framework', ] Serializer 추상적인 object를 텍스트파일로 바꿔주거나 반대의 상황도 가능하게 하여 데이터를 직렬화, 역직렬화한다. 서버와 웹 클라이언트 사이에 데이..
-
[Django] MVT 패턴Backend/Django 2022. 5. 8. 22:41
MVC 패턴이란? 디자인 패턴 중 하나로 Model, View, Controller의 약자이다. Model : 어플리케이션 정보(데이터) View : 사용자 인터페이스 Controller : 데이터와 비즈니스 로직사이 상호 동작 관리 이 패턴을 사용하면 사용자가 보는 페이지, 데이터 처리, 이 둘 사이의 제어 3가지 역할에 대해서 각각 역할에 집중할 수 있다. 유지보수성, 확장성, 유연성이 증가하고 중복 코딩을 줄인다. MVT 패턴이란? 장고 프레임워크에서는 MVC에서 View를 Template, Controller를 View로 MVT 패턴이라고 한다. Model : 데이터베이스에 저장되는 데이터 Template : 사용자에게 보여지는 UI View : 프로그램 로직이 동작해 데이터를 가져오고 처리하여 ..
-
[Python] virtual env 설정Programming Language/Python 2022. 5. 8. 17:26
Virtual env venv를 사용하여 프로젝트 별 전용 가상공간을 생성하여 프로젝트 별로 독립된 파이썬 실행환경을 가질 수 있다. 여러 프로젝트의 python package를 섞이지 않게 관리할 수 있는 장점! 서로 다른 프로젝트의 패키지 버전이 충돌날 일이 없어진다. venv 설정 python3.x 버전일경우 python대신 python3으로 명령어 실행 # 파이썬 버전 확인 python --version # 가상환경 생성 cd project_directory python -m venv .venv # 윈도우 가상 환경 활성화 cd .venv/Scripts activate # 우분투 가상 환경 활성화 source .venv/bin/activate # 가상환경 비활성화 deactivate require..
-
[Django] django 프로젝트 시작하기Backend/Django 2022. 5. 8. 17:10
Django 설치 pip install django Django 프로젝트 생성 및 실행 # 프로젝트 생성 django-admin startproject [project name] # 프로젝트 내부 이동 cd [project name] # 8080포트에서 프로젝트 실행(default 8000) python manage.py runserver 8080 Django 앱 생성 python manage.py startapp [app name] Django Sqlite3 DB 사용 # projectname/setting.py에 app 설치 알리기 INSTALLED_APPS = [ ... 'appname.apps.AppnameConfig', ] # app의 migration파일 만들기 python manage.py ..