목록Software (66)
YOGYUI
분양받은 아파트 입주 시작일(5/17)이 코앞으로 다가왔다 분명히 아파트는 다 지어졌는데 나는 현금이 없다... 현금없는 서민에게 필요한건 역시 주택담보대출! 집단대출 상담받으면서 대출가능금액, 대출기한 및 금리같은 중요한 정보들을 들었는데, 매달 내야하는 이자 및 원금(원리금) = 내가 실제로 내야하는 돈에 대해서는 상담사가 계산기를 두들겨주는 것만 보고는 까먹어버렸다... 대출 이자 계산을 해주는 웹사이트가 워낙 많기 때문에 인터넷만 가능한 환경이면 금방 계산 가능한 세상이긴 하지만, 개발자라면 계산기정도는 직접 만들어보는 것도 시간때우기용으로 적당하다 ㅎㅎ Python으로 만들었고, UI는 PyQt5를 활용했다 https://github.com/YOGYUI/Mortgage-Loan-Calculato..
Linux - Change permission of USB device permanently 리눅스 기반 OS(ex: Ubuntu)에서 USB 기기와 관련된 작업을 하는 경우, 읽기/쓰기 접근권한을 바꿔주지 않으면 에러가 발생하게 된다 Permission denied: '/dev/ttyUSB0' 일반적인 경우 USB device의 접근권한은 user, group은 read + write로 설정되어있지만 others는 아무런 권한이 부여되어 있지 않다 $ ls -l /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 0 4월 4 12:56 /dev/ttyUSB0 others 유저클래스에도 read/write 권한을 부여하기 위해 보통 다음의 명령어를 입력한다 $ sudo chmo..
Turn Off / Restart PC Power by Programming Code MS Windows 환경에서 프로그래밍 코드(Visual C++, MFC)를 통해 PC의 전원을 끄는 방법을 알아보자 용도) Windows OS에 접근하지 못하게 프로그램을 구성한 뒤, PC의 전원을 끄거나 재시작하고자 할 경우 ※ Windows 10, Visual Studio 2019에서 구현 및 테스트함 1. API 사용 - ExitWindowsEx https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-exitwindowsex 에 선언되어 있는 ExitWindowsEx 함수를 호출하면 된다 함수 원형은 다음과 같다 BOOL ExitWindowsE..
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), '..
Get path of the batch script file %~dp0 구문을 활용하면 된다 예를 위해 C:\Test\Test1.bat 파일을 생성한 뒤 다음과 같이 스크립트 작성 @echo off set CUR_PATH=%~dp0 echo %CUR_PATH% 커맨드 라인 툴에서 실행해보자 c:\Test>test1.bat c:\Test\ c:\>c:\Test\test1.bat c:\Test\ 배치 파일(test1.bat)이 존재하는 경로임을 알 수 있다 출처: https://stackoverflow.com/questions/3827567/how-to-get-the-path-of-the-batch-script-in-windows
티스토리 유입 경로를 보면 간혹 다음과 같이 링크로 유입된 경우를 확인하게 된다 위 예시의 URL은 다음과 같다 https://yogyui.tistory.com/notify-Notice_Blog_New?aHR0cHM6Ly95b2d5dWkudGlzdG9yeS5jb20vZW50cnkvJUVBJUI0JTkxJUVBJUI1JTkwJUVDJTk1JTg0JUVDJTlEJUI0JUVEJThDJThDJUVEJTgxJUFDLSVFQyU5NyU5OCVFQiVBNiVBQyVFQiVCMiVBMCVFQyU5RCVCNCVFRCU4NCVCMC0lRUQlOTklODglRUQlODIlQjctJUVDJTk3JUIwJUVCJThGJTk5LTEtMg==;n4NRnC9NaQ4RKh+vRtSjrCgg81uCPHnovGhC9+SAIC8= 정작 ..
CRC8, CRC16, CRC32 Calculation Algorithms Source Code in C/C++ (GitHub) 얼마전 회사 업무로 CRC16-ARC 계산 알고리즘을 직접 구현했었는데, 하다보니 욕심이 나서 CRC8, CRC32까지 구현해서 깃허브에 저장소를 마련하고 커밋했다 https://github.com/YOGYUI/CRC GitHub - YOGYUI/CRC: CRC Calculation library (CPP) CRC Calculation library (CPP). Contribute to YOGYUI/CRC development by creating an account on GitHub. github.com 코드 몇백줄 작성하는 것보다 별 내용도 없는 마크다운 몇십줄 작성하는게 ..
CRC-16 Calculation Algorithm Source Code in C/C++ low-level network 인터페이스를 구현하는 회사 업무 중 송/수신 패킷의 CRC 계산 및 검증을 임베디드 HW단에서 구현해야 하는 이슈가 있어서 직접 C++로 구현해봤다 (회사에서 자체 제작한 보드들간에 통신하는 방식이라 오류 검증은 심플하게 CRC 사용하기로 결정) 본 포스트에서는 CRC-16에 대해서만 구현한 결과를 다루고 있으며, CRC-8이나 CRC-32 구현은 다른 글에서 다루도록 한다 (사실 코어 알고리즘은 크게 변동이 없어서 쓸만한 거리도 없겠지만...) CRC(cyclic redundancy check)에 대한 소개는 위키백과를 참고하도록 한다 순환 중복 검사(巡環重復檢査), CRC(cycl..
에 정의되어 있는 std::search 함수를 사용하면 쉽게 구현할 수 있다 template ForwardIterator1 search (ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2); Search range for subsequence Searches the range [first1,last1) for the first occurrence of the sequence defined by [first2,last2), and returns an iterator to its first element, or last1 if no occurrences are found. The ele..
앞선 글(링크)에서 금융감독원 OpenDART의 '증권신고서 주요정보 - 지분증권' API로 신규상장기업의 증권신고서 원문 문서번호를 얻고자 했는데, 안타깝게도 쿼리되지 않는 기업이 굉장히 많았다 이번 포스트에서는 OpenDART의 '공시검색'으로 특정 기업이 공시한 증권신고서를 전부 리스트업한 뒤 그중에서 상장과 관련된 지분증권 문서의 문서번호를 가져오고, 문서의 HTML 원문을 로컬에 저장해보도록 하자 OpenDART 사용법 및 DART 원문 다운로드 방법은 아래 링크를 참고 금융감독원::OPENDART 전자공시 Open API 사용하기 금융감독원::DART 공시문서 js 렌더링된 HTML 가져오기 지난 2021년 7월 26일,27일 양일간 공모주 청약을 진행한 카카오뱅크를 예로 들어보자 import..
PyCharm에서 파이썬 코드를 실행 시 인메모리 디버깅을 위해 Python Console에서 코드를 구동할 수 있다 파이썬 스크립트의 Run/Debug Configuration - 'Run with Python Console' 옵션 선택 이 때, 별다른 설정을 하지 않았다면 스크립트를 다수 실행 시 여러개의 콘솔이 생성된다 작업 관리자에서도 다음과 같이 확인할 수 있다 이 때, 단일 콘솔에서만 스크립트를 구동하고 싶다면 메뉴 - File - Setting - Build, Execution, Deployment - Console - Use existing console for "Run with Python Console" 옵션을 선택해주면 된다 ※ 본 글은 PyCharm 2021.2.1 버전에서의 설정법..