본문 바로가기

전체 글223

도커로 postgresql 환경 구축 백업을 위한 볼륨 docker volume create pgdata --- version: '3' services: postgre_my: image: postgres container_name: postgre_my ports: - "8501:5432" environment: POSTGRES_PASSWORD: mypw volumes: - pgdata:/var/lib/postgresql/data pgadmin: image: dpage/pgadmin4 container_name: pgadmin ports: - "8080:80" environment: PGADMIN_DEFAULT_EMAIL: my@test.com PGADMIN_DEFAULT_PASSWORD: mypw depends_on: - postgre_my.. 2023. 9. 5.
깨진 링크 검사기 (broken link checker) gpt 도움으로 작성 import requests import sys from urllib.parse import urlparse, urljoin from bs4 import BeautifulSoup import time # Disable unnecessary warning messages requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning) SUPPORTED_SITES = { "1": "https://www.test1.com/", "2": "https://www.test2.com/", "3": "https://www.test3.com/" } EXCLUSION_LIST = .. 2023. 8. 23.
리눅스에서 도커 환경 구축하기 거의 모든 리눅스는 한방 설치 https://github.com/docker/docker-install curl -fsSL https://get.docker.com | sh --- 아마존 리눅스 2 엔진 설치 https://gist.github.com/npearce/6f3c7826c7499587f00957fee62f8ee9 sudo amazon-linux-extras install docker sudo service docker start sudo usermod -a -G docker ec2-user 파이썬 버전이 안맞으면 sudo update-alternatives --config python 부터 설정 컴포즈 설치 플러그인 방식은 안되므로 독립 실행형으로 진행 https://docs.docker.co.. 2023. 8. 11.
yield 한 방에 이해하기 지피티가 기가 막히게 설명해주네 비유를 사용하면, return은 책을 읽다가 북마크 없이 닫는 것과 같습니다. 다시 열면 처음부터 시작해야 하죠. 반면, yield는 책에 북마크를 끼워놓고 닫는 것과 유사합니다. 다시 열면 북마크가 있는 곳부터 계속 읽을 수 있습니다. 2023. 8. 4.
edge-tts 사용해보기 https://github.com/rany2/edge-tts edge-tts --voice ko-KR-SunHiNeural --text "안녕하세요. 오늘 하루 어땠나요?" --write-media hello.mp3 의외로 들을만? 2023. 7. 21.
amazon linux 2 - 파이썬 3.11 설치 sqlite와 ssl 사용시 문제 나올 수 있으니 주의 (아직 해결책 못찾음) ModuleNotFoundError: No module named '_sqlite3' ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002) --- 필요한 도구들 사전 설치 파이썬 3.10 부터는 openssl1.1.1 이상이 필요 (링크) sudo yum update -y sudo yum groupinstall "Development Tools" -y sudo yum erase openssl-devel -y sudo yum in.. 2023. 7. 10.
tkinter - 입력란 내용 없으면 버튼 비활성화 예제에 따라 bind와 trace가 섞여있어서 햇갈렸으나 trace가 더 적절하다고 판단됨 구글 바드에 의하면 차이가 이렇다 bind와 trace는 모두 Tkinter에서 이벤트에 응답하는 데 사용되는 메서드이지만 작동 방식이 다릅니다. bind 메서드는 이벤트와 이벤트에 대한 응답으로 호출되는 함수를 연결하는 데 사용됩니다. trace 메서드는 변수의 값이 변경될 때마다 호출되는 함수를 연결하는 데 사용됩니다. 버튼 배치의 경우 그리드와 팩이 있는데 여기서는 팩 사용 (출처 : 뤼튼) pack(): pack은 요소를 부모 위젯 안에서 가능한 한 작은 공간에 맞추어 배치합니다. 위젯들은 기본적으로 상단에서 아래로 쌓이며, 옵션으로 왼쪽에서 오른쪽으로 배치할 수도 있습니다. pack은 간단한 인터페이스에 .. 2023. 5. 11.
판다스 치트시트 # 한글 깨짐 방지 (윈도우) plt.rcParams["font.family"] = "Malgun Gothic" plt.rcParams["axes.unicode_minus"] = False # 결측치 0으로 채우기 df = df.fillna(0) # 컬럼 리네임 df.columns = ["apple", "banana"] # 컬럼 선택 또는 순서 변경 df = df[["banana", "apple"]] # 정렬 df.sort_values(by=['age','name'], ascending=[True,False]) #x틱 회전 plt.xticks(rotation=45) # 모든 셀에 함수 적용하기 df = df.applymap(lambda x: x+5) # 누적영역 차트 모든 컬럼 선택 plt.stackpl.. 2023. 4. 27.
비동기로 웹크롤링 from bs4 import BeautifulSoup as bs import aiohttp import asyncio async def fetch(session, url, i): async with session.get(url) as res: html = await res.text() soup = bs(html, "html.parser") tag = soup.find("span", class_="title") # 첫번째 글제목만 print(f"{i+1} : {tag.text}") async def main(): BASE_URL = "https://myinbox.tistory.com/" urls = [f"{BASE_URL}?page={i}" for i in range(1, 11)] async with ai.. 2023. 4. 1.
[장고] 알아두면 좋은 내용 * 프로젝트 생성 별도로 경로 지정 안하면 하위 폴더를 루트로 사용함 https://learn.microsoft.com/ko-kr/training/modules/django-get-started/5-exercise-first-project * 사이트와 앱 메인 사이트의 자식으로 앱 폴더가 위치할거 같지만 실제로는 메인 사이트와 여러 앱이 동일 경로에 위치 개념적으로는 사이트 안에 설문조사 앱, 고객센터 앱 등으로 사용 * 뷰 용어는 뷰인데 실제로는 컨트롤러 뷰에서 HTML을 직접 심기도 가능하지만 일반적으로 모델과 템플릿 중간에서 중재하는 역할 * URL 루트에서 바로 처리 가능하긴 한데 앱으로 보낸 후 앱에서 처리하도록 하는 것이 관리적으로 용이 (앱이 늘어날 수 있으므로) 실제 주소 대신 변수 패턴으.. 2023. 2. 14.
[홈어시스턴트] 아이폰 배터리 부족시 구글홈 미니로 알리기 라즈베리파이에 도커 방식으로 홈어시스턴트 설치 후 아이폰 단축어를 통해 구글홈 미니 연동하기 데이터 관리용 폴더 생성 sudo mkdir -p /data/ha HA 설치 sudo docker run -d \ --name homeassistant \ --privileged \ --restart=unless-stopped \ -e TZ=Asia/Seoul \ -v /data/ha:/config \ --network=host \ ghcr.io/home-assistant/home-assistant:stable HA 실행 라즈베리IP:8123 아이폰 단축어 자동화 ---- https://www.home-assistant.io/installation/raspberrypi#install-home-assistant-c.. 2023. 1. 28.
pandas - 데이터프레임 변동 체크 주기적으로 실행하는 스크립트가 있는데 데이터프레임이 이전 값과 같은지 비교하려고 했다 처음엔 csv로 저장 후 해시값을 비교했는데 찾아보니 더 간단하게 구현 가능했다 import pandas as pd pkl_path = "./data/test.pkl" df1 = pd.DataFrame({"a": [1], "b": [1]}) df2 = pd.DataFrame({"a": [1], "b": [2]}) # 첫번째 df를 pickle 포맷으로 저장 df1.to_pickle(pkl_path) # 기존 피클 불러오기 df_old = pd.read_pickle(pkl_path) # 두번째 df와 비교 print(df2.equals(df_old)) 참고 - 파이썬 피클 https://aplab.tistory.com/e.. 2023. 1. 26.