파이썬 이것저것 77

[python] Flask 배포하기

웹 서버와 SGI 웹 서버란 실제로 사용자의 요청을 받고 응답을 주는 엔진엑스(Nginx), 아파치(Apache) 등을 말하며, 네트워크 통신의 전반적인 부분을 담당한다.Nginx, 아파치와 같은 웹서버와 플라스크 애플리케이션 등 웹 애플리케이션 사이에서는 통신이 필요하다. 서버 게이트웨이 인터페이스(SGI)가 바로 그 통신 규약, 이 규약을 통해 웹 서버는 사용자의 HTTP 요청을 웹 애플리케이션에 전달하고, 애플리케이션의 응답을 다시 사용자에게 전달한다. 플라스크에서의 SGI는 그중에서도 플라스크 웹 애플리케이션과 웹 서버 사이의 통신 방식만을 정의한다. Flask run 만으로도 내부적으로 간단한 WSGI 서버를 실행시킨다.그러나 이것은 운영 환경에서 사용하기엔 부족한 면이 많음 - 성능 이슈 : ..

[python] Flask Restapi 구현

Restful api 컴퓨터나 스마트폰 애플리케이션이 서버에 정보를 요청하거나 보낼 수 있는 방법 중 하나이다. 서버는 정보가 저장된 컴퓨터를 말하고, 클라이언트는 그 정보를 사용하려는 사람이나 애플리케이션을 의미한다. RESTful API는 정보 교환을 단순하고 효율적으로 만들어줌, 웹사이트나 애플리케이션에서 중요한 역할을 하게 됨 HTTP 매서드 이해하기HTTP 메서드는 서버와 클라이언트가 어떻게 대화 할것인지 정한 규칙 GET(조회) : 클라이언트가 서버에게 "이 정보 좀 줘"라고 요청하는 것임, 웹 브라우저에서 웹페이지를 열 때, 서버에게 그 페이지의 정보를 가져오라고 요청 POST(생성) : 클라이언트가 서버에게 새로운 정보를 보내는 것, 새글을 블로그에 올릴 때 그 글의 내용을 서버에 올리라는..

[Python] Flask 세션과 쿠키

세션 과 쿠키웹 애플리케이션에 상태를 관리하는 두 가지 주요기술은 session과 쿠키임 웹은 기본적으로 상태를 유지않는(stateless) 특성이 있는데, 이는 웹서버가 클라이언트의 요청 사이의 상태 정보를 저장하지 않는다는 것을 의미함 웹페이지를 이동할 때 마다 사용자가 누구인지, 어떤 작업을 햇는지 등의 정보를 매번 인식 세션과 쿠키는 상태를 유지하지 않는 웹의 한계를 극복하기 위해 사용됨 세션 : 세션은 서버 측에서 사용자의 상태 정보를 유지, 사용자가 웹 애플리케이션에 로그인 하면, 서버는 고유한 세션 ID를 생성하고, 이를 쿠키로 클라이언트에 전송한다. 클라이언트는 이 세션 ID를 가진 쿠키를 사용해 이후 요청에서 자신을 인증하고 서버는 이 ID를 사용해 사용자의 세션 데이터에 접근한다. 세션..

[Flask] Flask + mysql 연결

Flask에서 DB와 연결을 하려면 여러 방법이 있지만, 일반적으로 많이 사용되는 것은 SQL-Alchemy를 사용하여 연결하는 것이다. SQL-Alchemy는 객체-관계 매핑을 제공하여 파이썬 클래스를 데이터베이스 테이블과 연결을 통해 보다 직관적이고 유지관리를 쉽게 해준다. 데이터베이스 종류는다양하지만, 일반적으로 많이 사용되는 MySQL을 사용한다고 가정한다.Flask에서  DB를 접속하려면, Flask-SQLAlchemy와 mysql연결을 위한 pymysql을 설치한다.  - 필요한 패키지 설치pip install Flaskpip install Flask-SQLAlchemy## db 종류에 따라 선택해서 설치하면 됨pip install pymysql   - 사전 환경설정먼저 PC에 MySQL을 설..

[Python] UFO: A UI-Focused Agent for Windows OS Interaction

