분류 전체보기 89

[Python] 5. 파일 자동 백업 소프트웨어 만들기

QThread 클래스 사용 PyQt5 모듈로 위젯 창을 만들고 화면에 띄우면 이 어플리케이션은 루프를 돌면서 사용자의 액션을 감지하여 이벤트에 대한 처리를 한다. 이 파일 자동 백업 소프트웨어는 필요한 값들을 입력하고 아래 사진의 Run버튼을 누르면 파일 백업 기능을 수행하는데, 이때 스케쥴러 모듈을 이용하여 반복문을 돌면서 백업 스크립트를 실행하게된다. 이런 구조로는 백업 기능은 제대로 하긴 하지만 반복문으로 인해 계속 돌기 때문에 스케쥴러가 실행한 함수의 처리가 끝나야지만 요소의 액션 이벤트가 처리가 된다. 즉, 백업 함수가 실행되는 동안 다른 버튼 같은 요소의 이벤트를 실시간으로 처리할 수가 없는 구조인데 이 문제를 PyQt5의 QThread 클래스를 사용하여 쓰레드 환경을 구축하여 해결하였다. T..

Python 2022.01.24

[Python] 4. 파일 자동 백업 소프트웨어 만들기

PyQt5 모듈 추가 PyQt5는 파이썬의 GUI 라이브러리이다. Qt 애플리케이션 프레임워크를 위한 Python 바인딩 세트이며 Windows, macOS, Linux, iOS 및 Android를 포함하여 Qt가 지원하는 모든 플랫폼에서 실행된다고 한다. PyQt5 모듈을 이용해 cmd창에서 실행했던 백업 스크립트를 GUI 환경에서 백업 기능을 사용할 수 있도록 변경하였다. PyQt5로 GUI를 구성하기 위해 QtWidgets 모듈 안에 있는 해당 클래스들을 import하였다. 위 코드가 GUI창을 띄우기 위한 코드이다. 189LINE에 __name__ 변수는 현재 모듈의 이름이 저장되는 내장 변수이고 기본 값은 __main__이다. 창을 띄우기 위해서 QApplication 클래스를 생성해야하는데, ..

Python 2022.01.24

[Tistory] 1. 티스토리 블로그 커스텀하기

티스토리를 시작한 이유 처음 개발 블로그를 쓰겠다고 다짐 했을 때 어떤 웹 블로그 서비스를 이용할까 했는데, 딱 떠오르는게 티스토리였다. 이유는 구글링하면서 제일 자주 접했던 블로그기 때문이다.. 단순한 이유로 티스토리를 선택하고 그냥 기록하고 싶은 것들을 끄적일 용도로 티스토리를 시작했는데 점점 블로그 쓰는게 재밌어지고 그만큼 개발 공부에 흥미도 더 생겼다. 그냥 막 쓰던 글들도 언제부턴가 포스팅 형식이 정해져 하나의 템플릿이 있는 것 처럼 글을 쓰게 되고 하나씩 채워지는 글들을 보고 성취감을 느끼게 됐다. 다양한 커스텀 기능 티스토리 블로그를 사용하면서 느낀건데 이 웹 서비스는 참 다양한 설정을 제공한다. 글 노출 개수부터, 노출 형식 등등.. 다른 웹 서비스도 이런 지는 모르겠지만 이런 매력 때문에..

CustomTistory! 2022.01.18

[AngularJS] 13. AngularJS를 이용한 Directive 생성

Directive? Directive란 HTML Compiler가 해석할 수 있는 AngularJS에서 제공하는 특정한 행위를 가진 요소를 말함. 따라서 AngularJS에서 제공하는 지시어(Directive)를 통해 HTML을 확장하는 것이다. AngularJS에서 기본적으로 제공하는 디렉티브로 HTML을 확장할 수도 있지만, AngularJS는 디렉티브를 별도로 만들어 관리할 수 있는 기능도 제공하고 있다. 예시 지시어를 추가, 관리하는 방법은 모듈이 제공하는 directive함수를 정의하면 된다. 첫번째 인자에 추가할 디렉티브의 이름을 Camel Case 표기법으로 넣고 두번째 인자에 디렉티브가 수행할 기능을 정의할 함수를 넣으면 된다. 추가한 디렉티브는 HTML에서 여러가지 표기법으로 사용 가능 ..

AngularJS 2022.01.16

[Python] 3. 파일 자동 백업 소프트웨어 만들기

filedialog 모듈 추가 이전에 작성했던 스크립트에서 편의성을 더하기 위해 filedialog 모듈을 추가하였다. filedialog 모듈이란 파일 탐색기 창을 띄워 os내의 디렉토리나 파일에 접근하기 위한 클래스와 함수를 제공하는 모듈이다. 이전 방식은 백업 파일을 저장할 경로와 백업할 파일이름을 일일이 텍스트로 입력했다면, filedialog 모듈을 이용해 파일탐색기를 열어 해당 변수들의 값을 가져올 수 있게 되었다. 사용한 filedialog모듈 함수 askdirectory() - 디렉토리를 선택하면 디렉토리 경로를 가져오는 함수 askopenfilename() - 파일을 선택하면 디렉토리 경로와 파일 이름을 가져오는 함수 initialdir 인자는 파일 탐색기를 띄웠을 때 디렉토리 시작 위치..

