본문 바로가기
반응형

분류 전체보기856

Django - 메일 주소 표준화, 자동 교정하기 email 사용자 정보를 입력을 받는 경우 보통 개발자의 의도와 다르게 입력되는 경우가 많다. 특히 표준화된 포맷이 있는 경우 사용자의 입력을 믿기 보다는 교정을 해주는 것이 바람직하다. 여기에서는 django 에서 제공하는 기능으로 email address를 표준으로 자동 교정해주는 기능을 사용해보고자 한다. Email 주소의 표준은 도메인 주소를 소문자로 표기하는 것이라고 할 수 있겠다. 본기능은 UserManager에서 사용할 수 있으며, 다음과 같이 사용이 가능하다. """ Database Model """ from django.db import models from django.contrib.auth.models import BaseUserManager class UserManager(BaseUserMan.. 2024. 3. 14.
SQLAlchemy - Database Connection Pool 관리 Python에서 많이 활용하는 SQLAlchemy 기준으로 Database를 관리하는 방안에 대해서 정리해 보고자 한다. Python은 Database를 연결 할때 Connection Pool을 통해서 관리하는데, Connection Pool 은 데이터베이스로의 추가 요청이 필요할 때 기존 연결을 재사용하는 방법으로 연결시 사용되는 리소스를 절약하는 구조라고 할 수 있다. 이유는 TCP 연결은 새로운 연결시 기본적으로 TCP 3 Way-Handshake를 진행하는데 이 부분에 대한 자원 소모는 상당한 편이다. 그리고 요청이 많은 경우 기존 연결된 Connection을 활용하면 상당한 리소스를 절약할 수 있다. 다만, Database에 연결하는 Connection Pool은 연결 관리를 해주지 않을 경우,.. 2024. 3. 14.
Python - Random 정수/소수점/리스트 이해 Random 함수를 통해 숫자 랜덤을 쉽게 구현할 수 있다. 특정 범위 혹은 리스트에서 임의의 값을 선택해야 할 때 유용하므로 자주 사용된다. 여기에서는 가장 많이 사용되는 정수와 소수점, 리스트에 대해 알아보고자 한다. 리스트 - choice >>> import random >>> my_list = ['a', 'b', 'c'] >>> random.choice(my_list) 'c' 정수 - randint >>> import random >>> random.randint(1,10) 10 >>> random.randint(1,10) 5 소수점 - unifrom >>> import random >>> random.uniform(0.2, 0.7) 0.38972597256511843 >>> >>> random... 2024. 3. 14.
Python - Session, HTTPAdapter 효율적인 ConnectionPool 관리 파이썬에서 HTTP Session을 통해 빠르게 연결을 지속 사용할 수 있다. 여기에서는 실제 사용중 발생했던 내용에 대해 정리하여, 추후 HTTP Connection 이해를 하는데 도움이 되고자 한다. Session TCP 연결시 본격적으로 데이터를 요청하기전에 네트워크를 연결하는 작업을 진행하게 된다. 이를 TCP 3-Way Handshake 라고 하며, 매 데이터를 요청할 때 마다 새로 연결 작업을 한다는 것은 데이터 처리에 그만큼 시간이 더 걸리게된다. 이러한 부분을 개선해서 동작할 수 있는 구조가 최초 연결한 Session을 만든이후 만든 세션을 재사용하여 요청을 처리하는 구조이다. 이는 보통 HTTP Keep-alive 와 같은 구조로 Python 코드로는 다음과 같이 이용할 수 있다. imp.. 2024. 3. 14.
Python - 왜 좋을까?, 해야 하는 이유 Python 현재 2022년 직업 구인 공고 기준으로 소프트웨어 언어로 1위를 달리고 있다. 필자 역시 현재 Python을 이용하여 개발을 진행하고 있는데, Python이 왜 좋은지 간단히 정리해 본다. 1. 웹 개발 웹 언어 부분에 대해서 Python을 이용할 경우 다양한 프레임 워크를 제공하고 있어서 용도에 알맞게 개발을 용이하게 진행할 수 있다. 가장 가볍게 개발할 수 있는 Flask 부터 REST API 를 쉽게 개발 할 수 있는 FastAPI, Full-Stack 기반으로 프론트를 포함한 MVC 기반의 개발을 지원해주는 Django까지 본인의 환경에 맞춰서 선택한다면 적은 코드로도 휼륭한 결과를 만들 수 있을 것이다. 성능적인 부분 역시 상당한 부분 과거보다 개선되어 문제없이 사용이 가능하다. .. 2024. 3. 14.
VSCode - Python 라이브러리 자동 완성 안될 때 Django에서 자동완성이 되지 않는 상황에서 어떻게 해결할 수 있을까 정리해본다. 보통 이런 상황은 가상 환경이거나, Docker 환경등에서 발생할 가능성이 높다. 이유는 현재 VS Code에서 바라보는 Python 실행 환경이 django 라이브러리를 인식할 수 없는 상태이다. 즉 다중 환경으로 개발을 하는데 현재 VSCode의 환경에서는 사용이 불가능 하다는 얘기이다. 따라서 해결 방법으로는 2가지가 있다. 1. 현재 환경에 Django 환경과 동일하게 라이브러리를 설치해준다. 2. Django 를 개발하는 환경의 Python 경로를 입력한다. 첫번째 방법은 개발 환경마다 따로 구성할 필요가 없도록 구성하여 개발 편의성은 있지만, 라이브러리의 기능적 문제나 환경 문제등에 민감하지 않기 때문에 문제가.. 2024. 3. 14.
Python/Django - 리스트 마지막 콤마?! Python 코드를 보다보면 리스트를 작성할 때 마지막에 콤마를 찍는 경우를 볼 수 있다. 필자는 콤마를 찍지 않는 편인데, 콤마를 찍는 사람들 보고 이상하게 느껴졌다. 콤마를 왜 찍는 거지? 실제 동작은 콤마를 찍으도 찍지 않아도, 정상적으로 동작한다. 얘기를 들어보면, 단순하다. 습관이라는 것이다. 그리고 Github 이나 여러 개발자 여러 개발자들이 콤마를 찍는 습관이 널리 퍼진 것이라고 할 수 있다. 요약해보면, List 새로 추가할 때 기존 콤마를 고려하지 않기 위해 미리 마침표 처럼 찍는 것 깔끔히 마무리하기 위해서 마침표 처럼 찍는 것으로 보인다. 2024. 3. 14.
Django - django-admin을 찾지 못할때 django 패키지를 설치했는데 django-admin을 찾지 못한다면, path 경로에 문제가 있을 수 있다. 먼저 자신이 설치한 pip 혹은 pip3의 버전 정보를 통해 python이 동작한 디렉토리를 확인한다. pip -version 확인해보면 아래와 같이 현재 동작한 경로 정보를 알 수 있다. 패키지에서 사용하는 파일은 윈도우 기준으로 위 디렉토리 하위에 LocalCache\local-packages\Python버전 명\Scripts 위치한다. 해당 경로로 이동하여 LocalCache 디렉토리가 있는지 확인한후 따라 들어가도록 하자. PS C:\Users\Han\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0> l.. 2024. 3. 14.
웹게임 - 아랑전설 3 아랑전설 2로부터 3년 후, 사우스타운은 다시금 혼란에 빠진다. 죽은 줄 알았던 기스 하워드가 부활하여 새로운 음모를 꾸미고 있었던 것이다. 주인공 테리 보가드는 기스의 야망을 막기 위해 다시 한번 싸움에 나선다는 스토리를 가지고 있다. 아랑전설 3은 1992년에 SNK에서 개발 및 출시되었고, 2012년에는 플레이스테이션 3, 엑스박스 360, 윈도우용으로 리메이크 버전이 출시되었다. 게임 방법 1. 시작 : Load후 'PLAY NOW' 버튼 클릭 2. 동전 : SHIFT 3. 시작 : ENTER 4. 조작키 이동 : 방향키 A : Z B : X C : A D : S 2024. 3. 14.
반응형