AI-PC의 미래를 볼 수 있는 기술, 마이크로스프트의 UFO를 보고자 한다. 논문 https://arxiv.org/html/2402.07939v1 UFO : A UI-Focused Agent for Windows OS Interaction License: arXiv.org perpetual non-exclusive license arXiv:2402.07939v1 [cs.HC] 08 Feb 2024 UFO : A UI-Focused Agent for Windows OS Interaction Chaoyun Zhang, Liqun Li, Shilin He, Xu Zhang, Bo Qiao, Si Qin, Minghua Ma, Yu Kang, Qingwei Lin, Saravan Rajmohan, arxiv...

[Python] Gpt4Free 여러 LLM모델을 무료로 써보기

https://github.com/xtekky/gpt4free GitHub - xtekky/gpt4free: The official gpt4free repository | various collection of powerful language models The official gpt4free repository | various collection of powerful language models - xtekky/gpt4free github.com https://www.aitimes.com/news/articleView.html?idxno=150737 'GPT-4' 무료로 이용할 수 있는 'GPT4Free' 화제 - AI타임스 오픈AI의 결제 시스템을 속여 \'GPT-4\'를 무료로 사용할 수 있도록 ..

[python] 프로그래머스 지도찾기

https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 비트연산을 통해 #또는 공백을 풀어내는 문제였다. format으로 이진수를 변경할 때, n길이 만큼 공백형태를 변경해야 됬는데, 이부분을 format함수의 zfill 메서드를 사용해서 해결할 수 있었다. 아래에 해결코드이다. def decrypt_secret_map(n, arr1, arr2): decrypted_map = [] for i in range(n): # 두 배열의 각 원소를 이진수로 변..

[Python] Yolo-World 실시간 비전언어 모델

SOTA에 방문해서 최신모델들이 어떤것들이 있나 찾아보다가 2024년 1월 31일에 발표된 Yolo-World 모델을 보게 되었다. 텐센트 AI 랩에서 발표한 논문으로, 실시간으로 사용할 수 있는 비전-언어 모델이라고 한다. 이에 대해 살펴보자 (yolo-world 논문) https://arxiv.org/abs/2401.17270 YOLO-World: Real-Time Open-Vocabulary Object Detection The You Only Look Once (YOLO) series of detectors have established themselves as efficient and practical tools. However, their reliance on predefined and tra..

[python] Stack을 활용한 괄호검사 알고리즘

수식 표기나, 프로그래밍 언어, HTML 문서 등 다양한 분야에서 괄호로 구분문자를 사용한다. 이들은 주로 간단한 데이터나 문자열을 묶어 그룹으로 만들고 그룹으로 끝낸다. 예를 들어 다음과 같은 소스코드가 있을때, array_max.h int find_array_max(int score[], int n) { int i, tmp = score[0]; for (i = 1; i tmp){ tmp = score[i]; } } return tmp; } 해당 프로그램이 정상작동 하려면, 괄호들이 같은 유형들 끼리 쌍을 이루어야 한다. 해당 코드에서 괄호를 검사 시 다음과 같은 조건이 해당되어야 한다. 1. 왼쪽 괄호의 갯수와 오른쪽 괄호 갯수가 같아야 한다. 2. 같은 타입의 괄호에서 왼쪽 괄호가 오른쪽 괄호보다 ..

[python] docker stack + nginx를 이용한 grpc inference 서버 구축

docker swarm 네트워크를 사용하면 각각의 분산된 PC를 하나로 묶을 수 있고, docker swarm의 ingress 네트워크를 사용하여 클러스터를 구축 가능하고, 이를 사용하여 각각 분산된 PC에 docker시스템을 관리 할 수 있다. 특히 ingress네트워크 상에서 docker 시스템 간 로드밸런싱이 가능하여 여러대의 PC에 손쉽게 Inferecne Docker를 구축이 가능하다. 그런데 모든 상황에서 이 로드밸런싱 기능을 사용할 수 있는 건 아니였다. 프로젝트 진행 중, 기존 https 방식의 REST호출을 사용할 때는 분산 로드 밸런싱이 됬지만, GRPC 통신 방식을 사용하면, 로드 밸런싱 기능을 사용할 수 없었다. GRPC 통신을 통해서 로드밸런싱을 하려면 NGINX 프록시 서버로 사..