프로그래밍 30

CentOS8에서 NginX를 이용해 NFS 서버 구축

여러 컴퓨터 간에 파일 및 디렉터리를 공유하기 위한 분산 파일 시스템 프로토콜 유닉스와 유닉스 계열의 운영체제에서 사용되며, 서버와 클라이언트 간의 효율적인 파일 공유 및 접근을 지원 마운트를 이용하여 서버 간 파일 공유 NFS 서버: 192.168.202.3 / 클라이언트 서버: 192.168.113.10 1. NFS 서비스 설치 yum install nfs-utils systemctl start nfs-server systemctl enable nfs-server systemctl status nfs-server 2. 마운트 대상 폴더 (/etc/mkdir /usr/share) 생성 실습자가 다른 곳으로 지정해도 됨. 3. exports 폴더 작성 및 확인 cd /etc vi exports /usr/..

Web Server 2024.01.31

웹서버 개요 이론 :: Apach 아파치 vs Nginx 엔진엑스

Apache 거의 모든 OS에서 실행되고, 다른 유명한 소프트웨어 프로젝트와의 문서화가 잘 되어 있고 통합 지원 등이 이점 클라이언트 요청 당 하나의 스레드가 처리하는 구조로, 사용자가 많으면 스레드 생성, 메모리 및 CPU 낭비 특징: 동적 콘텐츠 처리, 다양한 모듈, 스레드 / 프로세스 기반 구조 스레드: 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위 웹서버는 MPM(Multi-Processing Modules, 다중 처리 모듈)을 사용하여 클라이언트로부터 받은 요청을 처리 아파치 HTTP 서버 하나의 자식 프로세스 당 하나의 스레드를 갖는 구조 (자식 프로세스 최대 1024개) 스레드 간 메모리 공유 하지 않음 독립적이기에 안정적인 반면, 메모리 소모가 큼 실행 중인 프로세스를..

Web Server 2024.01.27

SQL 함수 간단 실습 :: 서브쿼리 (비상관 커리, 상관 커리)

