** 네트워크
1, 용어
-> protocol : 데이터 송수신을 위한 규칙이나 규약
-> TCP : 연결형 통신 - 클라이언트와 서버가 통신을 하기 전에 연결을 하고 서로간에 데이터 송수신 여부를 확인하면서 데이터를 전송
client server
요청 --------------->
<--------------- 응답
데이터요청 --------->
<----------데이터 전송
데이터 수신 여부 ------>
http , https , ftp ,telnet 등
-> UDP : 비연결형 통신
송신 --------> 데이터 --------> 수신
전송속도는 빠르지만 수신 측이 데이터를 받았는지 알 수 없습니다.
데이터를 여러 개 전송하였을 때 수신 측이 순서대로 받는다는 보장을 못함
스마트폰의 PUSH 가 전부 이 방식
카카오톡이 대표적인 UDP
-> IP : 컴퓨터에 할당되는 숫자로 된 주소
IP 중에는 내부 네트워크에서 컴퓨터를 구분하기 위한 가상의 주소도 있습니다.
10 , 192.168 , 172.16. ~ 172.31 의 주소 대역은 가상 주소입니다.
-> PORT : 컴퓨터 내에서 프로세스(프로그램)를 구분하기 위한 번호
0 ~ 65535 까지 있으면 0 ~1023 번까지는 예약이 되어 있는 경우가 많습니다.
http: 80 , https : 443
tomcat(8080) , oracle(1521) , mysql(3306) , mongodb(27017) 등
-> 다른 컴퓨터와 통신을 할 떄는 IP 와 port 번호가 필요하다.
-> Domain : IP 대신에 사용할 수 있는 문자 주소
-> port 는 서버 설정에따라 기본 포트를 사용하면 생략이 가능합니다.
-> port forwarding : 하나의 포트가 하나의 ip를 대표하도록 설정하는 것
가정집은 ipr가 고정이 나이고 유동입니다.
바뀌지 않도록 포트에 아이피를 고정 시키는 것
집에 있는 컴퓨터를 서버처럼 사용하기 위해서 이 작업을 합니다.
-> server : service를 제공하는 컴퓨터
주소가 고정해서 어디서든지 동일한 주소로 접속가능한 컴퓨터
-> web Server Programming : 웹 사이트 만드는 작업
처음 연습해서 외부에서 접속되는지 확인하고자 하면 Web hosting 업체에 맡기던지 아니면
port forwarding 을 이용해서 하면 됩니다.
-> Loopback : 자신의 컴퓨터를 구분하기 위한 ip
127.0.0.1(ipv4) , 0::0::0::0::0::0::0::1 (ipv6)
이것을 local host 라고도 합니다
-> URL : 웹에서 자원을 구분하기 위한 주소
http: 또는 https:// 도메인 주소나 ip 주소 : 포트번호 /요청 경로..? 이름 = 값&이름=값....
포트번호는 기본 서비스 포트번호를 사용하면 생략 가능
요청 경로는 서버에서 구분하기 위한 문자열인데 생략하면 서버 설정에 따라서
요청을 합니다.
? 다음은 query string 이라고도 하고 parameter 라고 도 한다.
클라이언트가 서버에게 전송하는 데이터 입니다
여러 개 보낼 때는 & 로 구분합니다
-> 파라미터 전송 방식
GET : 파라미터를 URL에 붙혀서 전송하는 방식 , 보안이 취약하고 데이터의 길이에
제한이 있지만 자동 재전송 기능이 있습니다. - 데이터 읽는 경우 사용
POST : 파라미터를 URL에 붙이지 않고 헤더에 숨겨서 전송하는 방식으로 보안이 우수하고
데이터의 길이에 제한이 없지만 자동 재전송 기능이 없음 - 데이터 읽는 작업을 제외하고는 모두 post
입력란에 Textarea , password , filed 이 있을 때는 반드시 post 방식이어야 한다.
** 데이터 사용
-> 일시적 저장 : 프로그램의 변수에 저장
-> 반영구적 저장
자신의컴퓨터(로컬) : 프로그램이 종료되더라도 데이터는 보존이 됩니다.
컴퓨터에 문제가 발생하면 데이터를 사용할 수 없을 수 있음.
일반적이 컴퓨터는 IP 주소가 계속 변경되기 때문에 다른 컴퓨터와 데이터를 공유할 수 없습니다.
2) 다른컴퓨터 (서버) : 로컬 컴퓨터가 고장 나더라도 데이터를 계속 사용할 수 있습니다 다른 컴퓨터와 데이터를 공유할 수 있다
네트워크 가능한 상태여야 데이터를 사용할 수 있다
3) 데이터의 저장 형식
-> flat 파일 : 데이터를 일반 텍스트 형태로 저장
csv : , 나 공백으로 데이터를 구분해서 저장 - 많은 양의 데이터 중에서 변하지 않는 데이터의 경우 이런형태로 저장
-> 데이터베이스 : 데이터를 쉽게 관리하도록 해주는 소프트웨어
RDBMS : 테이블 구조를 생성해서 테이블에 데이터를 보관하고 sql 을 이용해서 사용하는 데이터베이스 프로그램 - oracle(고가 -공공기관 , 대기업) , MySQL(무료나 저렴 - 스타트업 , 중소기업) , MS-SQL(oracle보다 저렴하지만 mysql 보다 는 비용 소모가 심할 수 있다 - 외국)
Tibero(국산 데이터베이스 - 공공기관) . HANA DB( 독일의 SAP 에서 만든 데이터베이스 , 대기업들이 Oracle 에서 많이 이전) , DB2(IBM에서 제작한 것으로 일부 금융기관에서 사용) , MS-Access 등
noSQL : 테이블 구조를 미리 만들지 않고 key - value 의 형태로 데이터를 조작하며 , 대부분 자바스크립트 문법을 사용 - Mongo DB(스타트업과 중견기업 최근에 많이 사용) , google 의 firebase , cassandra 등
-> 일반 응용 프로그램 형식의 데이터 : Excel , SPSS , SAS 등
4) 서버가 제공하는 형식
-> 예전에 대부분의 경우는 서버가 데이터를 제공하는 것이 아니고 view를 제공했습니다.
전통적인 html
-> 최근에는 서버는 데이터를 제공하고 클라이언트는 이 데이터를 받아서 자신에게 맞도록 출력하는 형태로 변경되고 있음
: Restful - REST API
csv : 특수한 문자나 기호로 데이터를 구분
xml : 데이터를 태그로 표시
json : 데이터를 자바스크립트 객체 표현법으로 표시
파이썬의 list 와 dict 표현법과도 동일합니다.
최근에 많이 사용 , twitter 나 facebook은 xml 형식은 지원하지 않음
5) 프로그래밍에서 중요한 점
서버 프로그래밍: 사용자 요청을 받아서 데이터베이스에 접속해서 작업을 수행하고 그 결과를 xml이나 json으로 던지는 것
클라이언트 프로그래밍: 서버에게 파라미터를 어떻게 넘겨주고 서버가 전달한 데이터를 파싱해서 어떻게 출력할 것인지가 중요
** 파일 처리
-> 일반 텍스트 파일을 생성해서 저장하고 읽기
-> 서버에서 로그를 기록하거나 간단한 데이터 저장에 많이 이용
1. 파일 처리 절차
파일 열기(open) -> 파일에 기록(write) -> 하거나 읽기(read) -> 파일 닫기(close)
-> 닫기를 하지 않으면 프로그램의 처리는 문제가 없을 수 있지만 프로그램이 실행 중인 동안은 다른 프로그램이 그 파일을 수정할 수 없도록 Lock이 설정됩니다.
2. open 함수
1) 쓰기 작업
-> 첫번째 매개변수로 파일의 경로를 대입
-> 두번째 매개변수로 'w'
->세번째 매개변수로 인코딩 방식을 대입 - 생략 가능
-> 기록을 할 때는 open 을 한 이후에 write , writelines 함수를 이용해서 기록
-> 기존에 존재하는 파일에 데이터를 이어서 기록할려면 w 대신에 a 를 이용
2) 읽기 작업
-> 첫번째 매개변수로 파일의 경로를 대입
-> 두번째 매개변수로 'r'을 대입하는데 생략하면 r
-> 세번째 매개변수로 인코딩 방식을 대입
-> 읽을 때는 전체를 읽어올 때
3. csv 파일
-> Comma Separated values의 약자로 구분자로 구분된 문자열 입니다.
초창기에는 , 를 거의 주로 이용했으나 최근에는 공백이나 엔더토 많이사용
변경 가능성이 거의 없는 많은 양의 데이터를 전달하고자 할 때 주로 쓰입니다
-> 파이썬이 제공하는 csv 모듈을 이용해서 읽을 수 있고 기타 분석 라이브러리가 제공하는 모듈을 이용해서 읽기도 합니다.
1) 파일 읽기
-> csv.reader(파일객체)를 호출하면 각 줄을 하나의 list로 하는 iteratior 가 리턴됩니다.
2) 파일 기록
-> csv.writer(파일객체)를 호출하면 파일에 기록할 준비가 되고 writerow([데이터 나열])
3) 파일을 열 때 close 를 하지 않아도 되도록 하기
with open() as 별명 :
내용
-> with 블록이 끝나면 자동으로 close()를 호출해서 직접 닫지 않아도 됩니다.
4. 엑셀 파일 읽고 쓰기
-> 엑셀 파일을 읽고 쓰기를 할 때는 openpyxl 이나 xlrd 등의 패키지를 이용합니다.
-> 파일을 workbook 이라고 하면 workbook 안의 페이지를 worksheet 라고 합니다.
worksheet 안에 하나의 행을 row라고 하고 하나의 열을 column 이라고 하며 하나 하나의 사각형은 cell 이라고 합니다
-> openpyxl 패키지를 이용해서 엑셀 파일 읽기
1) openpyxl을 설치 - 맨 처음 한번만 하면 된다.
console(terminal)을 열어서 pip install openpyxl 을 입력하고 enter
2) 코드를 작성
'Python' 카테고리의 다른 글
[파이썬] 웹 프로그래밍 (0) | 2021.02.07 |
---|---|
[파이썬] MySQL (0) | 2021.02.06 |
[파이썬] 자료규조 (0) | 2021.01.31 |
[파이썬] 메모리관리 (0) | 2021.01.30 |
[파이썬] 쓰레드 (0) | 2021.01.30 |