본문 바로가기
728x90

programming17

CI/CD 어플리케이션 개발단계부터 배포까지의 단계를 자동화하여 사용자에게 빈번히 배포를 할 수 있게 하는 개발방식이다. CI(Continuous Integration - 지속적 통합) 버그 수정과 새로운 기능들이 주기적으로 메인 레파지토리에 빌트되고 테스트 되어 머지되는 것을 의미한다. CI는 두개의 중요 사항이 존재 한다. 1. 코드 변경사항을 주기적으로 빈번히 머지해야 한다 - 서로 다른 개발자들이 같은 파일을 수정하고 오랜시간 후 머지를 한다면 conflict해결에 더 많은 시간이 든다. 2. 통합을 위한 단계 (빌드, 테스트, 머지)의 자동화 -주기적으로 머지된 코드가 정상적으로 빌드되고 다른 코드에 버그를 초래하지 않는지에 대한 테스트가 자동적으로 이뤄져야 한다. 이때 성공 여부에 대한 결과를 머지한 개.. 2021. 9. 15.
Object pooling Garbage collection(GC)은 자동으로 메모리 해제를 해주지만 때때로 원치 않는 메모리를 헤제하거나 지연을 야기할 수 있다. 이는 단시간 내에 객체들을 수 없이 생성하고 없애는 것을 반복할때 일어난다. 이런 현상은 3D렌더링과 프레임당 수 많은 임시 벡터 객체들을 동적할당할때 발생한다. 이런 현상을 해결기 위해 통상적으로 임시 객체를 생성하는 대신 이미 생성된 객체를 재사용하는 방식을 사용한다. 지금 당장 사용하지 않는 인스턴스들을 위한 pool을 만들고 필요할때 객체들을 pull하면 된다. 이렇게 하면 garbage collector가 헤제 해야할 메모리가 줄어 들기 때문에 garbage colltector가 해야할 일이 줄어든다. 이렇게 되면 객체는 object pool에 존재하거나 사용.. 2021. 6. 23.
git 정리1 commit: 커밋은 깃 저장소에 디렉토리에 있는 모든 파일에 대한 스냅샷을 기록하는 것이다. 깃은 가능한 커밋을 가볍게 유지하고자 하기 때문에 커밋때 마다 이전 버전과 다음 버전과의 차이점(delta)만을 기록한다. 그때문에 커밋은 그 위에 있는 부모커밋을 가리킨다. branch: 브랜치는 특정 커밋에 대한 참조이다. 브랜치는 하나의 커밋과 그 부모 커밋들을 포함하는 작업내역이다. 브랜치를 새로 생성할때는 git branch 를 사용하면 된다. 하지만 단순히 브랜치를 만들고 커밋을 하면 새로 생성된 브랜치로 커밋이 되지 않는다. 이는 새로 생성된 브랜치로 이동을 하지 않았기 때문이다. 새로운 브랜치로 이동을 하기 위해서는 git checkout 을 사용하면 된다. merge: 두개의 서로 다른 브랜치를.. 2021. 4. 4.
객체지향 구현 원리 5가지 - SOLID 1. SRP(Single Responsibility Principle) - 단일 책임의 원리 클래스는 오직 하나의 일만 수행해야 생산성이 높아진다. 시스템의 모든 객체는 하나의 책임만을 가져야 한다. 객체가 제공하는 모든 기능은 단 하나의 책임을 수행하는데 집중되야 한다. 2. OCP(Open Closed Principle) - 클래스는 기능 확장에 대해서는 열려 있지만, 코드 수정에 대해서는 닫혀있다 소프트웨어도 예측하기 어려운 변화무쌍한 요구 사항이 발생한다. 요구사항은 기존에 대발된 기능을 수정하거나 새로운 기능을 확장하는 등이 있다. 가장 직관적인 수정 방법은 기존 클래스 안 메서드의 내부 로직을 변경하는 것이다. 하지만 이 방식은 사이드 디펙트가 우려되어 사이드 이펙트 발생 유무도 검사를 해야한.. 2021. 3. 7.
728x90