전체 글 63

[Python] Pystray를 통한 멀티스레드 종류

개념을 먼저 설명하자면, - 프로그램 : 어떤 작업을 하기 위해 실행할 수 있는 파일 (작업관리자에서 조회 불가)- 프로세스 : 어떤 작업을 하기 위해 실행되고 있는 상태의 프로그램 (작업관리자에 조회 가능)- 스레드 : 프로세스 내에서 동시에 진행되는 흐름의 단위로 스레드는 코드, 데이터, 힙, 스택으로 이루어져 있으며, 이 중에서 스택만 독립적인 영역으로 사용하고,나머지 3가지 요소는 프로세스 내의 공유 자원으로써 다른 스레드와 같이 사용합니다. 이렇게 한 프로세스에서 여러 스레드가 생성되어 동시에 실행되는 구조를 멀티 스레드라고 지칭할 수 있습니다.(크롬으로 유튜브를 보면서 웹서핑과 파일 다운로드를 동시에 진행하는 것이라고 볼 수 있음) 여기서는 Python에서 사용할 수 있는 Pystray 예제..

[Python] 윈도우 알림 라이브러리 (win11toast)

우측 하단에 실행되는 윈도우 알람을 설정하기 위한 파이썬 라이브러리입니다.from win11toast import toast # 팝업 문자from pathlib import Path # 아이콘 설정 경로 모듈toast('Nice work', 'Hello', on_click = 'https://naver.com', icon=str(Path('think.jpg').resolve()), duration = 'short')# 만약 로그가 남는 게 싫다면 뒤의 값에 추가 가능 (on_dismissed=lambda *args: None) 위와 같은 명령어를 실행하였을 경우, 아래와 같은 토스트 메세지가 출력됩니다. (사진은 직접 추가하셔야 합니다.) 위 라이브러리를 통해 간단한 팝업이나 하이퍼링크 연결부터, 프..

[리눅스] Centos 9 에 Snipe-it 설치하기

오라클 버추얼 박스에서 설치를 진행했으며, 사용 Centos OS 버전은 9 버전입니다. su - root# 시스템 업데이트 및 방화벽 설정sudo dnf update -y # 시스템 패키지 업데이트sudo systemctl start firewalld # 방화벽 시작sudo systemctl enable firewalld # 부팅 시 자동 실행# HTTP 포트(80) 오픈sudo firewall-cmd --zone=public --add-port=80/tcp --permanentsudo firewall-cmd --reload# Apache 웹 서버 설치 및 실행sudo dnf install -y httpd # Apache 설치sudo systemctl start httpd.service # A..

[Python] 사진을 이용해서 워드클라우드로 출력하기

워드클라우드 실행 시 사각형 화면에 키워드 값이 무작위로 출력됩니다.이를 특정 사진과 동일한 규격과 색깔로 만들어주는 작업을 거치는 방법입니다.  먼저 필요 라이브러리를 추가해줍니다.from wordcloud import WordCloudimport matplotlib.pyplot as pltfrom PIL import Imageimport numpy as npfrom wordcloud import ImageColorGenerator 먼저 tdata를 통하여 메모장에 적힌 단어값을 불러오고, 기준이 될 사진을 가져와 마스크를 만들어줍니다.tdata = ''filename = 'temp.txt'with open(filename, 'r', encoding="utf-8") as file: for ..

[Python] User-Agent 우회 (requests로 디시 접속 불가 시)

기존 python requests 로 사이트 접속 불가 시 user-agent를 설정하여 접속이 가능합니다. import requests# requests 라이브러리에서 기본으로 사용하는 User-Agent 문자열을 출력default_ua = requests.utils.default_user_agent()print("Default User-Agent:", default_ua)headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/115.0.0.0 Safari/537.36"}r = ..

카테고리 없음 2025.02.02

[Python] imgur api로 imgur에 사진 업로드하기

