전체 글 27

리눅스 컨테이너, Docker (도커)

리눅스 컨테이너는 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술입니다. 하드웨어를 가상화하는 가상 머신과 달리 커널을 공유하는 방식이기 때문에 실행 속도가 빠르고, 성능 상의 손실이 거의 없습니다. Docker (도커) - 리눅스 컨테이너 기술을 자동화해 쉽게 사용할 수 있게 하는 오픈소스 프로젝트 Docker를 사용하면 컨테이너를 매우 가벼운 모듈식 가상 머신처럼 다룰 수 있습니다. 또한 컨테이너를 구축, 배포, 복사하고 한 환경에서 다른 환경으로 이동하는 등 유연하게 사용할 수 있어, 애플리케이션을 클라우드에 최적화하도록 지원합니다. => 리눅스를 가상머신에 설치하지 않고 도커에 이미지(어떤 애플리케이션을 실행하기 위한 환경(파일들의 집합))로 빠르게..

CS 2021.06.02

멀티 프로세스와 멀티 스레드

멀티 프로세스 다수의 프로세스를 생성하여 각각 따로 처리하는 것 데이터 영역, 힙, 스택 모두 비공유로 처리 -> Context Switching이 데이터 영역, 힙영역에 대해서도 일어나야하므로 더많은 시간이 소요됨 멀티 스레드 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것을 멀티쓰레딩이라고 한다. 데이터 영역, 힙, 스택 중 스택 영역만 비공유로 처리 -> 프로세스를 생성하는데 드는 자원과 시간을 최소화하고 데이터 영역과 힙 영역에서의 빠른 데이터 교환과 작업을 할 수 있게 함 Context Switching( 컨텍스드 스위칭 - 문맥교환 ) CPU가 어떤 프로세스를 실행하고 있는 상태에서 인터럽트에 의해 다음 우선 순..

CS 2021.06.01

Python - 15. 웹서버

p.407 웹서버만들기 httpserver -> 서버 만들 수 있음 서버 띄우는 2가지 방법 SimpleHTTPRequestHandler BaseHTTPRequestHandler cmd 창에서 python -m http.server --cgi 8080 입력 방화벽을 허용해준다. 브라우저에서 127.0.0.1:8080 으로 접속해보면 서버의 디렉토리 확인가능 SimpleHTTPRequestHandler # server01.py from http.server import HTTPServer, SimpleHTTPRequestHandler #print( dir( HTTPServer ) ) #print( dir( SimpleHTTPRequestHandler ) ) httpd = HTTPServer( ( '127...

Python 2021.03.17

Python - 12. 데이터베이스 - SQLite

1. 파이썬 기본문법 2. 데이터 조작 file io os.path glob open pickle mariadb(mysql) - mariadb pip install mariadb - 직접연결 - 데이터베이스 풀링 https://mariadb.com/docs/clients/connector-python/ - mysql *sqlite www.sqlite.org https://www.sqlite.org/datatype3.html https://sqlitebrowser.org - sqlite 브라우저 # sqlite01.py # sqlite02.py import sqlite3 conn = sqlite3.connect( 'test.db' ) cursor = conn.cursor() cursor.execute( '..

Python 2021.03.15

Python - 11. 데이터베이스 - mariaDB와 연동

*SQL 데이터베이스 대형급 DB2, Oracle 중형급 MariaDB 소형급(파일 DB) SQLite 파이썬에 데이터베이스 설치 mariadb.com/kb/en/mariadb-connector-python/ pip list: 설치된 내부 모듈 확인 pip install : 외부(원격저장소) 모듈 설치하기 pip list 확인 파이썬 pip 업그레이드 하기 python.exe -m pip installl --upgrade pip mysql 설치 pip install mysqlclient pip list에 추가된 것 확인 가능 C:\python\python3.9\Lib\site-packages 에 저장됨 mariadb 설치 pip install mariadb 사용할수 있는 함수들 mariadb 연동하기 #..

Python 2021.03.15

