분류 전체보기 1116

[python] CRC-32 검사하기

CRC 검사란 무엇인가요?CRC(Cyclic Redundancy Check)는 디지털 네트워크와 저장 장치에서 데이터의 무결성을 확인하는 데 사용되는 오류 검출 코드입니다. 주로 데이터 전송 과정에서 발생할 수 있는 오류를 검출하기 위해 사용되며, 신뢰성을 확보하는 중요한 방법 중 하나입니다.CRC 검사는 다항식을 이용하여 데이터 블록에 대한 체크섬을 계산하고, 수신 측에서 동일한 계산을 수행하여 비교하는 방식으로 오류를 감지합니다. 오류가 없는 경우 계산 결과가 일치하며, 오류가 발생한 경우 불일치가 발생하여 데이터를 다시 요청할 수 있습니다.CRC 검사의 기본 개념CRC 검사는 다음과 같은 단계를 통해 수행됩니다:다항식 선택: CRC 검사를 수행하기 위해 특정 다항식을 선택합니다. 예를 들어, CRC..

"챌린저스(Challengers, 2024)"를 본 후에...

감상  영화에 대한 한줄평 : "이게 어떻게 15세 관람가지?"  저는 영화를 보는 내내 음악이 왜 이렇게 거슬릴까? 왜 이런 이상한 음악을 배경으로 쓴 것인지 의문이었는데, 후기를 찾아보니 음악이 완전 힙하고 멋지다는 평이 더 많았어서 나이가 들어서 그런가 싶었는데...  영화 평론가들의 호평과 후기들도 많은 사람들이 좋다고 하여 더 이해할 수가 없었습니다. 앞서 한줄평에 어떻게 15세 관람가를 받았는지도 아주 의문이들 정도로 남녀의 정상적이지 않은 욕망?들을 보여주는데 단지 선정적인 장면이 많이 나오지 않는다는 이유만으로 15세 관람가라는 것인 납득이 어려웠습니다.  아무리 좋게 포장하여 보려고 해도, 꼰대 기질 때문인지 전 여친이라고 해도 친구의 아내인데도 꼬시고, 승부조작을 위해? 넘어가고... ..

취미/영화보기 2024.07.14

[linux] crontab의 시간 지정자들 (reboot, daily, ...)

개요크론탭(Crontab)은 리눅스 시스템에서 주기적인 작업을 자동화하는 강력한 도구입니다. 오늘은 크론탭의 특별한 시간 지정자들에 대해 자세히 알아보겠습니다.시간 지정자@reboot시스템 부팅 시 단 한 번 실행합니다.사용 예시@reboot /path/to/startup/script.sh활용 사례시스템 부팅 후 즉시 실행해야 하는 초기화 스크립트네트워크 서비스 자동 시작모니터링 도구 자동 실행@yearly (또는 @annually)매년 1월 1일 00:00에 실행합니다.동일한 cron 표현식 : 0 0 1 1 *사용 예시@yearly /path/to/yearly/backup.sh활용 사례연간 시스템 전체 백업연간 로그 아카이빙연간 데이터베이스 정리 작업@monthly매월 1일 00:00에 실행합니다.c..

Linux,Unix,BSD 2024.07.12

[python] Flask 단일 프로세스로 실행하기

개요Flask를 디버그 모드로 실행할 때, 동일한 서버에 대한 프로세스가 두 개가 실행됩니다.일반적인 웹 서비스라면 문제가 없는데, 프로세스 내에서 하나의 자원을 다루어야 하는 경우에 충돌이 발생하는 경우가 있습니다.Flask에서 두 개의 프로세스가 실행되는 것이 버그는 아니고 Flask의 변경된 소스를 다시 읽는(Reloader) 기능 때문입니다.이 기능은 개발 중 코드 변경을 감지하여 자동으로 서버를 재시작하는 데 사용됩니다.Flask는 코드 변경을 감지하기 위해 메인 프로세스와 함께 하위 프로세스를 생성하여 코드를 모니터링합니다.하위 프로세스가 동일하게 실행되기 때문에 서버의 초기화 코드가 두 번 실행됩니다. 그래서 하나의 자원을 다루어야 하는 경우 충돌이 발생하게 됩니다.Flask를 두 개의 프로..

[bash] rc.local과 유사한 서비스 만들기