ImgurImgur: The magic of the Internetimgur.com가장 먼저 위 링크에서 API 키를 발급받습니다. 아래의 코드에 알맞게 자신의 ID 및 API를 입력한 후 출력되는 링크를 이용하여 웹에서 이미지를 이용할 수 있습니다.import requestsimport base64import jsonheaders = {"Authorization": "Client-ID " + "imgur ID 입력"}url = "https://api.imgur.com/3/upload.json"t_img = ''print('이미지 업로드 중...')r = requests.post( url, headers = headers, data = { 'key': "Key 입력", ..

[Python] 로컬 이미지를 클립보드에 복사하기

컴퓨터 내부 저장소에 저장되어 있는 사진들을 클립보드로 복사하는 코드입니다. 셀레니움 작업 중 작성중인 게시글에서 클립보드로 복사 붙여넣기가 가능한 경우 사용할 수 있습니다. from PIL import Imagefrom io import BytesIOimport win32clipboardimage = Image.open("local")# 이미지 데이터를 BMP 형식으로 변환output = BytesIO()image.convert("RGB").save(output, "BMP")bmp_data = output.getvalue()[14:] # BMP 헤더 제거output.close()# 클립보드에 이미지 복사win32clipboard.OpenClipboard()win32clipboard.EmptyClipb..

[Python] 파이썬으로 원격 데스크톱 활성화

컴퓨터에 기본적으로 존재하는 RDP 기능을 활성화 시키기 위해서는 총 5가지의 작업이 필요합니다. 1. 레지스트리 설정을 통한 원격 데스크톱 기능 활성화2. 레지스트리 설정을 통한 접속 포트 번호 설정3. 제어판 내의 네트워크 설정을 통한 RDP 기능 활성화 설정4. 네트워크 설정을 통한 레지스트리 포트 번호 허용 방화벽 규칙 설정5. 원격 데스크톱 서비스 재시작 및 작동 확인 제어판 및 레지스트리에 메뉴에서 기본적으로 활성화 가능하지만 적용이 필요한 컴퓨터가 많을 경우 exe 프로그램을 배포 시 용이합니다. 먼저 필요한 라이브러리를 추가해주고, 그 뒤 필요한 함수들을 각각 생성합니다.import subprocessimport timeimport sys 레지스트리 내의 원격 데스크톱 허용 항목을 사용하도..

[Python] Paramiko 를 통한 SSH 접속

Paramiko는 Python에서 SSH 프로토콜을 통하여 접속 할 수 있도록 도와주는 라이브러리입니다. 한마디로 Putty를 Python에서도 사용할 수 있도록 도와줍니다. 테스트 환경은 포티게이트(방화벽) 및 코어엣지(스위치) 이였으며, 정상적으로 작동하는 것을 확인하였습니다.  먼저 SSH 통신을 위한 paramiko 라이브러리와 연결 시 대기를 위한 time 라이브러리를 가져옵니다. import paramikoimport time 그 다음 SSHClient의 세션 객체를 만들어주고,세션 접속 시 호스트 키가 자동으로 인증받도록 있도록 접속을 허용합니다. (보안 상으로는 용이하지 않습니다.) 이후 호스트 IP와 계정 정보를 통하여 SSH에 접속해주고,지속적인 통신을 위하여 invoke_shell 명..

[Python] HandDetector를 이용한 소리 크기 조절

- 본 내용은 python 3.10 버전을 이용하여 진행하였습니다. - 시작 전 설정 필수  detector.findDistance 함수를 우클릭하여 정의로 이동을 눌러준 뒤  각 행에 z1, z2 값을 추가시켜 줍니다. 다시 코드를 작성해봅시다. 먼저 손 랜드마크 감지를 위하여 cvzone의 HandDetector 라이브러리 가져옵니다. import cv2from cvzone.HandTrackingModule import HandDetector 이후 스피커 음량을 조절하기 위하여 오디오 관련 라이브러리를 불러와 해당 정보를 포인터에 대입시킵니다. from ctypes import cast,POINTERfrom comtypes import CLSCTX_ALLfrom pycaw.pycaw import Au..