본문 바로가기
728x90
반응형

전체 글164

[Git] worktree 사용하기 특정 솔루션을 여러 site별로 / 연도별로 나누어 관리하고자 했다.각 worktree마다 생성하는 project가 상이하고 많았기 때문에 좀 더 효율적인 repository 접근을 위해 나누었다.  우선 main branch에서 사용하는 폴더에서 git bash에 git worktree add 를 입력한다.이 때 branch는 미리 생성해둬야하고 branch에 commit 하나는 있어야한다.  ex ) main solution명이 xlv라서 path를 xlv.2023으로 잡으면 폴더 내에 생긴다. git GUI에서 worktree로 설정된 branch이동은 불가능하고 repository를 worktree 레벨에서 설정할 수 있다.철저히 분리되어있어서 실수할 여지가 줄어든다! worktree를 삭제할.. 2024. 7. 18.
다형성 유형 직렬화(Serialize Polymorphic Types) 공식문서를 옮기며 학습한 내용입니다. (.NET 8)  1. 파생 클래스의 속성 직렬화.NET 7부터 System.Text.Json특성 주석을 사용한 다형성 유형 계층 직렬화 및 역직렬화를 지원함. Base class와 파생 class 하나씩 정의한다. (Base class에 정의한 attribute는 링크 참조)[JsonDerivedType(typeof(WeatherForecastWithCity))]public class WeatherForecastBase{ public DateTimeOffset Date { get; set; } public int TemperatureCelsius { get; set; } public string? Summary { get; set; }} public.. 2024. 6. 27.
항해 플러스 백엔드 후기 (Typescript) 배경- Data 관련 업무 중 백엔드에 관심이 생겨 직무를 전향하며 현업에서 개발을 배움 ( 컴공 x )- 프론트, 백엔드 할 것 없이 개발이 즐거워서 업무를 하다보니 ( 2년동안 기획, 로그 분석 등 기타 업무도 많이함.. ) 한 가지도 제대로 알지 못하는 것 같은 느낌에 놓치고 있는 것과 중요한 것이 무엇인지에 대한 가이드가 필요했다- 현도메인에서 마스터 하고싶은게 뚜렷하고 서비스 관련 회사로 이직에는 큰 관심이 없으나 개발자로서 역량 강화가 필요하고,, 회사는 넘 바빠서 교육이나 개인의 커리어에는 관심이 없다보니ㅠㅠ 스스로 살 길을 찾아나서 거액!! 을 주고 듣게됨    다른 부트캠프들도 많고 비교도 해봤지만 학습 과정이 개인과 회사에 도움이 될 것이라고 생각했다.  솔찌키,,!!!!!!!!이 목차.. 2024. 5. 28.
[Git] Github Actions + Test Coverage (jest) 현재 테스트 커버리지는 아직 많이 남아있는 test case로 인해 현저히 낮은 상태이다..ㅎ  git workflow에서 build, lint 등등이 성공하더라도test coverage threshold보다 낮으면 fail을 내기 위해서 아래와 같은 설정을 추가하였다.(이외에도 1, 2 방법들이 있는 듯) - package.json "scripts": { ... "test": "jest", "test:watch": "jest --watch", "test:cov": "jest --coverage", ... },"coverageThreshold": { "./src/": { "statements": 50, "branches": 50, ".. 2024. 4. 26.
[Git] Github Actions CI 적용&Test devel, main에서 각각의 workflow를 따를 예정인데 이를 github actions를 통해 진행해보고자 한다.feature branch에서 개발이 끝나고 devel로 PR이 생성될 때 또는 devel branch로 push가 일어났을 때자동으로 테스트를 해주도록 다음을 작성하였다.  .github/workflows/ci.yml               name: devel workflow    CI 테스트를 위해서 test branch(feature)에서 devel branch로 pr을 생성했다. 무언가 열심히 체크하고성공 -!    Pull requests의 목록에서도 확인할 수 있고 Actions에서 어떤 branch에서 어떤 work.. 2024. 4. 24.
Docker (nestjs, postgresql, pgadmin) nestjs 서버를 구축한 상태에서 docker container에 올려보자. 1 ) Docker 설치 https://www.docker.com/products/docker-desktop/ Docker Desktop: The #1 Containerization Tool for Developers | Docker Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux. www.docker.com - 시스템 다시 시작하기 때문에 미리 이것저것 업뎃ㅎㅏ기- 2 ) 프로젝트 최상단에 Dockerfile 생성 .. 2024. 4. 23.
CI/CD CI (Continuous Integration, 지속적 통합) 여러 개발자가 동시에 같은 branch에서 작업을 할 때 - merge 시, 코드 상 충돌날 수 있는 부분에 대해 작업하는 경우 - 코드 상 충돌이 없더라도 기능 테스트 시 영향을 미칠 수 있는 경우 등등의 경우가 발생할 수 있다. 팀의 규모가 커지면서 수동으로 push -> merge -> 충돌 해결 -> test 를 진행하는데 많은 시간이 소요됨에 따라 자동화를 통해 효율적으로 관리할 필요가 있다. CD ( Continuous Deployment, 지속적 배포 / Continuous Deliver, 지속적 제공 ) 배포는 최종 사용자에게 sw를 전달하는 것으로, 지속적 배포는 작업이 끝날 때마다 자동으로 production 환경으로 배포.. 2024. 4. 22.
TDD(Test Driven Development) 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복 및 구현한다. Red 단계에서는 실패하는 테스트 코드를 먼저 작성한다. Green 단계에서는 테스트 코드를 성공시키기 위한 실제 코드를 작성한다. Blue 단계에서는 중복 코드 제거, 일반화 등의 리팩토링을 수행한다. [일반적] 보통의 개발 방식은 '요구사항 분석 -> 설계 -> 개발 -> 테스트 -> 배포'의 형태의 개발 주기를 갖는데 이러한 방식은 소프트웨어 개발을 느리게 하는 잠재적 위험이 존재한다. 왜냐하면, 소비자의 요구사항이 처음부터 명확하지 않을 수 있다. 따라서 처음부터 완벽한 설계는 어렵다. 자체 버그 검출 능력 저하 또는 소스코드의 품질이 저하될 수 있다. 자체 .. 2024. 3. 4.
nesetjs 보호되어 있는 글 입니다. 2024. 3. 4.
Bit 연산 num1 int num1 = 15;int result1 = num1  bit 열15 : 00000000 00000000 00000000 0000111130 : 00000000 00000000 00000000 0001111060 : 00000000 00000000 00000000 00111100120 : 00000000 00000000 00000000 01111000​  반대의 경우 >>num1 >> num2 : num1의 비트 열을 num2칸 씩 오른쪽으로 이동시킨다 2024. 1. 3.
Graceful Shutdown 예제(C#) https://data-gardner.tistory.com/171 간단한 콘솔 앱을 만들어보았다. Worker의 background에서 event가 channel에 쌓일 때마다 IMyService를 통해 event를 처리한다. IMyService가 event를 처리하는데 소요되는 시간은 event가 발생하는 주기보다 길다. event가 channel에 계속 쌓여가는 상태에서 시스템이 종료되면 이미 쌓인 event는 MyService가 처리하지 못하므로, MyService가 모든 event를 처리할 때까지 system은 종료하지 않도록 한다. 핵심은 appLifetime.ApplicationStopping과 appLifetime.ApplicationStopped를 잘 활용하는 것이다. Stopping은 종.. 2024. 1. 2.
Graceful Shutdown 프로그램이 종료될 때 최대한 side effect가 없도록 하고 있던 작업을 마무리한 뒤 종료하는 것을 말한다. ( Hard Shutdown) ex ) http요청을 처리하는 웹서버의 경우 : 서버가 종료되기 전 기존 처리 중이던 요청을 모두 처리한 뒤 종료시킴 Ctrl+c 또는 exception으로 서버가 종료될 때 보내는 시그널로 SIGINT, SIGTERM, SIGKILL이 있다. 1. SIGINT : 유저가 직접 프로그램을 종료(interrupt의 int) - catch하여 시그널 핸들러 만들 수 있음 2. SIGTERM : 프로그램을 종료하는 일반적인 방법 - catch하여 시그널 핸들러 만들 수 있음 3. SIGKILL : 프로세스를 무조건 Kill - catch하여 시그널 핸들러 만들 수 없.. 2023. 12. 21.
Native programming 컴퓨터의 특정한 플랫폼 또는 운영 체제에 최적화된 프로그램을 개발하는 것 기계어 또는 특정 플랫폼의 어셈블리 언어를 사용하여 프로그램을 작성하는 것 예를 들어, 특정 운영 체제에서 실행되는 프로그램을 개발할 때, 해당 운영 체제의 API (Application Programming Interface)와 라이브러리를 사용하여 프로그램을 작성하는 것으로, 프로그램이 해당 운영 체제에서 최적으로 작동하고 성능이 최대화될 수 있다. C나 C++ 등으로 코딩한 것은 바로 실행할 수 없고, 어셈블리로 변환이 되어 (컴파일) 기계어로 변환되어 실행 가능하다. 3층 - C/C++ 2층 - 어셈블리 2023. 10. 26.
07. 데이터 모델을 데이터베이스로 변환(1) 1. 데이터베이스 구성요소 1 ) 데이터 구조(DB 스키마) : DB, 테이블, 컬럼, 주 키(Primary key), 외부 키(Foreign key), 인덱스(Index) 2 ) 저장 공간 - 테이블스페이스 - 인덱스스페이스 3 ) 명명규칙 - DB명 : 영문 대문자(데이터스토어와 일치) - 테이블명 : 영문 대문자 단수 명사(복합 명사이면 _로 연결) - 컬럼명 : 테이블 명(약어)_성격(추가)_도메인(약어) - 주 키 : 컬럼명과 동일 - 외부 키 : 컬럼명과 동일, FK_ 혹은 _테이블명(약어) 부여 - 뷰, 인덱스, 테이블스페이스, 인덱스 스페이스는 내부 규칙을 정의하여 부여 ** 약어 선정 시 우선순위 - 비즈니스 영역에서 사용하는 표준 약어 - 대한민국에서 보편적으로 사용하는 약어 - 국제적.. 2023. 10. 26.
06. 설계를 위한 데이터 모델 1. 관계 모델 V2 1 ) 관계 모델에서의 R - 원자 값 - 각 컬럼은 명명됨 - 컬럼은 이름으로 다른 도메인과 각 컬럼이 구별됨 - 일반적으로 시간에 따라 변화함 2 ) RM/V2 목표 - 사용자와 데이터 상호작용 간결화 ex ) 대용량 데이터베이스 보유한 사용자, 모든 다른 사용자와 독립적 상호작용, 프로그래밍에 친숙x - 전문적 프로그래머의 생산성 증대 - 데이터베이스 관리자를 위한 보다 강력한 관리 도구 지원 3 ) 데이터베이스 매니지먼트를 위한 20가지 기본 원칙 - 객체 식별 - 한 방법으로 식별된 객체 - DB비관련 부분 분리 - 커뮤니티 이슈 - 3레벨 개념 - 모든 사용자 추상화 동일 논리 수준 - 추상화 가지 충족 논리 수준 - 예리한 분리 - 비반복 혹은 재귀적 루프 - 비교값으로.. 2023. 10. 26.
05. 엔터프라이즈 통합 데이터모델 1. 레퍼런스 및 마스터 데이터 1 ) 마스터 데이터 - 비즈니스 트랜잭션에 자주, 동일한 형태로 사용되는 데이터 - 여러 개의 레퍼런스 데이터와 비즈니스 활동 결과인 트랜잭션 데이터와 관계를 가짐 2 ) 레퍼런스 데이터 - 마스터 데이터를 구분하고 분류하는 기준 데이터 - 장기간 동일하게 유지하고 변화가 거의 없음 3 ) 트랜잭션 데이터 - 마스터 데이터와 연계하여 비즈니스 활동을 수행한 결과 데이터 레퍼런스 데이터 계층이 최상위에 위치하고 마스터데이터와 1:다의 관계를 가진다. ---------------------------- 레퍼런스 데이터 계층 마스터 데이터 계층 마스터 연계 데이터 ---------------------------- 2. Master data management 방안 엔터프라이.. 2023. 10. 19.
04. 정규화와 데이터모델 검증 1. 정규화(Normalization) 목적 - 데이터 중복을 최소화 - 데이터 모델의 단순화 - 데이터 공유도 증대 - 데이터 일관성 확보 2. 정규화 - 1차 정규화 : 반복되는 속성 유형의 분할 제거 - 2차 정규화 : 주 식별자 전체에 종속되지 않는 속성 유형의 분할 제거 - 3차 정규화 : 비식별자 속성 유형에 종속하는 속성 유형의 분할 제거 - 보이스-코드 정규화 : 비 식별자 속성 유형으로 특정한 엔티티 그룹의 성격을 나타내는 속성 유형이 존재할 때, 하부 유형 정의 1 ) 상부 유형 : 하부 유형을 포함하는 총체적 엔티티 유형 2 ) 하부 유형 : 하나의 엔티티 유형으로부터 특정 비즈니스 논리 성격으로 세분화되어 관리되는 엔티티 유형 * 하부 유형 정의 절차 - 속성 유형, 관계 요소의 선.. 2023. 10. 17.
03. 개념, 논리, 물리 데이터 모델 개념 데이터 모델 - 표현하고자 하는 현실 세계를 개념 모델로 형상화하여 데이터에 대한 관계 구조 정의 - 엔터프라이즈 비즈니스 활동 결과로 표현을 중심으로 한 개념 모델 구성 논리 데이터 모델 - 개념 데이터 모델을 논리적 구조로 정의하여 데이터베이스 관리 시스템과 결부된 논리 데이터 모델로 변환 - 논리 데이터 모델을 위한 요건 개념 데이터 모델에 비즈니스 규칙, 데이터 무결성을 검증하여 제약 조건 반영, 데이터 보안성을 검증하여 데이터 접근 경로 및 범위 물리 데이터 모델 - 논리 데이터 모델을 데이터 구조화를 통해 지향하는 DBMS에 적합한 물리 데이터 구조로 변환 - 시스템을 고려한 논리적 설계를 구현 가능한 물리적 데이터베이스 구조로 전환하고 DBMS의 조건에 맞게 성능을 최적화한 데이터 모델.. 2023. 10. 12.
02. 데이터 모델 구성 요소 Entity - 비즈니스 개체 엔티티 유형 - 각각 개체가 가지는 공통 의미에 대한 정의 엔티티 유형이 될 수 있는 요건 - 기업에 유용한 정보를 표현 - 서술적 특성을 가질 것 - 하나의 존재가 다른 존재와 구별될 수 있도록 유일하게 식별될 수 있을 것 - 적어도 다른 하나의 엔티티 유형과 연관성을 가질 것 엔티티 유형 명명 규칙 - 명사를 사용 - 의미가 명확하고 짧은 이름 - 약어 사용 x 관계, 관계 유형 - 두 엔티티 유형 간의 동일한 형태로 나타나는 관계들의 집합 관계 유형 도출 - 현업 사용 동사형 어휘, 한 장표에 나타나는 실체유형들이 기준이 된다. 명명 규칙 - 두 개의 관계 요소 명으로 표기 - 사용자 용어 사용 - 방향성에 따라 능동/수동으로 표현 - 방향성을 고려하여 시계 방향으로 .. 2023. 10. 11.
01. 데이터모델링 개념 엔터프라이즈 정보 모델은 데이터 모델과 프로세스 모델의 작용성의 관계를 정의함으로써 완성된다. 프로세스 모델(업무활동 모델링) - 요구되는 업무활동 도출 및 정의 - 업무기능과 프로세스 분할 및 이벤트간 의존관계로 연결 - 최종적으로 task와 program으로 변환됨 데이터 모델 - 기업 데이터 도출 및 정의 - 관심있는 대상, 사건을 엔티티 유형 및 관계로 표현 - 최종적으로 데이터베이스 구조로 변환됨 상호작용 모델링 - 데이터 및 업무활동에 대한 상호작용성을 CRUD 매트릭스로 표현 - 데이터 및 업무활동 모델에 대한 품질 점검 - Clustering을 통해 비즈니스 시스템 및 데이터베이스 정의 엔티티 관계(ER) 표기법 : UML이외에도 여러가지가 있음. - UML(Unified Modeling .. 2023. 10. 10.
728x90
반응형