목록분류 전체보기 (341)

수학과의 좌충우돌 프로그래밍

[WEB] Authentication (1) 세션과 쿠키

Authentication 우선 Authentication이 뭔지부터 알아봅시다. 여러분이 어떤 서비스를 이용할 때, 아이디와 비밀번호를 입력하고 로그인을 한 경험이 있으실 겁니다. 이것이 바로 여러분이 서버로 부터 인증을 받은 겁니다. 인증을 받았기 때문에 로그인한 사용자가 할 수 있는 여러 동작들에 대해서 허락을 맡게 된거죠. 유저 입장에서는 아이디와 비밀번호를 입력하여 로그인을 하더라도 서버에서는 이를 구현하는 방법이 굉장히 다양합니다. stateless한 HTTP 기본적으로 서버와 클라이언트는 HTTP를 통해 통신을 합니다. 하지만 HTTP는 connectionless하기 때문에 클라이언트의 요청에 대해서 응답을 하고 바로 연결을 끊어버리게 됩니다. 그렇기 때문에 HTTP는 stateless하다고..

웹프로그래밍/이론 2020. 7. 6. 03:56
[Django] 웹서버, Nginx 사용하기

Django-WSGI-중-uWSGI를-통해-django-실행 [Django] WSGI 중 uWSGI를 통해 django 실행 django-AWS-EC2로-배포 [django] AWS EC2로 배포 Amazon EC2란? EC2란 Amazon Elastic Compute Cloud의 즐임말로서 AWS에서 제공하는 클라우드 컴퓨팅입니다. 이를 통해 하드웨어 구매없이 더 빠르게 애플리케이션.. ssungkang.tistory.com 저번 포스팅에서 uWSGI를 사용하여 django를 웹서버와 연결시킬 준비를 마쳤습니다. 이번 포스팅에서는 본격적으로 웹서버에 대해서 알아보도록 하겠습니다. 웹서버란 웹서버란 HTTP를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프..

웹프로그래밍/Django 2020. 6. 19. 18:02
[Django] WSGI 중 uWSGI를 통해 django 실행

django-AWS-EC2로-배포 [django] AWS EC2로 배포 Amazon EC2란? EC2란 Amazon Elastic Compute Cloud의 즐임말로서 AWS에서 제공하는 클라우드 컴퓨팅입니다. 이를 통해 하드웨어 구매없이 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2를 ssungkang.tistory.com 저번 포스팅에서 django를 AWS의 EC2를 이용하여 배포하고 접속을 해보았습니다. 하지만 EC2에서 django 서버를 실행시킬 때 runserver 명령을 통해 실행하였습니다. runserver 를 사용한 실행은 개발용 서버를 실행하는데 적합하지, 실제 서비스를 운영하는데 부적합합니다. 따라서 실제 서비스에서는 웹서버를 이용을 합니다. 웹서버는 ..

웹프로그래밍/Django 2020. 6. 19. 05:00
[python] Decimal vs Float, 고정소수점과 부동소수점

Float 우선 특별한 작업없이 소수를 사용할 경우 이는 float 타입으로 선언이 됩니다. 하지만 아래 결과를 보면 0.1을 할당한 a는 실제로 0.1이 아닌 많은 소수점을 가지고 있습니다. 왜 이런 문제가 발생하는 것일까요? a = 0.1 print(type(a)) print(f"{0.1: .30f}") # # 0.100000000000000005551115123126 컴퓨터가 실수를 표현하는 방식 아마 다들 아실테지만 컴퓨터는 기본적으로 2진수를 사용합니다. 그렇기 때문에 정수를 표현할 때는 문제가 되지 않지만 소수를 표현할 때는 문제가 발생합니다. 예를 들어 10진수 0.3을 2진수로 표현한다고 하면 0.01001100110011... 다음과 같이 표현이 됩니다. 무한히 0011이 반복되죠. 이러..

프로그래밍 언어/Python 2020. 6. 10. 23:15
[AWS] EC2에 Elastic IPs, 탄력적 IP를 통한 IP 고정

