본문 바로가기
반응형

Python113

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.
Python - Regex 개인정보(주민등록번호,전화번호,휴대폰번호,이메일) 패턴 Python의 정규식 표현을 이용해서 개인정보를 탐지할 수 있는데, 다양한 정보를 비교해본 결과 필자 기준으로 적용한 내용들을 정리해본다. 각 탐지 기준은 한국에 맞도록 구성되어 있음을 미리 밝힌다. 그리고 각 탐지 조건은 아래 사이트에서 테스트가 가능하다. https://regex101.com regex101: build, test, and debug regex Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust. regex101.com 1. 주민등록번호 주민등록 번호를 탐지하기 위해서는 2가지 정도의 패턴을 고민했.. 2024. 3. 11.
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. 10.
Python - Timezone 포맷 Datetime 값 비교 오류 TypeError: can't compare offset-naive and offset-aware datetimes 시간 포맷이 생각보다 다양하다는 것을 먼저 인식하고 있어야 문제에 대해 쉽게 접근할 수 있다. 이 오류는 시간 비교시, 서로 간에 포맷이 맞지 않아서 발생하는데, 특히 이 문제가 어려운 경우는 보통 TimeZone 값이 있을 경우라고 할 수 있다. 타임 존이 있는 값과 타임 존이 없는 값은 서로 다른 타입으로 비교가 되지 않기 때문이다. 이 문제를 해결 하기 위해서는 두가지 값중 하나를 맞추어야 하는데, 보통 다음과 같이 해결 할 수 있다. Timezone 추가하기 Timezone은 pytz 파일에서 제공하는데 이를 이용해서 먼저 타임존을 선언해 놓을 수 있다. import pytz UTC.. 2024. 3. 10.
Python - Datetime 특정 시간 간격으로 나누기 DateTime을 특정 시간으로 나누어 실행해야 하는 경우 유용한 함수이다. 방식은 시간의 차이를 계산한 후 이를 나누어야 하는 타임값으로 나누어 저장하는 방식이라고 할 수 있다. 코드는 아래와 같다. import datetime def split_time_range(start_time, end_time, interval): # 시작 시간과 종료 시간을 UTC로 변환 start_time = datetime.datetime.combine(start_time.date(), start_time.time(), tzinfo=datetime.timezone.utc) end_time = datetime.datetime.combine(end_time.date(), end_time.time(), tzinfo=dateti.. 2024. 3. 10.
TSQL - 문자열 포함 확인(Like) TSQL에서 가장 많이 사용되는 것이 바로 문자열 포함유무라고 할 수 있다. 이때 사용할 수 있는 키워드는 바로 Like 이다. 포함 유무이기 때문에 %를 이용해서 앞과 뒤쪽에 문자열에 관계없이 표현할 수 있도록 구성이 가능하다. select from . where like '%com%' select를 이용해서 특정 컬럼을 지정하거나 * 을 이용해 모든 컬럼을 표시하도록 하고 from은 검색을 진행할 데이터베이스와 테이블을 지정한다. 그리고 where 문을 이용해 특정 컬럼을 지정하고 Like로 포함되는 문자열을 지정하면 된다. 2024. 3. 10.
Python - salt와 nonce에 대해 salt와 nonce는 모두 암호화에서 사용되는 용어로, 비밀번호 및 데이터 해킹을 방지하는 데 도움이 된다. salt는 비밀번호에 추가되는 임의의 문자열이다. 비밀번호를 암호화할 때 salt를 사용하면 동일한 비밀번호를 가진 두 사용자의 암호화된 비밀번호가 서로 달라지게 된다. 이는 대규모 데이터베이스에서 비밀번호를 해킹하는 데 사용되는 공통적인 방법인 대조 공격을 어렵게 만들어 암호 보호에 도움이 된다. nonce는 일회용 암호화 키이다. nonce는 암호화 알고리즘에 사용되며, 매번 다른 암호화 키를 생성한다. 이는 같은 데이터를 여러 번 암호화하더라도 매번 다른 암호화된 데이터를 생성하기 때문에, 공격자가 암호화된 데이터를 해독하는 데 어려움을 겪게 만들 수 있다. 예제 코드로 보면 salt와 n.. 2024. 3. 10.
Python - SSL warnings 출력 안하는/비활성화 방법 Python 에서 SSL 인증서를 비활성화 하면, 콘솔 화면에 경고가 출력하게 된다. 이를 비활성화 할 수 있는 방법 urllib3 와 SSLContext를 이용한 2가지 정도를 정리해 본다. 1. urllib3를 이용한 비활성화 import ssl import urllib3 urllib3.disable_warnings() ssl.urllib3.disable_warnings(category=category) 함수를 사용하여 특정 범주의 SSL 경고를 비활성화 할 수 있다. urllib3.exceptions.InsecureRequestWarning: 안전하지 않은 요청에 대한 경고 urllib3.exceptions.InsecurePlatformWarning: 안전하지 않은 플랫폼에 대한 경고 urllib3.. 2024. 3. 7.
반응형