IT 50

스벨트에서 readable만 노출하기(Svelte - writable to readable)

나는 특정 모듈에서 `store`의 `writable`은 이용하되, `readable`인터페이스만 노출하고 싶었다. 데이터 쓰기 인터페이스를 함수나 커맨드 형태(MVVM 패턴)로만 제공할 수 있어야, 프로젝트가 커졌을 때, 문제가 되지 않기 때문이다. # Example - convert `writeable` to `readable` import {writable} from 'svelte/store' // writable의 업데이트 기능은 이 모듈에서만 사용(export하지 않음) const _now = writable(Date.now()) // `export const 변수명 = readable(값)`과 같은 효과 export const now = {subscribe: _now.subscribe} // ..

IT 2022.10.10

NestJS로 쉽게 개발하는 방법

개요 NestJS는 express 혹은 fastify를 기반으로 하는 마이크로 웹프레임워크이다. 개발 언어는 Typescript이다. 마이크로 프레임워크이다보니, 풀스택 프레임워크에 비해 구조를 자유롭게 가져갈 수 있다. 근데 어느 정도의 컨벤션을 정하지 않으면, 오히려 그 자유가 큰 단점이 되버릴 수 있긴 하다. 하여 NestJS의 훌륭한 라이브러리 기반으로 쓸데없는 고민은 줄이고, 높은 생산성을 내는 방법에 대해 소개하고자 한다. 팁1: NestJS ^7.5 기왕이면 7.5 이상을 사용하는 것을 추천한다. 2020년 8월 23일 7.5가 릴리즈되었는데, NestJS CLI에 매우 강력한 기능이 추가되었다. Generate resource 추가된 커맨드는 다음과 같다. nest g res 기능 소개 m..

IT 2021.03.27

기술 스택 전면 교체와 고려해야 할 사항

교체 배경 현재 다니고 있는 회사에서 Django + React로 개발 중이던 프로젝트를 NestJS + Angular로 대체하는 경험을 했다. 참고로 인프라도 AWS + github에서 Azure Devops로 이전했다. 사실 상 처음부터 다시 만드는 결정을 한 셈인데, 이 변경 배경엔 시니어의 교체가 있었다. 참고로 당시 회사엔 주니어 레벨 개발자 3명과 백엔드 경력직 개발자 1명, 프론트엔드 경력직 개발자 1명, 주니어 퍼블리셔 1명으로 기술 스택과 밀접한 연관이 있는 사람은 6명 정도였다. 개발자들 사이에선 상당히 큰 반발이 있었지만, 경력직 개발자들이 교체가 됐고, 기술 스택도 자연스레 교체되었다. 어쩌면 기존 경력직들을 교체하기 위한 결정이었을 수도 있고, 순전 시니어의 개인 취향이 반영된 것..

IT 2020.08.01

DB의 중복 값 지우기

한 테이블에 유니크조건을 추가하고 싶은데, 기존 데이터가 유니크조건에 위배되어 줄 수 없는 상황이었다. 굳이 유니크조건을 주지 않고 처리하는 등 해결방법은 많았지만, 잘못된 설계로 id만 다른 값이 많이 들어가 있었으므로, 중복된 값을 제거해주는 방향을 택했다. 중복된 데이터 예시 my_table id col1 col2 col3 value 1 a 가 v1 100 2 a 가 v1 90 3 b 가 v1 100 4 b 가 v1 100 5 a 나 v1 100 6 a 나 v1 100 7 a 나 100 8 a 나 100 위 테이블을 보면 id만 다르고 똑같은 값이 두 개씩 들어있다. 요구사항 이를 다음과 같이 id가 큰 값만 남겨두고 중복되는 것은 모두 삭제하고 싶다. 반영된 요구사항 예시 my_table id c..

IT 2020.02.27

EC2 deploy server: 프로세스를 백그라운드에서 실행시키기

EC2에 원격 접속하여 sudo node app.js 등의 명령어로 서버를 켜둬봐야 원격접속을 끊는 순간 서버가 꺼지기 일쑤다. 어떻게 해결해야할까? node라면 pm2 등을 이용한다 node의 경우는 forever, pm2 등 다양한 패키지를 제공한다. 이를 사용하면 프로세스가 충돌나서 뒤져도 다시 실행시킬 수 있는 안정성을 보장 받기 때문에, 가장 올바른 방법이다. 해당 패키지들은 sudo npm install -g "패키지 이름"으로 설치가 가능하다. 해당 패키지로 앱을 실행시킨 뒤, exit 명령어를 입력해 원격접속을 종료하면 아마 프로세스가 계속 살아있을 것이다. 패키지 없이 실행하기 하지만 npm 업데이트 등의 이슈 발생 혹은 node가 아닌 다른 서버의 경우라면 어쩔텐가?(물론 버전 호환 문..

IT 2019.10.15

apache2 stop, start, restart in Linux

이전에 django를 apache2로 배포했던 적이 있다. 해당 프로세스를 죽이고, 다른 프로세스를 사용하게끔 해달라는 요청이 있었는데, 아파치2를 정상 종료 시키는 방법을 메모해 둬야겠다. apache2 중지 시키기 sudo service apache2 stop혹은 sudo /etc/init.d/apache2 stop을 터미널에서 입력하여 종료시킬 수 있다. apache2 시작 stop대신 start를 적어주면 된다. apache2 재시작 restart를 대신 적어주면 된다.

IT 2019.10.15

Django와 React 연동

Django와 react를 연동한다는 의미 Django는 웹 프레임워크이고, react는 프론트엔드 라이브러리이다. 사용의도의 핵심은 '유지보수'에 있다고 본다. 프로젝트 최종 구조 깊이 3레벨까지만 작성하였다 /django-react /backend /backend /앱이름 /manage.py /frontend /config /node_modules /public /scripts /src package.json yarn.lock Django & react 설치 선행 과제 가상환경 활성화 및 django 설치 yarn 설치 $ mkdir django-react $ cd django-react $ django-admin startproject backend $ npx create-react-..

IT 2019.09.29