Python 2022.01.16

[Python] 2. 파일 자동 백업 소프트웨어 만들기

모듈화 스크립트를 작성하다보니 백업 기능을 수행하는 함수 안에 파일 복사나 메일 보내기 같은 기능들이 모든게 들어있다보니 지저분하다는 생각이 들어 기능을 수행하는 부분들을 나눠 모듈화를 진행하였다. makeBackupDir() - 백업 디렉토리를 생성하는 함수 copyInBackupDir() - 백업 디렉토리에 백업 파일을 복사하는 함수 sendMailBackupFile() - 백업 파일을 나에게 메일을 보내는 함수 이렇게 핵심 역할을 하는 기능들을 나눠 모듈화를 하면 유지보수와 단위 테스트하기에 좋을 것이다. 사용성 확대 저번 포스팅에서 작성했던 스크립트에는 백업을 하기 위해 필요했던 값들을 하드코딩하여 정적으로 기능이 동작되게 작성했다면, 이번에는 사용자가 어디에 백업할 것이고 무엇을 백업할 것인지 ..

Python 2022.01.10

[Docker] 13. 도커(Docker) Private 레지스트리 서버 구현

Private Registry? 도커에서 기본적으로 사용되고 있는 레지스트리는 공식 사이트인 도커 허브이다. 이미지를 푸시하거나 관리할땐 기본적으로 도커 허브에서 관리가 되고 있는데 이는 공개적인 사이트라 누구나 접근할 수 있다. 자체 서버에서 구현을 하거나 개인적으로 개발환경을 구성하고 싶을때 Private Registry 서버를 구현하여 개인 저장소에 이미지를 관리하면된다. Private Registry 구현방법 Private Registry 구현 방법 또한 이미지를 다운 받아 registry 서버를 만들면 된다. docker run -d -p {port}:5000 --name {containerName} registry #registry의 기본 포트는 5000번이다. #이미지의 기본 포트는 dock..

Docker 2022.01.03

[AngularJS] 12. AngularJS로 게시판 만들기(4)

BOARD UPDATE 글 수정 기능을 추가하였다. 전에 만들었던 글 작성 jsp를 가져와 수정 페이지를 만들었는데 크게 달라진건 없다. 수정할 글의 데이터들을 가져와 저장을 하면 해당 글의 db가 업데이트가 되면서 글 수정이 되는 것이다. 수정 페이지에서 사용하는 컨트롤러이다. ajax로 수정할 글의 데이터를 가져와 $scope에 데이터들을 저장한다. 그 후 수정이 끝나 저장을하면 updateSubmit 함수가 호출되어 수정 저장이 된다. 저장이 성공적으로 처리되면 수정했던 글의 상세보기로 이동된다. 수정 서비스 로직도 글 작성 로직과 크게 다른게 없고 어떤 글을 수정할지에 대한 부분만 추가되었다. 이 서비스 로직이 굉장히 지저분하다. 뷰에서 받은 데이터들을 가져와 유효성 검사를 거치는 로직인데 CRU..

AngularJS 2022.01.02

[Python] 1. 파일 자동 백업 소프트웨어 만들기

업무 자동화의 필요성 회사에서 업무를 하거나 집에서 작업을 할 때에 주기적으로나 버전별로 파일을 백업을 해야될 때가 있었는데, 수동적으로 백업을 하다보니 귀찮아지는 경우가 생겨 백업을 제대로 안하는 일이 생겼다. 그렇게 자동 백업 스크립트를 만들기로 하고 스크립트를 작성하였다. 스크립트 작성 처음에 생각했던 기능들은 대략 이 정도이다. 1. 백업하고자 하는 파일을 특정 디렉토리에 복사 붙여넣기하여 백업하는 기능 2. 1에서 백업했던 파일을 자기 자신한테 메일을 보내 백업하는 기능 3. 이 1, 2의 작업을 일정 주기마다 실행할 수 있게하는 기능 이 세가지의 기능을 생각해두고 외부, 내부 모듈을 사용해 스크립트를 작성하였다. 1~10LINE 기능을 구현하는 데에 필요한 모듈들을 import한 부분이다. o..

Python 2021.12.31

[Docker] 12. 도커(Docker) 이미지 PUSH

PUSH? 도커에선 이미지를 원격 저장소에 PUSH하여 언제 어디서든 원격 저장소에 저장되어 있는 이미지를 불러와 사용할 수 있다. 저번 포스팅에서 빌드한 nginx 이미지를 Docker Hub이라는 원격 저장소에 푸시하여 이미지를 관리할 것이다. DOCKER PUSH https://hub.docker.com/ Docker Hub Container Image Library | App Containerization Build and Ship any Application Anywhere Docker Hub is the world's easiest way to create, manage, and deliver your teams' container applications. hub.docker.com docke..

Docker 2021.12.28