프로그래밍
-
Alembic 사용법 (python data migrations)프로그래밍/Python 2024. 5. 5. 11:46
Alembic 이란?Python에서 사용하는 Database Migration Tool주로 Alembic + Sqlarchemy로 사용하여 통합 관리 하게 됩니다.Alembic을 사용하는 이유?보통 개발 할 때 여러 대의 DB를 생성하여 사용합니다.아래 Flow와 같이 Dev와 Prod DB를 일치 시켜야 운영이 가능 할 때 사람이 일일히 수동으로 하는 것이 아니라 Alembic으로 통합하여 다른 사람이라도 똑같은 컨디션의 환경을 제공해주기 위한 툴입니다.spring 진영의 flyway와 비슷 합니다. 차이점이라면 flyway는 변경 정보를 각 테이블에 모두 기록하는 반면, alembic은 마지막에 마이그레이션 된 버전의 해시값만을 기록합니다.alembic DB migrations을 버전의 해시값으로 버..
-
python pyenv로 가상화 환경 만들기프로그래밍/Python 2024. 5. 4. 19:20
pyenv란?먼저 프로젝트 진행 시에 다양한 프로젝트를 개발 하는 경우가 많다. 그럴 때 마다 상황에 맞는 python 버전을 가지고 대응해야 하는데, 하나의 python 버전만 가지고는 많은 프로젝트를 한 컴퓨터에서 진행하기란 어간 쉬운 일이 아니다. 한 프로젝트는 python 3.11 한 프로젝트는 python 3.5버전을 가졌다면, 내장 함수 부터 호환 되는 라이브러리 들이 다 엉켜 있다. 이럴 때 가상화 환경을 사용하여 여러 환경에 대응되는 패키지를 관리하게 되는데 이때 pyenv를 사용하면 좋다pyenv는 system > global > local > pyenv shell로 layer를 가진다. Layer기반으로 범위가 낮아짐으로 system python은 최상위 버전을 아래로 갈 수 록 낮아지..
-
python 패키지 관리를 위한 poetry 패키지 매니저 활용법프로그래밍/Python 2024. 5. 4. 13:10
Poetry란?python에서 사용하는 패키지 매니저임python 개발시 협업을 진행하기 위해 패키지를 맞춰야 하는데 유용함python 패키지 setup하는 용도로도 사용함python lint, flake8에서도 유용한 작용을 함자바와 maven gradle과 같은 기능이라고 보면 됨또한 개발과 배포용에서 굳이 배포 하지 않아도 되는 flake8 같은 패키지는 개발과 배포용으로 구분하여 패키지 관리도 진행 가능하다.Poetry 버전 확인—version으로 버전 확인 후 없으면 설치 하면 된다.# 버전 확인 poetry --version # Poetry (version 1.8.2) # 설치 pip install poetry Poetry로 python 패키지 생성poetry init # or poetry n..
-
[JAVA Intellij] Maven-Profile을 적용하여 Resources폴더 환경에 맞게 관리하기프로그래밍/Java 2022. 5. 24. 09:07
목적 Maven을 이용하여 local(로컬), dev(개발), prod(사용) 서버를 다르게 조작하여 간편하게 db접속 정보를 바꾸는 작업을 진행 목표 java 소스에 resource 폴더를 여러개로 분리(local, dev, prod) Maven profiles 설정 각각에 환경에 맞는 db 정보가 담긴 Properties생성 resource에서 properties 파일 불러와 내용 읽기 java 소스에 resource 폴더를 여러개로 분리(local, dev, prod) resource 파일을 local(로컬 개발), dev(테스트), prod(상용버전) 별로 만들어 주었음 Maven profiles 설정 각각 환경에 맞게 DB정보를 변경할 수 있도록 설정 아래 와 같이 작성하면 선택한 프로필의 Pr..
-
[JAVA]객체 지향 디자인 패턴 - Composite Pattern(컴포지트 패턴)프로그래밍/Java 2022. 3. 29. 16:31
Composite Pattern이란? Composite는 '합성물', '혼합', '혼성' 등 이라는 뜻을 가지고 있음 합성한 객체들의 집합이라는 개념으로 이해하면 됨 컴포지트 패턴은 트리구조를 작성하고 싶을 때 사용하며, 전체- 부분 관계를 표현하는 것이다. 폴더 시스템과 같다고 보면 된다. 폴더를 하나에 두고 이 폴더는 다른 폴더 안에 들어갈 수도 있고, 하위 계층의 객체들도 가지고 있을 수 있다. Composite Pattern Structure(장식자 패턴 구조)이란? 상위 클래스(Component)를 두고 하위에 Leaf들을 둔다. 하위 Leaf들은 Composite형태로 Leaf들을 담아두는 복합체 일 수도 있고, 그냥 단순 하나의 Leaft일 수도 있다. 하위 Leaf들은 동작하는 메소드를 상..
-
[JAVA]객체 지향 디자인 패턴 - Mediator Pattern(중재자 패턴)프로그래밍/Java 2022. 3. 28. 20:35
Mediator Pattern이란? 중간에 중재자 역할을 하는 객체를 두어 어떤 특정 클래스의 내용이 변경되었을 때 어떤 특정 범위에 객체들에게 영향을 미칠 때 사용 N:M의 관계에서 1:M의 관계로 변경 하고 싶을 때 사용하는 패턴이다. Mediator Pattern Structure(장식자 패턴 구조)이란? 중간에 Mediator 객체를 둔다 양쪽으로 N개의 객체 와 M개의 객체를 둔 인터페이스를 둔어 연결 시켜 준다. N개의 객체에서 변화가 있을 때 mediator에게 호출 M개의 객체에 변경 사항을 알려준다 mediator는 M개의 객체 모두에게 이 변경 사항을 알려주어야 한다. Mediator Pattern Example 출처. 얄팍한 코딩사전 Mediator안에 Mode라는 객체 들을 담을 L..
-
[JAVA]객체 지향 디자인 패턴 - Factory Pattern(팩토리 패턴)프로그래밍/Java 2022. 3. 28. 17:55
Factory Pattern이란? 슈퍼 클래스(추상클래스)를 하나를 두고 서브클래스를 여러개 두어 호출 형식에 따라 하나의 자식 클래스의 인스턴스를 리턴해주는 패턴이다. 슈퍼 클래스 호출 부가 많아 질 것 같은 경우 코드가 더 복잡하고 고도화 되는 경우 인스턴스 생성부를 factory 메소드에 갖춰 두어 확장성을 가지게 만들기 위한 패턴이다. 클래스 호출부 형식이 바뀌거나 소스를 직접 수정 및 알 필요 없이 가져다 사용만 하고 싶을 대 사용한다. Factory Pattern Structure(팩토리 패턴 구조) 인자를 받는 Factory 클래스 및 메소드를 하나 가진다. 부모로 추상클래스 가 하나이상 존재해야한다. 부모클래스로 지정된 것에서 서브 클래스들이 존재해야한다. 자식 클래스는 부모클래스의 메소드..
-
[JAVA]객체 지향 디자인 패턴 - Decorator Pattern(장식자 패턴)프로그래밍/Java 2022. 3. 24. 19:13
Decorator Pattern이란? 객체의 결합을 통해 기능을 동적으로 유연하게 확장 할 수 있게 해주는 패턴 즉, 사용자가 필요에 따라 기능을 장착하거나, 사용자가 원하는데로 골르려고 할때 사용하기 좋은 패턴이다. Decorator Pattern Structure(장식자 패턴 구조)이란? 인터페이스를 하나 만들고 그 인터페이스를 받는 객체를 2개 생성 한다. 하나는 기본이 되는 것이고 하나는 decorator를 구현하고 싶은 객체이다. 기본이 되는 곳은 인터페이스에서 받은 것을 구현하는 것이 존재하고 decorator는 Super(상위 클래스)를 이용하여 상위 객체의 모든 내용을 구현하고 추가적으로 할 것을 구현하여 decorator같은 역할을 구현한다. 다형성을 이용하여 객체를 생성하게 되면 dec..