AWS EC2를 만들게 되면 퍼블릭 DNS와 IP를 할당받습니다. 하지만 이는 해당 EC2 인스턴스에 할당된 고정값이 아닙니다. 인스턴스를 stop하고 다시 start한다면 퍼블릭 DNS와 IP 둘 다 바뀌는 걸 볼 수 있습니다. 결국 해당 EC2에서 동작하는 서버와 연결하고 있는 클라이언트는 인스턴스를 껐다 켤 때마다 다시 새로운 주소로 연결을 해야합니다. 그렇기 때문에 AWS에서는 이러한 문제를 Elastic IP 를 통해 해결할 수 있습니다. Elastic IPs AWS 왼쪽 메뉴에 Elastic IPs 혹은 한국어로 탄력적 IP로 들어가줍니다. 오른쪽 위에 탄력적 IP 주소 할당 을 눌러 탄력적 IP 주소를 만들어줍시다. 그 결과 주소가 생긴걸 확인할 수 있고 이제 연결을 진행해봅시다. 이 곳에서..

카테고리 없음 2020. 6. 9. 21:54
[django] AWS EC2로 배포

Amazon EC2란? EC2란 Amazon Elastic Compute Cloud의 즐임말로서 AWS에서 제공하는 클라우드 컴퓨팅입니다. 이를 통해 하드웨어 구매없이 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2를 통해 원하는 만큼 가상 서버를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 가능합니다. 또한 Amazon EC2는 요구 사항이나 갑작스러운 인기 증대 등 변동 사항에 따라 신속하게 규모를 확장하거나 축소할 수 있어 서버 트래픽 예측 필요성이 줄어듭니다. AWS에서 EC2 인스턴스 생성 그러면 AWS에 접속해서 위에서 설명한 EC2 인스턴스를 만들어주겠습니다. https://ap-northeast-2.console.aws.amazon.com/console/ho..

웹프로그래밍/Django 2020. 6. 9. 21:19
[python] 파이썬의 정렬, Tim Sort

Tim Sort python에서의 정렬 함수 sorted()와 list.sort()에 사용된 정렬 알고리즘은 Timsort, 팀정렬입니다. 팀정렬은 파이썬 핵심 개발자인 팀 피터스에 의해서 Cpython에서 처음으로 구현되었으며 2009년 이후 표준 자바 및 안드로이드, swift 등 여러 언어에서 사용되고 있습니다. 이는 데이터의 정렬된 정도에 따라 삽입정렬과 병합정렬 사이를 전환하는 적응형 알고리즘입니다. 두 정렬방법을 결합했기에 안정적이며, 추가 메모리는 사용하지만 기존의 병합정렬에 비해 적은 추가메모리를 사용하여 다른 O(nlogn) 정렬 알고리즘의 단점을 최대한 극복한 알고리즘입니다. 알고리즘의 원리 위에서 언급했듯이 팀정렬은 삽입정렬과 병합정렬을 함께 사용하고 있습니다. 병합정렬은 추가적인 메..

프로그래밍 언어/Python 2020. 6. 3. 03:20
[Django] Clickjacking Protection, 클릭 재킹 방지

클릭 재킹이란? 클릭재킹 이란 UI 수정 공격이라고도 하며 사용자가 본인이 인식하는 것과 다른 항목을 클릭 하도록 속여서 기밀 정보를 공개하거나 다른 사람이 자신의 컴퓨터를 제어하도록 하는 악의적인 기술입니다. 예를 들어 생각을 해봅시다. 구매 버튼을 눌러 물건을 구입할 수 있는 온라인 사이트가 있습니다. 여기서 구매와 관련 없는 버튼들 위에 보이지않게 투명 iframe을 만들어 물건을 구매하게 하는 방법인것이죠. 클릭 재킹 방지 이를 방지하기 위해서 브라우저에서 이에 대한 보안을 관리하고 있습니다. 자원이 frame 또는 iframe 내에서 로드 될 수 있는지 여부를 판단하기 위해 HTTP header의 X-Frame-Options 를 사용합니다. 이 값이 SAMEORIGIN 이고 같은 사이트에서 요청..

웹프로그래밍/Django 2020. 5. 6. 18:06