Python - 10. 중요 모듈 (수학, 파일 입출력)

많이 쓰이는 중요 모듈중에서 수학과 관련된 모듈이 있다. 대부분의 수학관련 함수가 math 모듈에 존재하지만 자주 사용되는 함수들은 내장 함수로 제공되고 있다. sum( iterable[, start] ) - 총합(시작값 x -> 0 ) max min abs pow round divmod Math 모듈 소수점 올림 / 내림 / 버림 # math01.py import math # 올림 print( math.ceil( 3.4 ) ) print( math.ceil( 3.5 ) ) print( math.ceil( 3.6 ) ) # 내림 print( math.floor( 3.4 ) ) print( math.floor( 3.5 ) ) print( math.floor( 3.6 ) ) # 버림(정수부분만 반환) pri..

Python 2021.03.11

Python - 9. 중요 모듈 (시스템, 날짜·시간 모듈)

파이썬 3.6 프로그래밍 - p.224~ sys 모듈 - 시스템에 관련된 모듈 sys.argv - 입력 인자 저장 배열 # sys01.py # sys - 시스템에 관련된 모듈 import sys #print( dir( sys ) ) #print( sys.argv ) argv = sys.argv # argv 인자 출력 print( argv[0] ) print( argv[1] ) print( argv[2] ) 인자를 입력하기 위해 sys01.py가 저장된 폴더에서 shift+우클릭 - PowerShell을 열고 인자를 입력하면 출력이 된다. sys.version / sys.version_info / sys.api_version : 시스템에 대한 정보 sys.path - 모듈이 실행되는 경로 출력 # sys0..

Python 2021.03.10

Python - 8. 모듈

Python 클래스 생성 멤버 필드 클래스 인스턴스 메서드 클래스(스태틱) 인스턴스 *Constructor / Destructor *private( __ ) / public => 캡슐화 상속 object 다중상속 명시적 부모의 생성자 호출 super() 오버라이드 예외처리 try except else finally 모듈 - 여러 코드를 한데 묶어 다른 곳에서 재사용할 수 있는 코드 모음 pip list python import sys print( sys.path ) => 이 경로에 나오는 것들이 모듈, 사용자 모듈 정의시 저장되는 위치 lib -> 기본 내장 라이브러리 lib\site packahe => 외부 서드파티 등에서 가져온 라이브러리 import os print( os.environ['PATH'..

Python 2021.03.10

Python - 7. 예외 처리

프로그램의 제어 흐름을 조정하기 위해서 사용하는 이벤트 => 예외(Exception) 아무런 처리를 하지 않는 예외에 대해 자동으로 에러(Error)를 일으킴 비정상적인 종료를 일으키는 예외는 처리되지 않은 예외 => 에러와 예외를 처리하는 방법에 대해 알아야됨 값의 오류 # ex01.py # 실행시 값의 오류에 의해서 발생 ''' 0으로 나눌때 에러 num1 = 10 num2 = 0 print( num1 / num2 ) ''' arr = [1, 2, 3] print( arr[4] ) 에러의 종류와 처리 # ex02.py def divide( a, b ): return a / b try: #c = divide( 20, 10 ) # ZeroDivisionError #c = divide(20, 0) # Ty..

Python 2021.03.09

Python - 6. 클래스

클래스 - 파이썬 3.6 프로그래밍 p.93~130 클래스 멤버프로퍼티(필드) 클래스 - 변수 인스턴스 - self(this) 멤버메서드 __init__(self) 클래스의 선언 dir() 로 이름공간에 클래스가 선언된것 확인 # class01.py class Cookie: pass print( dir() ) # Cookie가 등록이 되있는것 확인 가능 (이름만) # 인스턴스 객체 생성 c1 = Cookie() c2 = Cookie() print( type(c1) ) print( type(c2) ) print( id(c1) ) print( id(c2) ) 인스턴스 객체 성성과 멤버 변수값 출력하기 # class02.py class Cookie: a = 10 b = 20 c1 = Cookie() print..

Python 2021.03.08