본문 바로가기

분류 전체보기219

Oracle Cloud 방화벽 설정 (http/https 특정 포트 열기) 오라클 클라우드에서 VM Instance를 Web server에 활용하기 위해서는 http/https 포트를 개방해야 합니다. 또는 네트워크를 사용하는 애플리케이션에 따라서 특정 포트를 허용해야 합니다. 오라클 클라우드에서 VM Instance를 생성하면 기본적으로 아래와 같은 보안 정책이 적용되어 있습니다. 송신 (Out bound)는 모든 포트가 열려 있고, 수신(In bound) 정책은 SSH포트와 ICMP포트만 허용하고 있고 그 외 HTTP, HTTPS, RDP, SMTP 등의 다른 포트는 막혀 있습니다. 오라클 클라우드에서 특정 포트를 허용하기 위해서는 아래와 같은 단계가 필요합니다. VNC에서 보안 정책 설정 변경 (VM Instance 메뉴의 Subnet 항목 또는 네트워킹 > 가상 네트워킹.. 2020. 9. 4.
Oracle Cloud 고정 IP (공인 IP) 할당하기 Oracle cloud에서 Public IP 할당하는 방법을 설명합니다. 공인 IP를 할당받지 않으면 부팅할 때마다 '임시' IP가 할당되고 IP 주소도 변경됩니다. Web Server시와 같이 고정 IP가 필요한 경우 아래 가이드를 참고할 수 있습니다. 참고로, Google Cloud에서는 초기에는 공인 IP를 무료 제공하였으나, 최근에 사용 시간에 비례해서 과금하는 것으로 정책이 변경되었습니다. 이에 반해 Oracle Cloud에서는 아직까지는 무료로 사용 가능합니다. Oracle Cloud 에서 공인 IP를 할당하는 방법은 아래와 같이 진행합니다. 공용 IP 리소스 생성 공용 IP는 VM Instace에 할당하기 1. 공용 IP 리소스 생성 공용 IP 리소스 생성은 오라클 클라우드에 접속한 다음에 .. 2020. 9. 4.
Oracle Cloud 블록 스토리지 추가 방법 (HDD 추가 가이드) 본 포스팅은 Oracle Cloud에서 Block stroage (= HDD) 생성하는 방법을 설명합니다. 블록 스토리지는 물리적으로 SSD라고 하고 성능은 용량에 따라서 조절된다고 합니다. 블록 볼륨은 부트 볼륨과 별도록 네트워크 하드 드라이브를 생성하고 VM의 파일 시스템에서 이를 마운트 하는 방식을 사용합니다. 오라클 클라우드에서 블록 스토리지를 추가하는 방법은 아래와 같이 3단계가 필요합니다. 오라클 클라이우드 콘솔 (Web UI)에서 블록 볼륨 리소스 생성 블록 볼륨을 VM 인스턴스에 연결 VM 인스턴스에서 블록 볼륨을 파일 시스템으로 마운트 1. 블록 볼륨 리소스 생성 Oracle Cloud에 로그인하여 좌측 메인 메뉴에서 ① 블록 스토리지 > 블록 볼륨을 선택합니다. 블록 스토리지 메뉴에 진.. 2020. 9. 4.
오라클 클라우드 '평생' 무료 VM 만들기 (Google Cloud 무료 조건 비교) Google Cloud Platform '평생 무료' VM 내용을 포스팅 했습니다. 그 결과 대략 한 달 동안에 누적 조회수가 4.3K 건으로 많은 분들이 방문을 해주셨습니다. GCP 항상 무료 VM 포스팅 댓글 중에서 오라클에서도 '항상 (평생) 무료' 클라우드가 있다는 내용이 있어 본 포스팅을 준비하였습니다. 평생 무료 조건의 Google Cloud과 Oracle Cloud의 조건을 비교하면 아래와 같습니다. ※ 2020년 8월 기준으로 조건으로 각 회사의 정책은 추후 변경될 수 있으며, Google과 Oracle의 공식 자료를 바탕으로 비교해서 작성된 내용입니다. 오라클 클라우드가 CPU, RAM, Storage와 같은 HW Spec 측면에서 Google Cloud 보다 우위에 있습니다. 오라클에서.. 2020. 9. 4.
Python 명령어 처리: Argparse 모듈 (ArgumentParser 사용 예제) Terminal에서 Python script을 터미널에서 실행할 때 명령어 옵션에 대한 parameter를 python으로 전달할 때 사용하는 방법입니다. 제가 작성했던 기존 code는 sys.argv 값을 확인해서 터미널 명령어 인자별로 값을 얻어서 python 변수에 할당하는 방법을 사용하고 있었습니다. 이 경우 명령어 parameter가 추가 또는 삭제하는 경우 if 문 하나씩 증가하는 불편함이 있습니다. Python에서는 Command line에서 argument처리를 위한 argparse 모듈을 지원합니다. ArgumentParser와 add_argument 함수를 조합하면 보다 편리한 명령어 Parser를 만들 수 있습니다. 아래 Usage: ./argv_test.py [parm] [param.. 2020. 9. 1.
Python에서 사용자 입력 받는 방법: input() Python에서 사용자 입력 값을 받는 input() 함수를 설명합니다. input() 함수는 string으로 입력을 받습니다. Python built-in함수로 별도 모듈의 import는 필요 없으며, 사용법 또한 매우 간단합니다. input()을 string으로 return 하기 때문에 separator를 사용해서 입력을 받는 경우 split() 함수를 활용하면 여러 개의 input을 받을 수 있습니다. > res = input() → 사용자 입력을 받아서 string으로 저장합니다. Sample code는 아래와 같습니다. def main_menu(): print ("------------------------------------------") print ("Select menu") print (.. 2020. 8. 31.
MobaXterm (Cygwin)에서 Python 및 PIP 설치 MobaXterm에서 Python을 설치하고 실행하는 방법을 설명합니다. MobaXterm은 내부적으로 Cygwin으로 동작하기 때문에 Cygiwin에서 Python을 설치하는 방법과 동일하며, MobaXterm 나름의 Package update 기능을 지원하고 있기 때문에 MobaXterm 구동 상태에서 패키지 업데이트가 가능합니다. MobaXterm 실행 상태에서 상단 메뉴의 ① Packages 메뉴를 선택합니다. 해당 메뉴를 선택하면 cygwin의 설치 정보를 업데이트하고 패키지를 선택하는 옵션을 보여줍니다. MobaXterm의 package update 메뉴에서 ② show lib/devel 옵션을 활성화하고, ③ 패키지 검색창에서 'python3-dev'를 입력합니다. 설치하고자 하는 packa.. 2020. 8. 31.
Android에서 Python 실행 (SL4A와 Termux 활용) Python은 Google Android OS에서 공식적으로 지원하고 언어가 아닙니다. 하지만 Open source의 SL4A라는 Project, Kivy Project와 함께 Termux와 같은 Linux Emulator를 통해서 Python을 설치하고 실행할 수 있습니다. SL4A를 Android Playstore에서 검색하면 QPython 3L, Pydroid3와 같은 App을 다운로드할 수 있습니다. 본 포스팅은 SL4A는 유튜브 동영상으로 설명을 대신하고 Termux에서 Python 사용하는 사례를 설명하고자 합니다. SL4A 기반의 app과 Termux에서 Python을 실행하는 경우에 대한 비교는 아래와 같이 정리할 수 있습니다. SL4A 기반의 Python (e.g. QPython 3L) .. 2020. 8. 29.
Android 에서 리눅스 App 실행: Linux Terminal Emulator (Termux) 활용 안드로이드 스마트 폰에서 Linux Application을 실행하는 방법을 설명하고자 합니다. Android 기반의 스마트 폰은 Linux Kernel위에 HAL, Android Framework을 사용하지만 사용자 레벨에서는 Java나 Kotlin으로 작성된 Application을 사용해야 하고, Linux Application을 그대로 사용할 수 없습니다. 안드로이드의 Libc는 Bionic libc이고, 리눅스의 Libc는 gLibc를 사용하기 때문에 리눅스에 빌드된 실행 파일을 그대로 실행하는 것은 불가능합니다. 이러한 차이점을 해결하기 위해서 안드로이드 스마트 폰에서는 Linux Terminal Emulator를 사용해야 합니다. Android에서 구동 가능한 리눅스 Terminal 중에서 Te.. 2020. 8. 29.
우분투 20.04에서 Flask를 서비스 등록: 부팅 시 자동 실행 이전 Post에서 Flask Web 서버를 설명을 했고, 본 포스팅은 우분투 20.04에서 Flask Web 서버를 서비스 형태로 등록하는 방법입니다. Flask Web server를 우분투의 서비스로 등록했을 때 장점은 아래와 같습니다. Flask Web 서버를 재 부팅 시 자동 실행 가능 Flask Web 서버가 crash가 발생했을 경우 자동으로 재 실행 쉽게 Flask 서비스의 시작, 정지, 상태 확인, 재 시작 우분투에서 서비스 등록하기 위해서는 systemctl을 사용하며 아래 2단계 과정이 필요합니다. /lib/systemd/system 에 service configuration파일 작성 - 서비스 실행 파일, 부팅 시 실행 조건, 실행 권한 등을 설정 systemctl 명령어로 서비스 등록.. 2020. 8. 24.
Android apkanalyzer 에러: java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema 우분투 20.04 환경에서 Android APK 분석 tool인 apk analyzer를 설치 후 실행 시 발생하는 에러입니다. JAVA HOME 설정이 되지 않아서 발생하는 에러입니다. 에러 메시지 $ apkanalyzer ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match thelocation of your Java installation. # open jdk 설치 후 JAVA_HOME 설정 → sudo apt install openjdk-14-jre-headless # version 14.0.1+7-.. 2020. 8. 20.
Command line 기반 Android Apk 분석 툴: apkanalyzer Command line 기반의 Android APK 분석 tool 인 'apkanalyzer' 사용 방법에 대해서 정리하고자 합니다. Command line 분석 Tool은 Android Studio가 설치되지 않은 서버에서 APK를 분석하거나, APK 분석을 자동화할 때 유용하게 사용할 수 있습니다. Apk 분석 툴은 Google에서 배포하는 aapt2 (※ 정확하게는 aapt2는 리소스 컴파일 및 dump tool임)와 apkanalyzer가 있고, Python 기반의 apk-parser가 있습니다. 구글이 배포하는 tool은 최신 Android OS의 수정 사항까지 반영된다는 장점이 있고, APK를 디컴파일하여 분석하는 목적으로는 apk-parser가 좀 더 유용한 것 같습니다. 설치 apkanal.. 2020. 8. 20.
Python Error: #!/usr/bin/env python3: 그런 파일이나 디렉터리가 없습니다 (No such file or directory) Python code를 작성하다 보면 #!/usr/bin/env python3 구문에서 에러가 발생하는 경우가 있습니다. 예를 들어 윈도에서 작성한 파이썬 파일을 리눅스에서 수정 및 실행을 하다 보면 에러가 발생할 수 있습니다. 이전 포스팅 (https://kibua20.tistory.com/73)에서는 윈도우와 리눅스에서 줄 바꿈 문자가 문제가 되는 경우도 있고, 아래와 같이 윈도우와 리눅스의 UFT8 인코딩 방식에 의해서 에러가 발생하는 경우도 있습니다. Python code: Code에는 문제가 없다. #!/usr/bin/env python3 # -*- coding:utf-8 -*- import os print ('test') 에러 메시지 #!/usr/bin/env python3: 그런 파일이나 디.. 2020. 8. 19.
Python: Web Framework Flask 사용하기 Python의 Web framework인 Flask을 활용해서 간단한 Web 서버와 REST API를 처리할 수 있습니다. 또한 Python Flask를 활용하면 Python 언어의 장점인 편리함을 그대로 활용 가능하며, 간단한 Web Application을 구성할 수 있습니다. Flask에 대한 개념 및 예제 코드에 대한 설명은 아래 동영상은 참고해주세요. Flask의 공식 사이트는 샘플 코드 및 설명을 제공합니다. Flask 개념 및 설명 (출처: https://www.youtube.com/watch?v=s_ht4AKnWZg) 1. Flask 설치 Python이 설치된 상태에서 pip로 flask 모듈을 추가 설치합니다. # macOS/Linux $ sudo pip3 install flask # Wi.. 2020. 8. 18.
우분투 20.04에서 lighttpd의 fastcgi 개념 및 사용법 Web server에서 CGI는 하나의 요청(request)에 하나의 프로세스를 생성한다. 이것은 프로세스를 생성하고 제거하는 과정에서 많은 부하가 발생하기 때문에 성능이 느릴 수 있습니다. 이를 개선한 것이 'FastCGI'입니다. FastCGI는 요청이 있을 때마다 프로세스가 만들어지는 것이 아니라 만들어진 프로세스가 계속해서 새로운 요청들을 처리하여 프로세스를 생성하고 제거하는 부하를 줄일 수 있습니다. 개념은 아래 lighttpd 문서를 참고해주세요. * 출처: /usr/share/doc/lighttpd/fastcgi.txt CGI programs have the problem that they have to be restarted by the webserver for every request w.. 2020. 8. 10.
Web 서버 GET/POST CGI 사용법 (QUERY_STRING / CONTENT_LENGTH) 이전 포스팅에서 ① 우분투 20.04에서 lighttpd 설치 ② CGI 모듈 enable 및 설정 파일을 설명했습니다. 본 포스팅은 HTTP의 GET과 POST Method에 대응하는 CGI 프로그램 작성 방법에 설명하고자 합니다. CGI 프로그램으로의 정보 입력은 명령줄 인수, 환경변수, 표준 입력에 의해 이루어지며, GET METHOD 인 경우에는 QUERY_STRING을 통해서 파라미터를 얻을 수 있고, POST METHOD 인 경우네는 CONTENT_LENGTH와 표준 입력에 parmeter를 전달받을 수 있습니다. CGI 프로그램으로의 정보 입력은 명령줄 인수, 환경변수, 표준 입력에 의해 이루어진다. 특히, 클라이언트가 서버에 요구한 URI의 안, 검색문자열(Query String)이 환경변.. 2020. 8. 7.
우분투 20.04에서 lighttpd CGI 설정 방법 및 C와 Python 예제 코드 CGI (Common Gate Interface)는 사용자 Browser에서 URL 요청을 받아서 Web 서버의 특정 위치의 프로그램을 실행하도록 하는 표준 규약을 의미합니다. 이전 포스팅에서는 lighttpd 설치 방법에 대해서 설명했고, 본 포스팅에서는 CGI의 최소 프로그램인 Hello world로 출력하는 방법에 대해서 설명하고, 다음 포스팅에서 GET과 POST Mehtod의 사용법에 대해서 설명할 예정입니다. 위키백과에서는 CGI를 다음과 같이 요약하고 있습니다. 중요한 키워드로 '환경 변수', '표준 입력', 'QUERY_STRING (GET method)', 'CONTENTS LENGTH (POST method)' 정도로 설명할 수 있습니다. CGI 프로그램은 웹 서버가 클라이언트로부터 요.. 2020. 8. 6.
우분투 20.04에서 lighttpd Web Server 설치 (Embedded용으로 활용 가능) Apache Web Server 가 가장 오래 사용되어 왔고, Web Server의 점유율 또한 1등 입니다. 하지만 Apache Web서버는 기능적으로 풍부하기 때문에 다소 무거운 감이 있어 제한된 리소스에서 동작하는 임베디드 시스템에는 적합하지 않습니다. 임베디드 시스템에 사용하기 위해서는 ① Web Server 자체가 경량화되어 작아야 하며, ② ARM으로 cross-compile이 가능하고, ③ 상용화하는 경우 오픈 소스 라이선스에 문제가 없어야 합니다. 이러한 조건을 만족하는 Web server 중 하나가 lighttpd (발음: 라이팃)입니다. lighttpd는 Revised BSD 라이선스로 GPL과는 달리 상용화 시 수정한 부분에 대해서 소스 전체를 오픈할 의무가 없습니다. ** 참고 내용.. 2020. 8. 6.
파이썬 Selenium을 활용한 블서치 백링크 등록 '자동화' 티스토리 블로그를 운영하시는 분은 백링크의 중요성을 인지하고 계실 것 같습니다. 구글이나 네이버 검색 엔진에서 블로그의 백링크 수가 높은 경우 좋은 글로 판단해서 노출도를 높인다고 합니다. 백링크 사이트에 블로그 글을 등록하는 것이 검색엔진에 '노출도 향상'이 얼마나 실효성이 있을지 알 수는 없으니 최소한 손해 보는 일이 없을 것 같습니다 본인 판단 하에 등록 여부를 결정하시기 바랍니다. 구글 서치 콘솔이나 네이버 서치 어드바이저에서는 아래와 같은 백링크 정보에 대한 통계치를 제공하고 있습니다. 본 포스팅의 실행 결과는 아래 동영상을 참조해주세요. 블서치 백링크 자동 등록1. 블서치 백링크 등록 방법백링크를 등록하는 사이트는 키자드와 블서치가 있습니다. 키자드는 블로그 글의 시작 번호와 끝 번호만 넣으면.. 2020. 8. 5.
우분투 20.04에서 Apache와 Tomcat 완전 삭제 방법 우분투에서 Apache와 Tomcat 구동이나 설정 오류가 있어 해당 패키지를 재 설치하는 경우, 또는 Nginx나 lighttpd와 같은 새로운 Web Server를 설치하는 경우 기 설치된 Apache와 Tomcat을 '완전' 삭제해야 합니다. # 현재 구동 중인 services list 확인 - apache2 구동 확인 $ sudo service --status-all service --status-all # apache2 서비스 중지 $ sudo service apache2 stop # apache2와 tomcat9 삭제 (purge option은 설정 파일까지 삭제하는 옵션임, remove는 설정 파일은 유지함) $ sudo apt purge tomcat9* $ sudo apt purge apa.. 2020. 8. 3.
GCP(Google Cloud) 로컬 PC에서 VM에 로그인 없이 바로 SSH로 바로 접속: 다른 SSH 클라이언트 사용 및 SSH Key 등록 Google Cloud Platform(GCP)의 가상 머신(Virtual Machine) SSH 접속은 기본적으로 Chrome에서 Google Cloud Platform 사이트에 로그인 후 브라우저의 SSH Client를 사용합니다. GCP 로그인 없이 로컬 PC의 터미널이나 윈도우의 Putty를 이용해서 좀 더 편하게 접속하는 방법을 정리하였습니다. 구글 공식 가이드는 링크를 확인부탁드리며, 회사의 큰 조직에서 사용하는 경우에 대한 보안을 고려(e.g. 계정 만료 시간)하여 조금 어렵게 설명되어 있는 것을 필요한 내용만 쉽게 정리하였습니다. GCP VM에 SSH로 연결하는 방법은 아래와 같이 3단계로 진행해야 합니다. Local PC에서 SSH 인증용 RSA Private-Public Key 생성 원.. 2020. 8. 1.
GCP(Google Cloud) 원격 데스크 톱(RDP) 연결: Linux 용 Chrome RDP 본 포스팅은 GCP에 만들어 놓은 가상 PC (VM) 원격 데스크 탑을 연결하는 방법을 소개합니다. 본 포스팅은 Google 공식 가이드를 참조하였으면, 사용된 GCP는 f1-micro instance 등급이며, us-west-b region에 설치된 VM입니다. 원격 데스크 톱 설치는 가능하지만, Network 속도의 문제인지 VM 성능 문제인지 확실치는 않지만 반응 속도가 너무 느립니다. 평생 무료 등급 (f1-micro instance) 등급을 사용하는 분은 원격 데스크 톱 사용은 포기하고 터미널로만 접속하는 것이 나을 것 같고, 스펙 좋은 GCP 서버는 시도해볼 필요가 있습니다. 원격 서버에 Chrome remote desktop을 설치하는 과정은 아래와 같습니다. VM 인스턴스에서 Chrome .. 2020. 7. 30.
fatal error: curl/curl.h: No such file or directory 리눅스에서 C 언어로 HTTP POST를 구현하기 위해서는 libcurl를 사용해야 하고, 소스 상에서 curl/curl.h 을 include해야 합니다. 이 과정에서 발생할 수 있는 에러와 수정 방법입니다. 에러 메시지: fatal error: curl/curl.h: No such file or directory 수정 방법: $ sudo apt install libcurl4-gnutls-dev 리눅스 빌드 환경에서 libcurl.h 가 설치가 안되어 발생하는 에러로 libcurl-dev을 설치하면 간단하게 해결됩니다. libcurl-dev은 아래와 같이 gnutls, nss, openssl의 virtual package로 시스템에서 설치된 package에 따라서 자동으로 선택이 되는 경우도 있고, 에러.. 2020. 7. 28.
GCP(Google Cloud) 하드 디스크 추가하기 (영구 디스크는 30GB까지 무료) Google Cloud Platform에서 영구 디스크 (HDD or SDD) 추가하는 방법을 설명드립니다. 비용 측면에서는 HDD가 SDD에 비해서 저렴하고 속도는 SDD가 월등할 것으로 생각됩니다. 주의해야 하는 점은 가상 머신(VM instance)과 HDD는 별도로 비용으로 청구됩니다. 가상 머신에 HDD 추가 시 1) VM 삭제 시 HDD도 같이 삭제하는 옵션과 2) 삭제 후에도 HDD를 유지하는 옵션이 있습니다. 일반 PC에 별도의 HDD 추가하는 것처럼 GCP에서 별도의 HDD를 만들 수 있습니다. 또한 HDD는 하나의 VM에서 연결되고, 복수의 VM에서 동시에 사용할 수는 없습니다. GCP의 평생 무료 제품에서는 총 30G/월까지 제공합니다. GCP에서는 OS 설치 시 기본 사이즈는 10G.. 2020. 7. 28.
GCP(Google Cloud) 방화벽 설정: 프로토콜과 포트를 사용 허용 또는 거부하기 Google Cloud Platform(이하 GCP)에서는 방화벽을 설정하는 방법을 설명합니다. GCP에서 서버를 구축하고 외부 인터넷 망을 통해서 해당 서버에 접속하는 경우 방화벽에서 특정 프로토콜과 포트를 허용해야 합니다. 예를 들어서 GCP에 Python Flask 구동시키는 경우 'TCP 5000'번을 사용하고 이를 방화벽에서 '수신' 허용해야 합니다. GCP는 패킷이 GCP에서 외부망으로 나가는 Outbound는 모든 프로토콜과 포트가 허용되어 있는 것으로 보이고, 외부망에서 GCP로 접속하는 Inboond는 TCP/UDP/ICMP 프로토콜과 80/443/22/3389 포트만 허용되어 있습니다. GCP 방화벽 설정 자체는 개념만 이해하고 있으면 Google Cloud Console에서 아래와 U.. 2020. 7. 26.
Python: OSError: [Errno 98] Address already in use (Flask) Python으로 Web framework인 Flask를 공부하다가 발생하나 에러입니다. Flask에서 5000 포트를 사용하고 있는데 Flask 모듈이 비정상적으로 종료해서 5000 포트를 잡고 있어 발생하는 에러입니다. 에러 메시지 Traceback (most recent call last): File "/usr/lib/python3.8/runpy.py", line 193, in _run_module_as_mainreturn _run_code(code, main_globals, None, File "/usr/lib/python3.8/runpy.py", line 86, in _run_codeexec(code, run_globals) (중략) File "/usr/local/lib/python3.8/dist.. 2020. 7. 26.
Google Cloud Platform을 활용하여 평생 '무료' PC 만들기 Google Cloud Platform (이하 GCP)을 사용해서 무료 PC를 생성하는 방법에 대해서 설명하도록 하겠습니다. GCP는 구글에서 제공하는 클라우드 컴퓨팅 플랫폼으로 Amazon Web Services, Microsoft Azure와 함께 Cloud 시장에서 3위를 하고 있다고 합니다. GCP는 구글에서 제공하는 원격 컴퓨팅, Storage, 각종 서비스 (API)를 사용할 수 있습니다. GCP는 기본적으로 유료 서비스이지만, 각 계정에서 $300의 크렛딧과 제한된 조건에서는 '평생 무료' 사용할 수 있는 가상 머신 (Virtual Machine)을 제공합니다. Amazon, Microsoft, Google 중 평생 무료로 제공하는 것은 GCP와 Microsoft Azure이고, Amazon.. 2020. 7. 25.
Python code 숨기는 방법: PyInstaller로 실행 파일 만들기 파이썬을 작성한 코드는 byte code인 pyc파이로 변환하더라도 디컴파일이 쉽게 되기 때문에 코드를 숨길 수가 없습니다. (참고) 이에 비해 PyInstaller는 Py파일을 실행파일로 만들 수 있어 쉽게 코드를 숨길 수 있고, 필요한 lib 도 포함하고 있어 상용 서버에 파이썬으로 개발한 SW를 배포하기에 편리합니다. PyInstaller에 대한 설명은 아래 동영상을 참고해주세요. ※ 실행파일(.exe or ELF)도 Reverse Engineering으로 디컴파일이 가능하기 때문에 절대 신뢰하면 안되고, py나 pyc 보다는 그나마 코드를 숨기는 방법입니다. PyInstaller 설명 (출처: https://www.youtube.com/watch?v=RMkPGjGhzxg) 주의해야 점 PyInst.. 2020. 7. 21.
Python 폴더 및 파일 처리 함수 모음 Python 폴더 및 파일 처리 명령어 모음입니다. Python에서 폴더 및 파일을 처리하기 위해서는 import os 해야 합니다. 한 가지 주의할 점은 리눅스와 윈도우의 파일 경로 처리 방식이 다르기 때문에 파일 경로를 python 코드에서 하드 코딩하면 윈도우와 리눅스에서 호환성을 보장이 안되고, 반드시 os.path.join() 로 처리해야 합니다. import os 현재 작업 폴더 얻어오기: os.getcwd() os.getcwd() → /home/kibua/git/devDocs/file 현재 작업 폴더 변경하기: os.chdir() os.chdir('/home/kibua/git/devDocs') → /home/kibua/git/devDocs 특정 폴더의 폴더와 파일 리스트 확인하기: os.li.. 2020. 7. 17.
우분투 작업 스케줄러 Crontab 사용법, 디버깅, 주의 사항 우분투에서 프로그램을 예약 실행해야 하는 경우 crontab 사용할 수 있습니다. 예를 들어 1시간 마다 특정 폴더를 백업하거나 Git 소스를 업데이트는 하는 자동화 작업을 진행하는 경우 crontab을 활용하면 됩니다. crontab은 프로세스 예약 데몬이며, 리눅스용 작업 스케줄러로 특정 시각에 명령어를 수행하도록 등록 가능합니다. 출처: https://www.youtube.com/watch?v=llUw3RtD-Yw crontab 명령어 사용 방법 $ crontab [ -u user ] [ -i ] { -e | -l | -r } -e (edit user's crontab) # 예약 작업 추가 -l (list user's crontab) # 예약 작업 리스트 확인 -r (delete user's cro.. 2020. 7. 17.