반응형

전체 647

pm2를 centos7에서 데몬(daemon)으로 띄우기

systemd에 pm2를 등록하는 방법은 간단하다.pm2에서 제공되는 커맨드인 startup을 이용하면 바로 등록된다.$ pm2 startup이렇게 하고 공식문서에 쓰여진 대로 하면 되는 것 같다.https://pm2.io/docs/runtime/guide/startup-hook/그런데 내 경우는 docker 내부에서 위 명령어를 수행했다.docker는 기본적으로 root로 실행되기 때문에 위 문서에 나온 sudo 어쩌구 하는 명령어가 안나오고 모든 과정이 자동으로 샐행되었다. 문제는 이 상태로는 systemctl start 가 실패했다.잘 살펴보니 pm2 startup을 실행해서 자동생성된 service 파일의 User 부분이 undefine로 되어 있었다.undefine -> root 로 바꾸니 해결..

카테고리 없음 2020.06.02

클래스 컴포넌트와 함수 컴포넌트에 대한 간단한 비교 정리.

예전처럼 공들여 블로그 글을 쓰기가 귀찮다. 그래서 대략적으로만 정리하려 한다.리액트의 고전적인 클래스 컴포넌트와, 훅의 등장으로 새롭게 관심 받는 함수형 컴포넌트를 비교하기 위해 글을 쓴다. 보통 함수형 컴포넌트로 페이지를 만들지만 많은 문서와 라이브러리가 클래스형 컴포넌트를 지원한다. 따라서 이 둘을 모두 알아야할 필요가 있다.기본적으로 두 차이를 이해하려면 적어도 전통적인 함수와 클래스의 차이점을 알아야할 것이다. 우선 리액트에서 페이지를 렌더링하는 방법은 클래스의 경우 render 메소드를 사용한다. 반면에 함수형 컴포넌트는 함수 자체가 render를 담당한다고 보면 된다.둘 다 리턴 값으로 페이지의 모습을 표현하게 된다.함수형 컴포넌트function FuncComp() { return ( Hel..

IT 운용 체제 변화를 위한 데브옵스(DevOps) 도서 후기

언제서 부턴가 데브옵스(DevOps)라는 말을 자주 듣는다. dev(development) 와 ops(operation)의 합성어다.사실 전통적인 개발방식은 개발(dev)와 운용(ops)의 분리다. 이런 합성어가 생긴 배경에는 전통적인 방식의 한계때문이다.이 책은 DevOps를 저자의 실무적인 경험을 바탕으로 하나하나 알려준다.vagrant, Ansible과 같은 도구와 Jenkins와 같은 유명한 도구의 운용방식에 대한 실전적인 예제도 곁들여 있어서 쉽게 따라할 수 있게 구성되었다. 단, 항상 버전업 되는 생태계에서 실제 방식과 약간의 오차정도는 직접 수정하여 적용해야할 것이다.또한 github, slack, jenkins등을 이용한 지속적 통합, 지속적 딜리버리를 통해 전통적인 방식에서 탈피하여 빠른..

관심사/도서 2020.03.31

성능을 위한 다양한 시도

성능(performance) 최적화는 많은 개발자들이 관심갖고 이를 위해 다양한 방법을 시도한다.성능은 구체적인 코드가 아닌 추상적인 결과물이다. 코드 + 알고리즘 + 하드웨어 + 인프라의 구성 방식 + 다양한 설정(configure) 및 환경에 따라 셀 수 없이 많은 변수가 생긴다.소프트웨어 공학자들은 알고리즘을 통해 서버 관리자는 인프라 또는 DB 모델링, 하드웨어 등을 통해서 시도할 수 있다.완벽이란 있을 수 없지만 그래도 개발자들은 지속적으로 최적화를 위해 노력한다.기본적으로 어떤 언어를 사용하느냐에 따라서도 성능의 차이가 생긴다. 웹이라면 node 서버 또는 django나 기타 다른 프레임 웍 등 다양한 선택지가 있고 성능과 개발 시간은 보통 반대로 간다고 보면된다.일반적인 수치로 성능을 비교할..

리액트에서 리덕스로 미디어 쿼리 구현하기

기록용...리액트에서 대량의 리스트 구현시 성능 최적화를 위해 react-virtualized를 사용 중 모바일과 데스크탑 화면 전환시 props로 전달할 height , width를 반응형으로 구현할 방법을 생각하다 다음과 같은 글을 찾음.https://stackoverflow.com/questions/35073669/window-resize-react-redux/35075190#35075190분명 react-virtualized 내에서 해결하는 방법이 있을 거라 짐작하지만 위 내용도 흥미로워서 기록.답변자가 제대로된 테스트를 하지는 않았으나 리덕스 스토어에 스크린 사이즈를 기록하여 상태변화시 앱의 상태를 변화시킨다는 내용.실제 스크린 사이즈가 변화될 때 직접 변화되는 상태 값에 접근하는 것이 아닌 복..

신념 초심

2020 원더키디의 해다.어린 시절 만화를 보면서 2020년은 참 까마득하게 먼 미래였다.그런데 지금 미래가 현재가 되어있다. 더 먼 미래를 바라봐야할 시점이다.2020년, 시작이 불안하다. 코로나(우한폐렴), 한국의 정부는 곧 종식된다고 여러번 발표를 해왔지만, 오늘도 역시 확진자가 늘어나고, 전 지구는 한국의 정부 발표와 반대로 돌아감을 직감한다.모든 개인의 개성과 생각처럼 이 바이러스를 대하는 방식도 가지각색이다.다 나름 일리가 있다고본다.난 이 사태가 가볍지 않음을 느끼는 부류다.그리고 나의 삶에 대해서 생각해본다.10여년 전 이 블로그를 개설했다. 처음엔 지적 호기심으로 글을 쓰기 시작했다. 어떤 지향점도 목표도 없었다.지적 호기심 그 자체가 목표였던 것 같았다. 그리고 10여년 간 많은 일들이..

일상 2020.03.18

2020년 1월26일 새벽 1시 40분

이렇게 글을 쓰는 이유는 같은 실수를 반복하지 않기 위해서다.최근 며칠동안 골머리를 썩이는 문제가 있었다. CORS(Cross Origin Resource Sharing) 관련한 문제인데 분명 한달전에는 쉽게 넘어간 문제였다.문제의 발단모든 발단은 Centos8로 부터 시작되었다. 2달전 Centos8이 배포되고 podman이라는 컨테이너 기술을 지원한다는 것에 큰 흥미를 느꼈었다. docker라는 강력하고 숙성된 컨테이너 기술이 있고 현재 사용중이었지만, podman의 rootless지원과 데몬(systemd) 수준이 아닌 kernel레벨인가?에서의 구동 방식이었다. 도커의 경우 데몬으로 돌아가기 때문에 데몬이 죽으면 모든 컨테이너가 죽게된다. 또한 도커 방식이기 때문에 rootless가 아니다. 반면..

기타개발/일반 2020.01.26

파이썬 pyautogui를 이용한 업무자동화

업무자동화를 하면 1당 100의 효율로 쉽게 일을 처리할 수 있는 일이 많다. 예를들어 메일을 발송하는데 똑같은 내용을 수십명에게 보낼 경우 처럼 반복적인 일을 할 때 더욱 그렇다.파이썬의 pyautogui라는 패키지를 사용하면 이런 반복적인 작업을 쉽게할 수 있다. 물론 작업의 성격에 따라서 안되는 것도 있지만, 예전에 사용하던 매크로 프로그램이 할 수 있는 일들은 대부분 다 할 수 있다.참고로 pyautogui는 2014년도에 처음 release되었다.pyautogui의 기본적이 기능을 익히면 응용은 대단히 쉽다. 물론 파이썬을 조금이라도 안다면 말이다.이 패키지가 가지고 있는 함수를 먼저 알아보자.주요함수position : 마우스 커서의 위치좌표 (*모니터 스크린 왼쪽 위가 좌표가 (0, 0)으로 ..

파이썬 웹크롤링의 기초(1) urllib

웹에는 정말 수많은 데이터가 존재합니다 그리고 현 시점에서는 수 많은 사람들이 웹 상에서 데이터를 뽑아내고 있죠. 마치 금광에서 금을 캐는 것 같은데 다른 점이라면 웹 상의 데이터는 고갈되지 않는 다는 점입니다. 이렇게 시간이 갈 수록 점점 많아지는 데이터는 축척될 수록 빅데이터로서 더 가치있게 되겠죠.데이터의 중요성을 알기는 하지만 어떻게 뽑아내야할지 모른다면 낭패입니다.수작업으로 하는 것은 한계가 있고 업체를 이용하자니 장기적인 플랜이라면 비용이 생각 이상으로 들 수도 있구요.이 강의는 웹크롤링 강의로 웹 크롤링을 배우고자 하시는 분들을 위한 강의며 파이썬을 이용합니다. 파이썬의 기초에 대한 강의는 인터넷 상에 많이 있으니 어렵지 않게 배우실 수 있습니다. 본인의 블로그 역시 파이썬의 기초에 대한 강..

파이썬(python) pip 명령 옵션 활용

pip install을 통해 많은 패키지를 설치해 왔을 것이다. 하지만 pip을 좀 더 활용하면 편리한 개발환경을 만들 수 있다. 보통 프로젝트가 커지면 가상환경을 많이 사용한다. (가상환경에 대한 정보가 필요하시다면 이 블로그의 387번 글을 참고하세요.)pip을 제대로 활용하면 가상환경 설정시 자신의 개발환경에 맞고 필요한 패키지를 한번에 설치할 수 있다. 버전역시 골라설치할 수 있다.이렇게 하는 이유는 다들 아시겠지만 같은 패키지라도 버전에 따른 의존관계가 변하거나 버그등의 문제가 있을 수 있기 때문이다. 따라서 프로젝트를 제대로 관리하는 첫번 째는 개발환경을 항상 동일게 유지하는 것이라 할 수 있겠다.이제부터 pip에 대한 정리를 할 것인데 유용한 정보가 되길 바란다.pip installpip i..

반응형