Computer Science (10) 썸네일형 리스트형 캡슐화와 역캡슐화란? 캡슐화와 역캡슐화란? 컴퓨터 A에서 컴퓨터 B로 데이터를 보낸다고 생각해보자. 데이터를 보내려면 우선 보내고 싶은 송신 데이터가 있을것이다. 그리고 이 데이터를 전송하는데 필요한 정보와 전달받을 상대방에 대한 정보가 필요한데 이 정보를 헤더라고 한다. 그래서 송신 데이터 앞에 헤더를 붙이는데 이 과정을 캡슐화라고 한다. 한편 데이터를 받는쪽에서는 헤더를 하나씩 제거하는데 이것을 역캡슐화라고 한다. [Python] 이터레이터(iterator)와 제너레이터(generator) 이터레이터 이터레이터는 next() 함수 호출 시 계속 그다음 값을 반환하는 객체이다. >>> a = [1, 2, 3] >>> ia = iter(a) >>> type(ia) >>> next(ia) 1 >>> next(ia) 2 >>> next(ia) 3 리스트는 for문과 같은 반복 구문을 적용할 수 있는 반복 가능(iterable) 객체이지만, 이터레이터 객체는 아니다. >>> a = [1, 2, 3] >>> next(a) Traceback (most recent call last): File "", line 1, in TypeError: 'list' object is not an iterator 이터레이터의 값을 가져오는 가장 일반적인 방법은 다음과 같이 for문을 이용하는 것이다. for문을 이용하.. [Python] GIL(Global interpreter Lock), 파이썬 병렬 처리 속도 향상, multiprocessing GIL GIL(Global interpreter Lock) : 파이썬 인터프리터가 객체들에 대한 접근을 보호하기 위해 한 스레드만 하나의 바이트코드를 실행 시킬 수 있도록 해주는 Lock 파이썬은 이러한 GIL 때문에 싱글스레드 기반병렬 처리가 어렵다. 이를 해결하기 위해, Spark에서 병렬 모듈을 쓰거나 파이썬에서 병렬 프로세싱을 지원하는 라이브러리를 쓸 수 있다. multiprocessing multiprocessing은 Python에서 멀티 프로세스를 활용하여 2가지 또는 그 이상의 일을 동시에 실행할 수 있게 하는 모듈이다. ex) 다음은 CPU 연산이 많은 heavy_work() 함수를 4번 실행하고 그 소요 시간을 측정하는 예제이다. import time def heavy_work(name).. TCP/IP 란? TCP/IP OSI 모델 7계층을 4계층으로 바꾼 모델을 TCP/IP 모델이라고 한다. 인터넷에서 표준으로 사용되고 있는 네트워크 프로토콜(규칙)을 의미한다. TCP/IP는 IP(Internet Protocol)을 중심으로 한 여러 프로토콜의 집합체로, TCP/IP 5계층 혹은 TCP/IP 4계층(링크계층과 물리계층을 하나의 계층으로 보는 경우)으로 불린다. TCP 신뢰성 있는 패킷 전달을 지원 IP 프로토콜을 이용해 전달된 패킷의 신뢰성을 보장 신뢰성, 연결지향 프로토콜 데이터의 안전한 도착을 확인 연결 설정과 해제 과정이 존재 포트 번호 사용 IP 라우터간 이동을 통해 호스트를 찾아가는 역할 담당 타겟 서버에 패킷 전달 담당 비신뢰성, 비연결형 프로토콜 best-effort 방식 TCP/IP 5계층 .. HTTP와 HTTPs, REST API와 RESTful API 란? HTTP(HyperText Transfer Protocol) 컴퓨터들의 통신 규약(protoco) 중 하나로, 웹에서 사용하는 프로토콜 통신 간 사용하는 형식이라고 생각하면 쉽다 ex) 우편 형식 : 사람이 알아보는 형식 HTTP 형식 : 컴퓨터가 알아보는 형식 HTTP 는 크게 요청 (HTTP Request)과 응답 (HTTP Response)으로 나뉘어져 있다 HTTP Request 한 컴퓨터가 다른 컴퓨터에 리소스 요청을 보낼 때 사용 클라이언트의 목적에 따라 다르게 분류 ex) 네이버에 접속할 때 웹 페이지를 달라고 요청할 수도 있고, 로그인 할 때에는 정보가 맞는지 확인을 해달라고 요청할 수도 있음 CRUD 에 사용되는 HTTP 메소드 GET : 특정 리소스를 달라고 할 때에 사용 예시: 페이지.. XML, JSON, YAML이란? XML - 안정성! Izzy Siamese 6 yes no Izz138bod Colin Wilcox 정보를 서버와 클라이언트 사이에서 주고 받을 때 사용된다. 와 같은 형태로 표현되며 엔터와 탭으로 indenting이 된 형태를 가진다. XML minifie 를 사용하면 엔터와 탭을 제거하고 한줄로 표현된다. 여는태그와 닫는 태그를 사용하기 때문에 정보를 읽는데 문제는 없다. XML formatter를 사용하면 다시 한줄로 indenting이 된다. XML은 열고 닫는 태그가 있기 때문에 HTML 작성 시 일부 오타가 들어가도 읽을 수 있다. XML XSD를 사용하면 스키마를 사용하여 문법을 검증할 수 있다. 그러나 XML은 같은 태그를 두 번 입력해야 하고 indenting이 된 형태도 가독성이 떨어진.. IP, DNS, Port(포트), Server(서버) 란? 웹 브라우저에 URL을 입력하면 웹 서버라 불리는 프로그램이 웹 브라우저에 웹 페이지를 제공한다. IP주소는 192.168.0.1 과 같은 숫자들로 구성되어 있어서 외우기 쉽지 않다. 이런 이유로 IP 주소 대신에 "seokhee0516.tistory.com"과 같이 사람이 기억하기 좋은 도메인 이름을 사용한다. IP 주소 웹 서버가 다른 컴퓨터에서 실행되고 있기 때문에, 웹 브라우저가 웹 서버에 연결하려면, 웹 서버가 실행중인 컴퓨터의 주소를 알아야 하는데, 이 주소를 IP 주소라 한다. DNS(Domain Name Server) 웹 브라우저와 웹 서버는 IP 주소를 이용하여 연결하기 때문에 도메인 이름을 IP 주소로 변환할 필요가 있는데, 이 때 사용하는 것이 바로 DNS이다. Port(포트) 한 개.. 유닉스 커맨드 유닉스(Unix)란? : 1970년대 초반에 개발된 운영체제 소프트웨어를 개발하고 실행할 수 있는 플랫폼 쉽게 수정해서 다른 컴퓨터에 적용할 수 있음 유닉스를 기반으로 하는 다양한 운영체제 맥os, 리눅스, 우분투 등이 유닉스에서 파생된 유닉스 운영체제 사용하는 커맨드가 비슷함 윈도우 운영 체제에 윈도우 커맨드도 있지만 개발에서는 유닉스 커맨드가 보편적으로 사용됨 웹사이트 배포, 프로그램 개발 시 강력한 서버 컴퓨터를 사용하기 위해 유닉스 커맨드가 사용됨 파일과 디렉토리 커맨드 man(manual) : 커맨드 옵션, 사용법 등을 출력 pwd (print working directory) : 현재 디렉토리 (working directory)의 경로를 출력 cd (change directory) 사용법: c.. 이전 1 2 다음