개요기존 ubuntu에서는 한 번만 실행될 명령은 "/etc/rc.local" 파일에 적어 두면 되었습니다.그러나 ubuntu 버전이 올라가면서 "/etc/rc.local" 파일이 사라졌습니다.crontab 등에 등록하여 여러 꼼수를 쓸 수도 있지만, "systemd"에 부팅 후, 한 번만 실행되는 서비스로 등록하는 것이 crontab 보다는 여러 장점이 있습니다.서비스 등록하기부팅 후, 한번만 실행될 스크립트를 작성합니다.sudo vi /usr/local/bin/run-once.sh부팅 후, 한 번만 실행될 스크립트의 내용은 다음과 같습니다.#!/bin/bash# 실행하려는 명령들 작성# command ...# 실행 후 스크립트 처리 완료 표시# touch /tmp/run-once-completed# ..

Linux,Unix,BSD 2024.07.08

[python] 코드가 실행중일 때, 디버깅 중인지 확인하는 방법

개요파이썬으로 만든 코드를 디버깅할 때와 실제 배포하여 실행될 때 서로 다른 동작을 시켜야할 경우가 있습니다. 디버깅할 때는 디버깅을 위하여 보다 상세한 정보를 출력한다던지 성능과 관계없이 디버깅을 위한 부분을 더 추가해 주게 되는데, 실제 실행할 때는 불필요한 부분입니다.이번에는 파이썬 코드가 실행중일 때, 디버깅 중인지 확인하는 방법을 알아 보도록 하겠습니다.sys.gettrace()from sys import gettracedef is_debugging(): return (gettrace() != None)DEBUGPY_RUNNING 환경변수from os import getenvdef is_debugging(): return bool(getenv('DEBUGPY_RUNNING'))pdb ..

[Python] 품질 설정과 함께 이미지를 JPEG로 저장 방법들

개요Python에서 이미지를 품질 (Quality)을 지정하여 JPEG 형식으로 저장하는 여러 가지 방법을 정리해 둡니다.PIL(Python Imaging Library)/Pillowfrom PIL import Image# 이미지 열기img = Image.open('input.png')# JPEG로 저장img.save('output.jpg', format = 'JPEG')# 품질 설정하여 저장 (1-95)img.save('output_quality.jpg', 'JPEG', quality=85)# RGB로 변환 후 저장 (알파 채널이 있는 경우)img_rgb = img.convert('RGB')img_rgb.convert('RGB').save('output_rgb.jpg', 'JPEG')가장 널리 사용되는..

[Python] Flask - Server 헤더 변경하기

개요Python Flask로 웹 애플리케이션을 구현하고, 서버의 응답 헤더를 보면 다음과 같은 형태로 표시됩니다.HTTP/1.1 200 OKServer: Werkzeug/2.2.2 Python/3.11.2Date: Tue, 07 Jan 2025 03:00:59 GMTContent-type: application/json; charset=utf-8Content-Length: 1043Connection: close"Server" 헤더에 Flask 및 Python 버전 정보가 표시됩니다.본 글에서는 보안상의 이유 등으로 "Server" 헤더 정보를 변경하는 방법에 대하여 자세히 살펴 보겠습니다.WSGIRequestHandler.server_version응답의 "Server" 헤더 정보를 변경하는 가장 확실한 ..

[python] "v1.v2.v3.v4" 버전 문자열을 숫자들로 변환하기

개요일반적으로 이용하는 "v1.v2.v3.v4" 버전 문자열에서 각각의 숫자들을 추출하는 방법을 알아 보겠습니다.크게 두 가지(split(), 정규식) 방법으로 추출할 수 있습니다.split() 메소드 이용법간단하게 문자열의 split() 메소드를 이용하여, 버전 문자열의 "." 문자로 나누어서 int 형식으로 변환하면 됩니다.version_str = "1.2.3.4"parts = version_str.split('.')v1, v2, v3, v4 = map(int, parts)직관적이지만 "1.2.3.4a"과 같이 알파벳이 입력된 경우 "ValueError: invalid literal for int() with base 10: '4a'"와 같은 오류가 발생합니다.따라서 올바른 버전 문자열이 입력되었는지..

[Python] 현재 시간대에 대한 OFFSET 시간 (UTC) 구하기

개요파이썬에서 현재 시간대에 대한 OFFSET 시간 정보를 확인하는 방법을 정리해 둡니다.datetime 활용UTC 기준 시각으로부터 현재 시간대에 대한 OFFSET 시간은, 우리 나라의 경우 +9시간입니다. 이 값을 구하는 몇 가지 방법을 간단하게 알아 보겠습니다.첫 번재는 datetime 패키지를 이용한 방법입니다.from datetime import datetimelocal_now = datetime.now()utc_now = datetime.utcnow()offset = local_now - utc_nowprint(f"UTC Offset : {offset} / {offset.seconds / 3600:+.1f} hours")단순하게 현재 시간대의 datetime을 구한다음 UTC 시간대의 date..

728x90