쿼리 안에 쿼리 작성 SELECT *, (SELECT * FROM...) FROM... WHERE ... (SELECT * FROM...) 비상관 서브커리: 연계되지 않고 독립적으로 반환되는 서브쿼리 SELECT categoryid, categoryname, DESCRIPTION, (SELECT productname FROM products WHERE `ProductID` = 1) FROM categories; >>categories의 categoryid, categoryname, DESCRIPTION를 출력하고, products의 ProductID가 1인 경우, productname를 출력해라. SELECT * FROM products WHERE price < (SELECT AVG(`Price`) FR..

SQL 함수 간단 실습 :: JOIN (내부 조인, 외부 조인, 셀프 조인)

JOIN: 여러개의 테이블을 연결해서 정보를 보는 방법 내부조인 (Inner Join): 테이블A와 테이블B 중 Key 값이 같은 정보를 모두 합쳐라 SELECT * FROM categories C JOIN products P ON C.`CategoryID` = P.`CategoryID`; >> categories (C)와 products (P) 중 `CategoryID`가 같은 데이터를 출력 SELECT C.categoryid, C.categoryname, P.productname FROM categories C JOIN products P ON C.`CategoryID` = P.`CategoryID`; P=products C=categories >> categories(C)와 products(P)에서..

SQL 함수 간단 실습 :: 시간/날짜 관련 함수

CURRENT_DATE, CURDATE: 현재 날짜 반환 CURRENT_DATE, CURTIME: 현재 시간 반환 CURRENT_TIMESTAMP, NOW: 현재 시간과 날짜 반환 (1900) SELECT CURDATE(), CURTIME(), NOW(); DATE(): 문자열을 날짜로 생성 TIME(): 문자열을 시간으로 생성 SELECT * FROM orders WHERE orderdate BETWEEN DATE('1997-1-1') AND DATE('1997-1-31'); >> '1997-1-1'을 날짜로 생성한 것과 '1997-1-31'을 날짜로 생성한 기간 사이에 있는 orders 테이블의 모든 항목을 출력하시오. YEAR, MONTHNAME, MONTH, WEEKDAY, DAYNAME 년, 월..

SQL 함수 간단 실습 :: 숫자 관련 함수

ROUND(반올림), CEIL(올림), FLOOR(버림) SELECT ROUND(0.5), CEIL(0.4), FLOOR(0.6); >> 0.5을 반올림하고, 0.4를 올림하고, 0.6을 버림하라. SELECT price, ROUND(price), CEIL(price), FLOOR(price) FROM products; >> products에서 price, 반올림한 price, 올림한 price, 버림한 price을 출력 SELECT ABS(1), ABS(-1), ABS(3 - 10); >> 1의 절댓값, -1의 절댓값 (3 - 10)의 절댓값을 구하시오. 3 - 10 = -7 SELECT * FROM orderdetails WHERE ABS(`Quantity` - 10) > orderdeta..

SQL 함수 간단 실습 :: SELECT문2 (SELECT 사칙연산)

사칙연산: +,-,*,/,%,MOD SELECT 5 - 2.5 AS deffrence; >>> 5 - 2.5를 deffrence으로 가져와라. SELECT 3 * (2+4) / 2, 'Hello'; >> 3 * (2+4) / 2과, 'Hello'를 가져와라. 1. SELECT 'abc' + 3; >> 'abc'는 숫자가 아니기 때문에 3으로 출력 2. SELECT 'abc' * 3; >> 'abc'는 숫자가 아니기 때문에 0으로 출력 1. SELECT orderid, productid, orderid + productid AS '더하기' FROM orderdetails; >> orderdetails에서 productid와 productid, orderid + productid를 더한 데이터를 '더하기'로..

파이썬 Python 실습 :: 고객 정보 관리 프로그램 만들어보기

Ver. 1 메뉴를 여러번 물어보도록 수정 메뉴를 선택하면 중단하도록 프로그래밍 더보기 고객정보 = list() while True: # 무한루프 메뉴 = input(''' 다음 중에서 할 일을 고르시오: I - 고객 정보 조회 C - 현재 고객 정보 조회 P - 이전 고객 정보 조회 N - 다음 고객 정보 조회 U - 고객 정보 수정 D - 고객 정보 삭제 Q - 프로그램 종료) ''') if 메뉴 == 'i': print('고객 정보 입력') 이름 = input('이름을 입력하세요.') 성별 = input('성별을 F,M으로 입력하세요.') 출생년도 = input('출생년도를 입력하세요.') 지역 = input('지역 정보를 입력하세요.') 고객 = { '이름': 이름, '성별': 성별, '출생년도'..

파이썬 Python 실습 :: 기본적인 파일 사용 정리 함수

문자열 속에서 특정한 패턴을 가진 문자열을 찾을 때 사용하는 것 복잡한 문자열 속에서 특정한 규칙으로 된 문자열을 검색한 뒤 추출하거나 바꿀 때 사용 문자열이 정해진 규칙이 맞는지 판단할 때 사용 >>> import re ** 정규 표현식을 지원하기 위한 모듈을 제공 re 모듈은 파이썬을 설치할 때 자동으로 설치되는 표준 라이브러리 >>> hello = 'Hello world!!' >>> print(re.match('Hello', hello)) >> hello에서 'Hello'와 겹치는 게 있는지 찾아서 출력해라 **** re.match:** “문자열의 처음”부터 시작하여 패턴이 일치되는 것이 있는지를 확인 >> span=(0, 5): 0~5사이에서 찾았고, 매칭되는 내용은 'Hello' >>> prin..

파이썬 Python 실습 :: 클래스, 인스턴스

클래스: 서로 관련있는 데이터나 기능들을 하나로 묶은 것 객체: 어떠한 속성값과 행동을 가지고 있는 데이터 형식 class 클래스이름: 속성 = 0 def 매서드이름(**self**): pass 생성자 (_ init _): 객체를 생성할 때 자동으로 호출되는 메서드 >>> class Person: // 관례 상 클래스 이름 첫글자는 **대문자로 지정** def greeting(self): >> 클래스 안에서 함수 선언할 때는 self 넣어야 함 print('Hello') >>> person = Person() // ** 생성을 한 후 사용 >>> person.greeting() Hello >>> class Person: def __init__(self): // ** 생성자 (__init__): 클래스의 ..