전체 글
-
생산성 향상을 위한 모노레포 도입기R-WMS 2022. 8. 7. 21:25
모노레포의 도입 이유 먼저 모노레포란 두 개 이상의 프로젝트에 동일한 코드가 적용될 때 효율적인 프로젝트 구성을 위해 개발된 전략이다. 내가 개발하고있는 R-WMS 프로젝트는 다음과 같은 구조로 버전관리를 하고 있다. 나의 개발상황 자사 어드민(R-WMS ADMIN) 도메인과 고객사(R-WMS WEB) 도메인 두개의 레포지터리를 멀티레포로 따로 관리하고 있는데 개발을 하다보니 두 도메인이 사용하는 데이터가 같고 때문에 설계되어 있는 API 로직이 90% 이상 같은 로직을 사용하고 있다. 현재 각 파트에서 맡아 진행하는 업무가 있어 부득이 하게 프론트 개발을 혼자 하게되었는데 두 가지 프로젝트에서 API 로직이 거의 같음에도 불구하고 레포지터리가 따로 관리되어 만에 하나 API 로직이 수정된다면 수정 작업..
-
react-hook-form 을 통한 쉬운 form 양식 핸들링R-WMS 2022. 8. 7. 19:08
프로젝트의 구성상 테이블이 많다고 했었는데, 이런 테이블에 뿌려질 데이터를 조회하는 UI를 제공하기 위해서 많은 조건들이 필요하다. 예를 들면 고객사 상품명 상태 상품코드 카테고리 규격정보 유효기간 등등 대부분 페이지에서 조건이 3가지 이하인 경우가 없을 정도다. 일반적으로 회원가입 페이지나 로그인 페이지의 양식을 개발하는데 많이 쓰이는 react-hook-form 이지만 내가 개발해야하는 검색 페이지에서 폼 태그 안에서 사용되는 필드값이 많기때문에 일일히 state로 관리하는 것보다 react-hook-form을 사용했을때 코드량과 코드정리가 깔끔하게 할 수 있기 때문에 react-hook-form을 사용하였다. 기본 사용법에 알아본 포스팅이 있으니 아래 첨부 React - react hook form..
-
react-table v7 도입R-WMS 2022. 8. 7. 18:53
React Table 도입 이유 R-WMS 프로젝트의 성격상 서비스 사용자는 입출고 현황의 목록이라던지, 재고 현황 등 많은 데이터를 리스트로 보여줘야하는 UI가 대부분이다. 때문에 table을 많이 사용하게 될 것인데, 페이지 마다 다른 데이터를 붙여 테이블에 간단히 뿌리는 작업이라면 컴포넌트를 직접 개발해도 되겠지만 테이블 안에 부수적인 기능이 들어가는 페이지도 있을것이라는 점과 직접 개발했을때의 퀄리티로 모든 테이블의 작업을 패턴화하여 사용하는 개발을 하는 공수를 생각했을때 이미 이런 고민을 모아 만들어진 라이브러리를 쓰는것이 좋겠다는 생각에 React Table을 사용하게 되었다. React Table은 이런 테이블 작업을 깔끔하게 패턴화해서 사용 할 수 있을 뿐만 아니라 Headless UI 개..
-
프로젝트 개요와 구성R-WMS 2022. 8. 7. 18:34
오늘회 러쉬 자사 물류창고 프로세스 전체를 통합관리 하기위한 솔루션으로 입고, 출고 재고관리 등을 통하여 재고를 관리/추적하여 물품이 어디에 있는지 파악하고 재고에 대한 가시성을 제공하는 서비스 도메인 해당 프로젝트는 자사 물류팀 또는 관련 팀에서 사용 할 목적으로 사용될 어드민 도메인과 오늘회 러쉬 서비스를 사용하게될 고객사를 위한 도메인으로 나뉜다. 따라서, admin과 web 두개의 레포지터리를 관리한다. 프로젝트 세팅 1. 프레임워크 Next.js 를 사용하며 Typescript 를 통해 개발 코드의 생산성을 높이고 에러를 사전에 방지하고자 했으며, 프로젝트 특성상 어드민 레이아웃의 화면으로 개발이 될 것이라 React Bootstrap의 UI 컴포넌트를 사용한다. 2. 스타일링 기존 풀필먼트 ..
-
객체 지향 프로그래밍 입문 #3카테고리 없음 2022. 8. 7. 17:03
# 상속 상위 클래스의 기능을 재사용, 확장하는 방법으로 활용한다. 상속을 통한 재사용의 단점 - 상속받는 하위 클래스가 많을 수록 상위 클래스 변경이 어렵다. - 클래스가 개수가 많아진다. - 상속을 오용 할 수 있다. # 조립 상속의 단점을 해결하기 위한 방법으로 조립(Composition) 방식을 사용 할 수 있다. public class FlowController { private Encryptor encryptor = new Encryptor(); // 필드로 조립 public void process() { ... byte[] encryptedData = encrytor.encrypt(data); ... } } 조립의 장점 - 여러 객체를 묶어서 더 복잡한 기능을 제공 할 수 있다. - 보통 필..
-
객체 지향 프로그래밍 입문 #2개발 2022. 8. 7. 16:36
# 다형성 (Polymorhpism) - 여러(poly) 모습(morph)을 갖는 것 - 객체 지향에서는 한 객체가 여러 타입을 갖는 것 - 즉 한 객체가 여러 타입의 기능을 제공 - 타입 상속으로 다형성 구현 # 추상화 (Abstraction) - 데이터나 프로세스 등을 의미가 비슷한 개념이나 의미 있는 표현을 정의하는 과정 - 추상화를 통해 변경에 용이한 코드 작성을 유도 추상화 시도 시점 추상화는 의존 대상이 변경하는 시점에.. - 아직 존재하지 않는 기능에 대한 이른 추상화는 잘못된 추상화 가능성을 높이고, 복잡도만 증가 시킬 우려가 있다. - 실제 변경/확장이 발생할 때 추상화를 시도 한다. - 추상화를 잘하려면 구현한 이유가 무엇 때문인지 생각해야 한다. // 초기 주문 서비스 Class p..
-
객체 지향 프로그래밍 입문 #1개발 2022. 8. 7. 15:32
최범균 개발자의 '객체 지향 프로그래밍 입문' 강의 학습 내용을 담고 있습니다. 객체 지향 프로그래밍 입문 - 인프런 | 강의 잘 하는 개발자가 되기 위해서는 유연한 코드를 작성할 줄 알아야합니다. 객체 지향을 이용해서 변경하기 좋은 유연한 코드를 만드는 방법을 알아보세요., - 강의 소개 | 인프런... www.inflearn.com # 객체 객체의 핵심은 기능을 제공하는 것이다. - 객체는 제공하는 기능으로 정의 - 내부적으로 가진 데이터로 정의하지 않음 예시) 1. 회원객체 - 암호 변경하기 기능 - 차단 여부 확인 하기 기능 2. 소리 제어기 - 소리 크기 증가하기 기능 - 소리 크기 감소하기 기능 기능 명세 - 메서드를 이용해서 기능 명세 - 이름, 파라미터, 결과로 구성 메시지 - 객체와 객체..
-
본 카테고리는R-WMS 2022. 7. 15. 18:16
창고관리 시스템: WMS 를 개발한 히스토리를 담고 있습니다. 개발의 전반적인 일정 및 이슈에 대해 기록하고 학습합니다.