Dropbox가 2019년 3월부터 무료사용자에 대해 연결기기를 3대로 제한하는 정책을 시행함으로 유료 결제을 높이는 가장 좋은 선택을 하였지만, 나와 같은 라이트 유저에겐 월 10불이라는 금액이 부담되는 금액임은 틀림이 없다. 연결기기 제한을 풀 수 있는 2-3불정도의 요금제가 있었다면 고민없이 바로 유료 요금제를 가입했겠지만, 월 10불이라는 요금을 주고 사용하기에는 내가 사용하는 dropbox 서비스에 비해 비싸다는 생각이 머리속에서 계속 맴돌아 끝내 유료 요금제를 가입하지 않고 다른 클라우드를 알아보았지만, 우분투 환경에서 안정적인 클라우드 서비스는 Dropbox밖에 없는 현실이 안타까울 뿐이었다. 대안으로 찾은 것이 USB 포트를 가진 iptime 공유기(A1004NS)를 사용할 경우, rsyn..
'로또 번호 생성기'의 당첨번호를 매번 요청할 수 없기 때문에 버전 0.01은 파일로 저장하였고, 버전 0.02는 SQLite DB를 사용하였다. 데이터를 일반 파일과 DB를 모두 사용 가능하도록 아래와 같이 코딩을 하였다. C언어 오랜시간 사용했기에 위 이미지와 같이 파이썬 코딩 역시 C 스타일로 코딩을 하였는데, 클래스를 사용한다면 위 코드를 좀더 다듬을수 있을 것 같다는 생각에 아래와 계층 구조를 구성하였다. 최상위 인터페이스 클래스인 DataBase을 만들고 create / open / update 추상메소드를 갖고 있으며, 하위 클래스인 FileMGR, SqlMGR 클래스가 추상메소드를 저장 매체에 맞게 구현하면 좀더 나은 설계가 아닐까 싶다. 아주 단순하게 클래스 관계를 생각해보았지만, 스크립..
초기 버전의 '로또 번호 생성기'는 당첨번호를 DB가 아닌 파일로 저장하였고, SQLite를 사용하여 당첨번호를 파일인 아닌 DB에 저장하는 방식으로 변경하였다. 당첨번호를 파일에서 SQLite DB로 변경하는 과정에서 파일명을 변경하지 않아 기존 파일을 SQLite에서 읽었을 때 아래와 같은 에러가 발생하였다. 이것은 DB 파일이 SQLite 형식이 아니기 때문에 발생한 에러이며, SQLite에서 DB 파일을 읽기 전에 정상적인 DB 파일인지 확인할 필요가 있다. 만약 DB이 잘못된 파일이면 제거하고 다시 DB 파일을 생성해야 한다. 다행이 SQLite3 DB 파일은 첫 16바이트를 SQLite3 Magic Header를 갖고 있으며, 그 값은 아래 이미지와 같다. 파이썬에서 간단히 Magic Head..
SQLite는 임베디드 장비 또는 Serverless 환경에서 사용하는 경량화 DB로써, 동일 데이터를 파일로 처리하는 것보다 30%이상 좋은 성능을 보여준다. SQLite에 대한 자세한 설명은 아래 글을 참고하도록 한다. SQLite 개념/구조/멀티 DB 실사용기 목차 들어가면서 SQLite 특징 SQLite 이럴 때 사용 O SQLite 이럴 때 사용 X SQLite 아키텍쳐 SQLite Lock 개념 SQLite 트랜잭션 개념 부록) Oracle WAL 처리 방식 포팅할 때 겪었던 명령어들 SQLite 용례(실사용.. ehdvudee.tistory.com DB 서버가 필요없는 SQLite는 따로 설치가 필요없으며, 파이썬의 경우 SQLite 모듈은 기본 라이브러리에 포함되어 있어 DB 모듈을 추가로..
사내에서 SVN으로 소스 버전관리를 하고 있어 GIT은 거의 사용하지 않았으나, Python 공부하면서 만들어본 Toy Project 소스를 관리하기 위해 GitHub 계정을 생성하였다. GIT과 SVN의 차이는 아래 블로그에서 정리가 잘되어 있기에 아래 글을 참고하도록 한다. GIT 과 SVN의 개념 및 장단점 형상관리, 버전관리 GIT 과 SVN 을 이해하려면 먼저 형상관리(버전관리)에 대해 이해해야 한다. 프로젝트를 진행할 때 각자 업무를 나눠서 맡은 부분을 개발을 하게 되는데, 각자가 개발한 코드 혹은 문서들을 하나의 dzzienki.tistory.com 간단히 설명하면 svn은 중앙 서버를 중심으로 소스 관리가 이루어지는 반면, git은 로컬 저장소를 추가하여 Client 별로 개별 소스의 버전..
파이썬 기본 문법을 익히고, 파이썬 코딩에 익숙해지기 위해 간단한 앱을 만들어보기로 한것이 바로 로또 번호 생성기이다. 원래는 web application으로 만들고 싶었으나, 아직은 파이썬 웹프로그래밍을 공부하지 않았기 때문에 우선 윈도우 프로그램을 만들어보았다. 현재까지의 로또 당첨번호와 비교하여 특정 조건에 맞는 번호를 제외한 추첨번호를 추출하며, 로또 당첨번호를 파일 또는 SQLite DB에 저장할 수 있다. GitHub https://github.com/highgon2/BigHitLotto 개발도구 Python, SQLite 기능구현 동행복권 로또 당첨번호 관리 로또 회차 검색 로또 추첨번호 생성을 위한 필터링 기능 추가 Version 0.01 - 2020/12/01 파일로 당첨번호 관리 '로또..
파이썬을 사용하면 http 데이터를 요청하고 결과를 받아 쉽게 처리가 가능하다. 지금 만들고 있는 '대박! 로또' 앱도 동행복권의 web api를 사용하여 당첨번호를 파일 또는 DB에 저장하였다. 파이썬에서 http 데이터를 처리하려면 requests 모듈을 사용하며, requests 모듈에 대한 자세한 설명은 아래 글을 참고하도록 한다. Python :: 파이썬3 requests 모듈 살펴보기(설치, 사용방법 및 예제) Python3 requests 모듈 API를 사용할 때, 주로 사용하곤 하는 requests 모듈에 대해 살펴보려 합니다. 사용하는 방법은 매우 쉽습니다. 사용을 할때는 보통 HTTP 메소드(method, 또는 함수)의 GET 과 POST를.. hongku.tistory.com 동행복권..
zipfile 모듈은 zip, bzip, lzma 형식의 압축 파일을 처리할 수 있다. 하지만 각 형식을 처리하기 위한 모듈이 설치되어 있어야 한다. 그 이외의 압축 형식은 NotImplementedError 예외가 발생한다. zipfile 모듈의 자세한 설명은 아래 문서를 참고 하도록 한다. zipfile — Work with ZIP archives — Python 3.9.1 documentation zipfile — Work with ZIP archives Source code: Lib/zipfile.py The ZIP file format is a common archive and compression standard. This module provides tools to create, read, ..
GUI 앱이 실행될 때, 주모니터 중앙에 실행하려면 해상도 및 앱의 윈도우 크기를 계산하여 앱의 실행 위치를 설정한다. Tkinter는 geometry() 메소드를 이용하여 위치를 설정할 수 있으며, 단일 모니터를 사용하는 환경이라 Tkinter 기본 메소드인 winfo_screenXXX()를 이용하여 실행 환경의 모니터 해상을 알 수 있지만, 2개 이상의 모니터를 사용하는 환경이라면 winfo_screenXXX() 메소드는 가로 크기는 각 모니터의 width를 모두 합한 값으로 나오기 때문에, 이 메소드는 사용할 수 없다. screeninfo 모듈을 사용하면 각 모니터의 정보를 Monitor 클래스로 확인할 수 있다. screeninfo 모듈은 pip로 설치할 수 있으며, 아래 코드와 같이 간단히 특정..
Visual Studio Code Extension인 Hex Editor를 사용하기 전에 우분투에서 Hex Editor로 Bless를 사용하였으나, 우분투 20.04 환경에서 실행하면 앱이 행업되는 경우가 빈번하게 발생하고, 종료도 되지 않아 터미널에서 bless 프로세스를 강제로 종료시키는 경우가 너무 많이 발생하여 쓰지 못할 정도였다. 그래서 Bless를 대체할 앱를 찾아보다 우연히 설치한 Hex Editor 짧게 사용해본 후, 이것을 앞으로 사용하기로 하였다. MS에서 개발하여 배포한 Extension이라 완성도 높으면서 Bless 만큼 가볍고 인터페이스가 매우 심플하여 쓰기가 편하였다. 아래 이미지와 같이 특별한 기능은 없지만 기본 기능에 충실한 Hex Editor이다. Hex Editor를 보고..
우분투 18.04 버전부터 스왑 메모리를 파티션이 아닌 파일로 관리하기 시작하였다. 메모리가 16GB를 사용하고 있어, 스왑 메모리를 사용할 일이 거의 없어 제거하였는데, WPE를 빌드할 때 메모리를 엄청나게 사용하여 삭제한 스왑을 다시 할당하게 되어 스왑 설정을 간단히 정리하였다. 1. swap 메모리 삭제 스왑 메모리를 사용하지 않는다면, /etc/fstab 설정된 스왑 파티션을 제거하도록 한다. # sudo vi /etc/fstab /swapfile none swap sw 0 0 그리고 아래의 명령어로 swap 기능을 비활성화 시키고, swapfile을 삭제하도록 한다. sudo swapoff /swapfile sudo rm -rf /swapfile 2. swap 메모리 할당 swapfile을 삭제..
파이썬으로 AES encrypt / decrypt 수행하려면 crypto 모듈을 사용해야 하며, 이것은 pip로 설치가 가능하다. $ pip3 install pycryptodome crypto 모듈을 설치하려면 윈도우, 리눅스 환경 구분이 없이 모두 컴파일러가 설치되어 있어야 한다. 만약 컴파일러가 설치되어 있지 않다면 pycryptodome 설치시 에러가 발생한다. 윈도우에서 컴파일러 설치는 아래 MS 홈페이지에서 MS Build Tools 2015 버전을 다운받아 설치할 수 있다. Microsoft Build Tools 2015 Microsoft Build Tools 2015는 관리되는 응용 프로그램 빌드에 필수적인 도구를 제공합니다. www.microsoft.com 우분투는 개발 패키지인 build..
Stacer는 우분투 시스템 관리의 끝판왕이라고 부를수 있을 정도로 많은 기능을 제공한다. 시스템 모니터링은 기본이고 BleachBit 앱이 제공했던 불필요한 시스템 파일 정리 그리고 데몬(프로세스) 및 시작 앱(프로그램) 등을 관리할 수 있다. stacer는 우분투 20.04 버전부터 기본저장소에 등록되어 PPA 추가 없이 설치가 가능하다. $ sudo apt install stacer stacer는 시작프로그램 및 데몬을 관리할 수 있으며, 실행되고 있는 프로세스을 확인하거나 종료시킬 수 있다. 우분투에 설치된 패키지를 확인할 수 있으며, 저장소 추가 삭제도 가능하다. 그리고 우분투 tweak 기능도 제공하고 있다. 이런 많은 기능을 제공하지 있지만, 위의 기능보다는 불필요한 시스템 파일을 정리할 때..
작업 공간을 효율적으로 사용하는 것을 중요하게 생각하면 터미널 에뮬레이터로 Tilix를 추천한다. Tilix는 화면을 분할하여 여러 작업 공간을 생성할 수 있다. $ sudo apt install tilix $ sudo update-alternatives --config x-terminal-emulator 우분투 기본저장소에 등록되어 있어 PPA 추가 없이 설치가 가능하며, 우분투 디폴트 터미널 에뮬레이터로 설정하기 위해 update-alternatives 사용하여 gnome-terminal에서 tilix로 변경하였다. 우분투 패키지 버전관리 - update-alternatives 우분투는 update-alternaitves를 사용하여 패키지(명령어)에 대한 디폴트 버전이나 경로를 설정할 수 있다. 우분..
우분투 12.04 버전에서 노틸러스가 크게 변경된 이후로 파일 관리자로 네모를 사용하고 있다. GNOME Shell 환경에서는 네모보다는 노틸러스가 디자인이 좋지만 사용하는 기능이 손에 익숙하지 않아 네모를 사용하고 있다. 네모는 PPA 사용하여 최신 버전을 설치할 수 있었지만, 우분투 20.04 버전의 네모 PPA를 찾지 못하여 우분투 기본저장소의 네모를 설치하도록 한다. $ sudo apt install nemo nemo-filerolloer 우분투 18.04 버전을 사용한다면, 아래의 PPA를 등록하여 네모 설치가 가능하며 nemo-dropbox 플러그인을 설치할 수 있다. $ sudo add-apt-repository ppa:embrosyn/cinnamon $ sudo apt install nem..