본문 바로가기

app/python

(50)
[python] 서버를 만들어보자(1) echo-server 소켓 프로그램이 네트워크에서 데이터를 송수신할 수 있도록, “네트워크 환경에 연결할 수 있게 만들어진 연결부”가 소켓이며, 소켓은 일반적으로 클라이언트 및 서버 상호작용에 사용됩니다. 보통 OSI 7 Layer(Open System Interconnection 7 Layer)의 네 번째 계층인 TCP(Transport Control Protocol) 상에서 동작하는 소켓을 주로 사용하는데, 이를 "TCP 소켓" 또는 "TCP/IP 소켓"이라고 부릅니다. (UDP에서 동작하는 소켓은 "UDP 소켓"이라고 합니다.) - 해당 포스트에서는 TCP 소켓을 다룹니다. 소켓의 실행 흐름 서버 1. socket() API가 통신을 위한 종료점을 작성하고 소켓 객체를 리턴한다. 2. Bind() 네트워크 엑세스를 위해..
[python] 서버의 기본 동작 방식 2 - 내용이 길어서 두개로 나눴습니다. 전편을 읽고 오는게 도움이 됩니다. - 해당 글은 python 3.6을 기준으로 작성하였습니다. 앞써 서버의 시작과 유저의 요청을 받기 위해 어떠한 동작들이 일어나는지 살펴 보았습니다. 그러면 유저가 요청을 보냈을 때 서버에서는 어떠한 동작들이 일어나는걸까요? 4. 포트에서 request까지 다시 공식 문서를 보시면 https://docs.python.org/3.6/library/http.server.html """ class http.server.BaseHTTPRequestHandler(request, client_address, server) This class is used to handle the HTTP requests that arrive at the se..
[python] 서버의 기본 동작 방식 - 해당 글은 python 3.6을 기준으로 작성하였습니다. - mac 환경에서 작성하였으며, 다른 운영체제에서는 다르게 동작할 수 있습니다. 1. 유저 요청에서 서버까지 브라우저를 통해 사이트를 접속하면 위의 그림과 같이 (1) 유저는 서버에 요청을 보내고 (2) 서버에선 요청을 받아 처리한 후 (3) 응답 메시지를 유저에게 전달하고 (4) 브라우저는 우리에게 화면을 보여준다 유저들의 간단한 url 입력만으로 위의 동작이 발생하며, 세부적으론 http의 통신 규약 , DNS탐색, 라우터 통신, 응답받은 데이터를 통한 브라우저의 디스패치, 랜더링의 많은 일들이 일어나게 됩니다. 이러한 많은 일들을 뒤로하고 우리의 백엔드 개발자들은 다양한 프레임워크를 통해 서버를 쉽게 구동하고, 웹서버를 실행하여 유저에게..
python heap 구현 소스 # -*- coding: utf-8 -*- class Heap: def __init__(self): self.arr = [] def reheap_down(self, idx): if (idx*2) + 1 right: large = idx * 2 + 1 else: large = idx * 2 + 2 if self.arr[idx] < self.arr[large]: self.arr[idx], self.arr[large] = self.arr[large], self.arr[idx] self..
python zen (계속 갱신중) 1. get list element in a list of tuples a = [(1, u'abc'), (2, u'def')] # 기존 방법 def _seperate(l_wstnid_and_weight): l_wstnid, l_weight = [], [] for k, w in l_wstnid_and_weight: l_wstnid.append(k) l_weight.append(w) return l_wstnid, l_weight print(_seperate(a)) # 간략하고 쉽게 unzip = list(zip(*a)) print((unzip[0], unzip[1])) 2. zip a = dict(one=1, two=2, three=3) b = {'one': 1, 'two': 2, 'three': 3} c ..
python datetime / date from datetime import datetime, timedelta import pytz # 현재 시간 now = datetime.now() print(now) # 시간 지정 생성 set_datetime = datetime.strptime('2019-12-31 00:00:00', '%Y-%m-%d %H:%M:%S') print(set_datetime) # datetime to date set_date = datetime.strptime('2019-12-31 00:00:00', '%Y-%m-%d %H:%M:%S').date() print(set_date) # 정각으로 설정하기 datetime.combine(now, datetime.min.time()) # 시간 더하기 뺴기 before = now - ..
pycharm 프로젝트 시작시 venv 셋팅 python 프로젝트를 할때마다 환경 설정이 다르기 때문에 (python 버전이나 설치 패키지들.) virtualenv 모듈을 통해 가상환경을 만들어 줘야 합니다. 해당 포스팅은 pycharm에서의 virtualenv 셋팅에 대한 글입니다. (mac 환경에서 진행하였으며, python3.7 / pip3 를 기본으로 하였습니다.) 0. pycharm에서 가상환경 생성하기(생성 및 적용까지 빠르게 하기) pycharm-> preferences -> project -> python interpreter -> 인터프린터 선택에서 show all 클릭!! add (+) 버튼 클릭 new environment 에서 원하는 경로로 설정하고 OK! 끝! 0. pip 패스 설정 (pip가 동작 안할때) 더보기 먼저 하단..
python 시작시 작업들 pytest 설치테스트 코드를 작성하고 실행할 수 있도록 pytest를 설치한다.pip install -U pytest간단히 hello_test.py를 만들어 보자.def test_hello(): assert hello('JOKER') == 'Hello, JOKER!'pytest를 실행하면 해당 프로젝트의 *_test.py 파일 안에 있는 모든 test_* 테스트 함수를 확인하게 된다.pytest간단히 통과시키자.def hello(name): return 'Hello, {}!'.format(name) def test_hello(): assert hello('JOKER') == 'Hello, JOKER!'파일이 수정될 때마다 자동으로 실행하게 하려면 pytest-watch를 쓰면 된다.pip install..