cross-env 활용

npm run build 할 때, GENERATE_SOURCEMAP 관련 에러날 때.

MacOS에서는 잘 빌드되는데, Windows 에서 다음과 같은 에러가 날 수 있다.

GENERATE_SOURCEMAP’은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.

이는 package.json에 정의된 build 스크립트의 GENERATE_SOURCEMAP 부분이 Windows와 맞지 않기 때문이다. 따로 set 명령을 써야 한다.

"scripts": {
  "start": "react-scripts start",
  "build": "GENERATE_SOURCEMAP=false react-scripts build",
  "test": "react-scripts test",
  "eject": "react-scripts eject",
  "format": "prettier --write \"src/**/*.{js,ts,tsx}\""
},

간단하게 해결하려면 cross-env 를 사용하면 된다. npm install cross-env 한 다음, 위 스크립트를 다음과 같이 수정한다.

"scripts": {
  "start": "react-scripts start",
  "build": "cross-env GENERATE_SOURCEMAP=false react-scripts build",
  "test": "react-scripts test",
  "eject": "react-scripts eject",
  "format": "prettier --write \"src/**/*.{js,ts,tsx}\""
},

npm start 를 0.0.0.0 으로 bind 하기

npm start는 localhost 를 바인드하기 때문에, 외부에서 접속을 하지 못한다. 이를 0.0.0.0 으로 바인드하려면 HOST=0.0.0.0 이라고 환경변수를 설정해야 한다.
이를 위해 cross-env를 활용할 수 있다.

"scripts": {
  "start": "cross-env HOST=0.0.0.0 react-scripts start",
  "build": "react-scripts build",
  "test": "react-scripts test",
  "eject": "react-scripts eject",
  "format": "prettier --write \"src/**/*.{js,ts,tsx}\""
},

Written with StackEdit.

이미지를 PDF로 만들기 & PDF 합치기 등

1. Image를 pdf로 변환하기 
- 온라인에서 image를 pdf로 변환하는 툴은 많으나, 사용하지 말길 권한다. 중요한 정보가 인터넷에 누출될 가능성이 있다.
- 예전에는 ImageMagick 으로 이미지를 pdf로 변환할 수 있었으나, 이제 더 편리한 도구가 나왔다. 
- Python에서 동작 가능한 img2pdf 가 그것이다. 
- 설치 (Python이 설치되어 있다고 가정하면)

$ pip install img2pdf 

- 실행

$ img2pdf 1.jpg 2.jpg 3.jpg --pagesize A4 -o out.pdf 

2. PDF 병합/분할/회전하기
- pdfsam 이라는 툴을 사용하면 된다. 무료버전도 있으므로 유용하다. 
- 다운로드: https://pdfsam.org/ko/ 

nmcli: Network Manager의 CLI 명령 요약

Network Manager의 CLI 명령어인 nmcli의 주요 사용예를 정리함. 


1. 네트워크 인터페이스 보기 

$ nmcli con show

NAME                UUID                                  TYPE      DEVICE

Wired connection 1  8e2a801b-6074-30bc-9039-8f90d51ad28d  ethernet  eno2

tun0                d0a9ab3e-5373-44e4-8312-ee088c35cdae  tun       tun0


2. 고정 IP로 변경하기 

$ nmcli con mod "Wired connection 1" connection.autoconnect yes

$ nmcli con mod "Wired connection 1" ipv4.address 192.168.1.206/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 1.1.1.1"  ipv4.method manual

$ systemctl restart NetworkManager.service



3. Wifi 상태 확인

# wifi 상태 확인
$ nmcli radio wifi

# wifi 켜기
$ nmcli radio wifi on

# AP 리스트 보기
$ nmcli device wifi list
# AP 연결
$ nmcli device wifi connect <My_AP> password <Some_Password>

4. nmtui 를 이용하면 복잡한 명령어를 외우지 않아도 됨. 

설치
$ sudo apt install nmtui 


$ nmtui




OpenVPN 세팅하기

OpenVPN 네트워크를 구축한 경험을 정리했다. 

OpenVPN은 VPN(Virtual Private Network) 솔루션 중에서 가장 많이 사용되고 있다. OpenVPN은 상업용 제품도 팔고, 클라우드 서비스도 제공하지만, 오픈소스인 Community Edition도 제공한다. 

이 글은 OpenVPN Community Edition의 설치와 운용에 대한 내용이다. 

Ubuntu 16.04(Xenial)에 Python 3.9 설치하고 mod_wsgi 빌드하기

나는 몇년 전에 개발된 Django 기반의 웹 프로젝트를 인수받아 운영하고 있다. 

프로젝트의 규모가 꽤 크고 공공기관 고객도 꽤 있어서 여간 신경쓰이는 게 아니다. 그런데 어느날 다음과 같이 Python을 업그레이드하라는 경고 메시지가 나오기 시작했다. 

Cryptography 모듈이 다음 버전부터 Python 3.5를 지원하지 않는다는 통보이다. 공공기관들은 나름대로 보안 규칙이 있어서, 보안 결함이 발견된 모듈에 대해서 업그레이드를 해주어야 한다. 그래서 Python 버전을 올리고 Cryptography 모듈도 버전을 올리면 되는데, 그것이  그리 간단한 문제가 아니다. 

Django Form의 Validation

Django의 폼 검증(Form Validation)은 데이터가 클린(Clean)될 때 이루어진다. 이 과정을 커스터마이징하는 것은 검증의 여러 단계에서 가능하다. 이 과정에서 ValidationError 예외를 일으키는 식으로 검증의 실패를 표현한다. 

기본적은 검증은 validator를 통해 이루어진다. validator는 인자 하나를 받아 검증한 다음, 실패하면 예외를 발생한다. 이 validator는 각 필드에 대해 to_python()과 validate()를 실행한 다음, 호출된다. 

인기글