일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 코스피
- 애플
- 힐스테이트 광교산
- 매터
- Home Assistant
- MQTT
- esp32
- Espressif
- SK텔레콤
- 국내주식
- raspberry pi
- 나스닥
- matter
- RS-485
- 월패드
- Python
- 미국주식
- 파이썬
- 배당
- 티스토리챌린지
- 오블완
- Apple
- Bestin
- 해외주식
- 현대통신
- ConnectedHomeIP
- cluster
- homebridge
- 공모주
- 홈네트워크
- Today
- Total
목록Software/Python (30)
YOGYUI
Python application - Query Korean holiday from public data portal블로그 유입로그 리포트를 보면 거의 항상 최상위권에 '공휴일 데이터 조회'가 랭크되어있다 물들어올 때 노를 저어보자 ㅋㅋ (사실 추석 연휴 마지막날 심심해서 후딱 만들어본... ㅋㅋ)단순히 사용법만 안내할 게 아니라 Python과 Qt6를 활용한 어플리케이션을 만든 후 깃허브 저장소를 하나 만들어봤다https://github.com/YOGYUI/pyside_query_holiday GitHub - YOGYUI/pyside_query_holiday: Query yearly holidays from public data portal (data.go.kr)Query yearly holidays ..
2024년 공휴일 크롤링 (OpenAPI) 2024년 갑진년(甲辰年) 새해가 밝았다 올해도 어김없이 새해맞이 공휴일을 크롤링해보자 OpenAPI: 공공데이터포털의 "한국천문연구원_특일 정보" API 활용법 포스팅 링크 공공데이터포털::공휴일 데이터 조회 (REST API) 회사에서 사원별 공수(Man Hour) 관리 프로그램을 하나 만들었는데, 공휴일에는 입력이 안되게 만드는 기능이 필요하게 됐다 파이썬 써드파티 라이브러리 종류도 몇 개 있어 찾아봤는데, 중국의 yogyui.tistory.com 아래와 같이 Python(파이썬) 스크립트 실행 ※ API 키 획득 방법은 위의 링크 글 참고 import datetime import requests import pandas as pd from bs4 impo..
2023년 공휴일 크롤링 (OpenAPI) 2022년이 저물어간다 매년 새해가 밝아오면 가장 먼저 하는 일은 역시 공휴일 확인 (직장인의 유일한 낙이랄까) 공공데이터포털의 "한국천문연구원_특일 정보" Open API를 사용해서 다가오는 2023년의 공휴일 정보를 가져와보자 (원래 노는 토/일 주말은 제외~) API 활용 포스트 링크 공공데이터포털::공휴일 데이터 조회 (REST API) 회사에서 사원별 공수(Man Hour) 관리 프로그램을 하나 만들었는데, 공휴일에는 입력이 안되게 만드는 기능이 필요하게 됐다 파이썬 써드파티 라이브러리 종류도 몇 개 있어 찾아봤는데, 중국의 yogyui.tistory.com 파이썬 코드로 매년 초 한번씩 정보를 가져와서 DB에 저장하는 자동화 코드를 개발해두면 여기저기..
분양받은 아파트 입주 시작일(5/17)이 코앞으로 다가왔다 분명히 아파트는 다 지어졌는데 나는 현금이 없다... 현금없는 서민에게 필요한건 역시 주택담보대출! 집단대출 상담받으면서 대출가능금액, 대출기한 및 금리같은 중요한 정보들을 들었는데, 매달 내야하는 이자 및 원금(원리금) = 내가 실제로 내야하는 돈에 대해서는 상담사가 계산기를 두들겨주는 것만 보고는 까먹어버렸다... 대출 이자 계산을 해주는 웹사이트가 워낙 많기 때문에 인터넷만 가능한 환경이면 금방 계산 가능한 세상이긴 하지만, 개발자라면 계산기정도는 직접 만들어보는 것도 시간때우기용으로 적당하다 ㅎㅎ Python으로 만들었고, UI는 PyQt5를 활용했다 https://github.com/YOGYUI/Mortgage-Loan-Calculato..
PyQt5 - Set maximum value over 0x7FFFFFFFF of Spin Box PyQt5의 QSpinBox는 4바이트 부호 있는 정수 (singed integer)를 표현할 수 있다 (자세히 알아보지는 않았는데, QSpinBox 내부 QLineEdit의 validator가 Qt에서 제공하는 default QIntValidator인듯?) from PyQt5.QtWidgets import * app = QApplication([]) spinbox = QSpinBox() lineedit = spinbox.lineEdit() validator = lineedit.validator() print(validator) In [1]: print(validator) Out[1]: (그냥 QValida..
typing - Literal 파이썬, 자바스크립트, 루비 등 최근 유행하는 프로그래밍 언어의 가장 큰 특징 중 하나는 변수의 형(type)을 지정하지 않아도 원활하게 동작하는 코드를 작성할 수 있다는 점이다 (dynamic typing) v = '123456789' >> type(v) v = 123456789 >> type(v) 하지만 대형 팀 프로젝트 작업 시에 함수 인자 및 반환의 형을 명시해두지 않으면 각종 예외 발생으로 고통받게 된다 def my_func(x): return x + 1 >> my_func(1) 2 >> my_func('123') Traceback (most recent call last): File "C:\Python38\lib\code.py", line 90, in runcod..
맥북에서 Pyppeteer 패키지 (Headless chrome/chromium automation library)로 웹브라우저 크롤링 작업을 좀 하려했는데 오류가 발생했다 [예시 코드] import asyncio from pyppeteer import launch async def main(): browser = await launch() page = await browser.newPage() await page.goto('http://www.google.com') await browser.close() asyncio.get_event_loop().run_until_complete(main()) [오류 발생] [W:pyppeteer.chromium_downloader] Starting Chromium ..
2022년 공휴일 정보 공공데이터포털(data.go.kr)의 "한국천문연구원_특일 정보" Open API를 활용하면 공휴일 정보를 알 수 있다 API 활용 관련글 바로가기 2021년도 이제 끝나가니, 2022년은 공휴일이 무슨 요일인지 한번 훑어보자 import datetime import requests import pandas as pd from bs4 import BeautifulSoup, element from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * def getHolidayDataFrame(year: int) -> pd.DataFrame: url = "http://apis.data.go.kr/B0..
pandas - numbering duplicated elements pandas 데이터프레임(DataFrame) 객체의 특정 열(column)의 값들이 중복될 경우, 중복된 행(row)에 고유번호를 순차적으로 매겨보자 (간단한 개념인데 한국말로 정리하는게 더 어렵다) 1. 데이터 준비하기 간단하게 가상의 구매 목록을 하나 만들어주자 from datetime import date import pandas as pd df = pd.DataFrame([ {'구매일': date(2021,12,1), '품목': '계란', '수량': 1, '가격': 3000}, {'구매일': date(2021,12,1), '품목': '라면', '수량': 1, '가격': 1000}, {'구매일': date(2021,12,1), '..
pandas 데이터프레임(DataFrame) 객체의 열(column)의 데이터형을 가져오는 방법을 알아보자 (get data type of columns in dataframe) 예시를 위해 int, float, str, bool, datetime 데이터를 가진 데이터프레임을 만들어준다 from datetime import datetime import pandas as pd array = list() array.append({'A': 1, 'B': 1.0, 'C': '1', 'D': True, 'E': datetime(2021, 9, 1)}) array.append({'A': 2, 'B': 1.1, 'C': '2', 'D': False, 'E': datetime(2021, 9, 2)}) array.app..
Mac OS에서 PyQt5로 윈도우를 만들어서 메뉴바를 추가하면 default로 상단 작업표시줄에 메뉴바가 표시된다 (테스트 당시 OSX 버전은 11.5.2, PyQt5 버전은 5.15.4) [테스트 코드] if __name__ == '__main__': import sys from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * app = QCoreApplication.instance() if app is None: app = QApplication(sys.argv) window = QMainWindow() menubar = QMenuBar(window) window.setMenuBar(menubar) menu1..
일전에 PyQt를 사용해서 내가 직접 만든 웹브라우저(링크)로 내 블로그를 방문하는 테스트를 진행했는데, 네이버 애널리틱스의 '사용자 웹브라우저' 분석에 'Chrome 83' 항목이 새로 생긴 것을 볼 수 있었다 QtWebEngine의 Chromium 버전은 다음과 같다고 한다 내 개발환경이 Qt 5.15.2니깐 Chromium 83이 코어로 사용되었다는 것을 알게 되었다 ㅎㅎ 일일이 Qt 버전을 확인하지 않고 브라우저 버전 정보를 가져올 수 있는 방법을 찾다가, 자바스크립트로 'navigator.userAgent'를 호출하면 된다는 것을 확인했다 https://www.w3schools.com/jsref/prop_nav_useragent.asp Navigator userAgent Property Navi..
4. 네비게이션 툴바 만들기 북마크바를 만들려고 하다보니, 탭 안의 위젯이 url 에디트 등의 컨트롤들을 각각 모두 가지고 있는 것이 불합리해보여서 별도로 네비게이션 툴바를 만들었다 (QToolBar 상속) [NavigationWidget.py] from PyQt5.QtCore import pyqtSignal, QSize from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QToolBar, QToolButton, QLineEdit class NavigationToolBar(QToolBar): _is_loading: bool = False sig_navigate_url = pyqtSignal(str) sig_go_backward = pyqtSignal()..
3. 윈도우 만들기 앞서 구현한 WebPageWidget 여러개를 하나의 윈도우가 관리할 수 있도록 QTabWidget을 사용해서 윈도우를 만들어보자 [WebBrowserWindow.py] from functools import partial from PyQt5.QtCore import QSize from PyQt5.QtGui import QIcon, QCloseEvent from PyQt5.QtWidgets import QMainWindow, QTabWidget, QTabBar, QPushButton from WebPageWidget import WebPageWidget class WebBrowserWindow(QMainWindow): def __init__(self, parent=None): supe..
웹크롤링 관련해서 작업을 할 때 간혹 브라우저를 열어서 웹페이지에 직접 접근해야 하는 경우가 있는데, 크롬을 쓰다보니 원하는 동작들을 구현하기 힘든 경우가 간혹 있어서 간단한 수준의 웹브라우저를 직접 구현해보기로 했다 (만들다보니 재미들려서 조금씩 기능을 추가해나가는 중 ㅎㅎ) 개발일지 남길 겸 블로그에 포스팅해보도록 한다 (Github 저장소도 만들고...) 1. Package Install PyQt가 워낙에 익숙하다보니 웹브라우저도 PyQt로 만들어보기로 했다 필요한 패키지인 'PyQtWebEngine'은 최신 PyQt5 패키지에는 포함이 되어 있지 않아서 따로 pip으로 설치해줘야 한다 (https://pypi.org/project/PyQtWebEngine/) pip install PyQtWebEn..