본문 바로가기
반응형

PYTHON73

Python - 딕셔너리(dict) 리스트 정렬 하기(sort) Python 에서는 sort를 이용하여 리스트를 정렬하는 기능을 제공하고 있다. 간편하게 sort라는 내장 함수를 이용하면, 손쉽게 정렬이 가능한데, 일반적인 List 리스트는 이렇게 진행할 수 있다. >>> int_list = [3,5,6,9,2] >>> int_list [3, 5, 6, 9, 2] >>> int_list.sort() >>> int_list [2, 3, 5, 6, 9] >>> int_list.reverse() >>> int_list [9, 6, 5, 3, 2] 한글 역시 가능하며, reversed 내장 함수를 이용하면 추가적인 조작도 가능해진다. 그런데 Key와 Value가 있는 경우에는 리스트 내장함수로는 어렵고 sorted 라는 별도의 내장함수를 이용하여 Lamda로 처리하여야 한다.. 2024. 3. 6.
구글 애드센스 - 광고 무효 클릭 방지 코드/Scrpit 적용하기 블로그를 운영하는 경우 종종 광고 무효 클릭 으로 부터 안전할 수 없다. 이유는 인위적으로 광고 트래픽을 만들어서 광고 수익을 얻는 행위를 막기 위해서 구글 애드센스에서는 동일한 아이피에서 과도한 광고 클릭을 부정행위로 간주한다는 것이다. 그러면 최소 1일에서 최대 30일간 애드센스의 광고비 지급이 중단되는 상황이 발생하게 된다. 따라서 적절하게 대응을 해야 하는데, 이를 직접 광고 클릭 공격을 막기는 쉽지않다. 따라서 아래와 같은 과도한 클릭을 방지하는 자바 스크립트를 통해 공격 방어가 가능하다. 스크립트는 스킨에서 부분에 적용하면 된다. 위 내용을 복사하여 아래와 같이 넣으면 된다. 마지막에 click 과 interval 은 직접 알맞게 조정이 가능하며, inverval은 ms로 기본값은 23초로 이.. 2024. 3. 4.
Python - 리소스 및 코드 하나로 실행, Single-file executables 프로그램을 제작하다보면, 간편하게 배포 할 수 있도록 하나의 파일로 생성해야 하는 경우가 많다. 이유는 프로그램을 실행하는 사람 입장에서는 개발자의 개발 의도를 온전히 이해하기가 어렵기 때문에 운용해야 하는 파일이 많거나 실행 단계가 많다는 것은 사용자에게 복잡함과 실행 오류를 발생할 수 있는 가능성을 높이기 때문에 이를 간소화 하는 것은 매우 중요하다. C# 기준으로도 아래와 같은 리소스를 exe하나로 만드는 형식으로 배포를 많이 하게 된다. 다만 파이썬은 스크립트 형태의 프로그램이기 때문에 리소스를 별도로 구분하지 않고 실제 코드 내용을 생성하고자 하는 Main 파일에 넣어주어야 하며, 파이썬 코드 특성상 들어쓰기를 주의해야 하기 때문에 라인별로 들어쓰기 유지가 가능하도록 구성하면 된다. 먼저 코드를.. 2024. 3. 3.
Python - sqlalchemy bigint를 id 값으로 사용해야 하는 이유 Python 의 기본 ORM 을 사용한다면, id 필드를 통한 unique 값 생성이 기본이다. 기본값은 INT인데, INT로 생성할 경우 최대 생성 가능한 컬럼이 2,147,483,647 까지 가능하다. 만약 이값을 넘어간다면, 추후 BIGINT로 변경하는 것을 고려해야 한다. 따라서 되도록 초기 구성시 INT보다 큰 값을 제공하는 BIGINT를 이용하기를 추천한다. 위 문서에 보면, BigInteger를 통해서 선언이 가능하다. The Type Hierarchy — SQLAlchemy 1.4 Documentation class Asecurity(Base): __tablename__ = "asecurity_table" id = Column(BigInteger, primary_key=True, index.. 2024. 3. 3.
Python - subprocess, Popen, call차이, 작업경로(WorkDirectory) 변경 Python에서 실행중 추가로 프로그램을 실행해야 하는 경우가 발생할 경우 subprocess 모듈을 이용해서 사용할 수 있다. 아마 이모듈을 사용할 때 가장 많은 찾아보게 되는 부분이 Popen과 Call의 차이 그리고 WorkDirectory 변경일 것 같다. 그럼 핵심만 간단히 정리해 보자. Popen 과 call의 차이점 Popen과 call의 가장 큰 차이점은 바로 결과를 기다릴 수 있는 구조인가 이다. 실제로 call은 Popen을 감싼 구조라고 할 수 있다. 즉 Popen으로 실행한 프로그램을 실행을 기다렸다가, 실행이 완료되었을 때 결과를 받을 수 있는 것이 call인것이다. 따라서 실행 결과를 기다릴 필요가 없다면, Popen을 사용하고, 실행 결과를 대기하였다가 확인해야 하는 경우 ca.. 2024. 3. 3.
Python - Http Retry 및 while 을 통한 재시도하기 요즘 REST API 참으로 많이 사용된다. 그런데 HTTP 호출을 사용하다보면, 받아주는 서버가 정상적으로 회신을 주지 않는 경우가 있다. 이러한 경우 어떻게 조치하는게 좋을지 Python에서 제공하는 모듈과 일반적인 방법에 대해서 정리해 본다. 1. while 문 사용 가장 일반적으로 사용되는 방식은 while 문을 이용한 특정 조건이 완료될 때 까지 반복 하는 방법이다. while 문 내에 아래와 같이 1이 나올 때까지 실행하는 방식으로 조건이 완료될 때까지 실행할 수 있다.\ import random while True: number = random.randint(0,1000) if number == 1: print('Bingo') break else: print(number) 이를 조금 웹 코드.. 2024. 3. 3.
Python - 백그라운드/포그라운드 실행 유무 체크 가끔 스스로 내가 현재 백그라운드 실행인지, 포그라운드 실행인지를 체크해야 하는 경우가 발생한다. 이때 유용하게 사용할 수 있는 것이 바로 os.getpgrp()를 통해 현재 프로세스의 그룹과 제어 터미털의 값이 같으면 포그라운드라고 볼 수 있으며, stdout 파일 핸들을 실패하면 프로세스가 백그라운드에서 실행되고 있다고 알 수 있다. 파일 핸들을 얻을 때 예외로 실패되기 때문에 try/except으로 처리를 해줘야 한다. import os import sys def main(): try: if os.getpgrp() == os.tcgetpgrp(sys.stdout.fileno()): print 'Running in foreground.' else: print 'Running in background... 2024. 3. 3.
Python - 함수 주석 설명 팁 프로그램이 길어지고 호출해야 하는 함수가 다양한 파일에 존재한다면, 함수 호출을 위해 도움을 줄 수 있는 설명을 달아주는 것이 효율적이다. 여기서는 함수 설명을 어떻게 달 수 있는지와 알아두면 좋은 3가지 항목에 대해서 설명해 보도록 하겠다. 아래와 같이 test 함수가 있다고 치자. 여기에 설명을 달고자 한다면, 쌍따옴표 3개를 이용해서 감싸고 원하는 설명을 넣으면 된다. def test(a = 'a', b = 1, c = None): """ test 함수입니다. a (str): a value b (int): b value c (str): c value """ pass 이때, 함수에서 사용되는 인자값(아규먼트, 파라메터)도 함께 기입을 해주면 보다 각 인자값들이 어떻게 사용되는지 쉽게 알 수 있기 때문.. 2024. 3. 3.
Python - Workday 공휴일, 날짜 인지 확인 업무일자에만 실행해야 하는 경우 어떻게 만들 수 있을까? 필자의 경우 알람을 개발하는데, 공휴일에 알람이 온다면 알람을 받는 사람도 괴롭고, 실제 알람의 효과도 없을 것으로 이를 개선하기 위해서 비즈니스(업무일자)에만 알람을 전달하는 기능을 개발하기 위해서 추가한 코드를 정리해 보았다. 요약해 보면, Python의 Numpy의 is_busday를 사용하면 쉽게 구현이 가능하다. 코드는 다음과 같다. import numpy import datetime now = datetime.datetime.utcnow() now = now + datetime.timedelta(hours=9) workday = now.today().strftime("%Y-%m-%d") numpy.is_busday(workday) Tru.. 2024. 3. 3.
반응형