일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Home Assistant
- Python
- raspberry pi
- 애플
- homebridge
- 현대통신
- MQTT
- 오블완
- ConnectedHomeIP
- 퀄컴
- RS-485
- matter
- 국내주식
- Apple
- Espressif
- 미국주식
- 매터
- 힐스테이트 광교산
- 배당
- 코스피
- 나스닥
- 엔비디아
- esp32
- 티스토리챌린지
- Bestin
- 취미생활
- 홈네트워크
- 파이썬
- 해외주식
- 월패드
- Today
- Total
목록Software (74)
YOGYUI

1. Introduction 로봇공학을 전공했거나 실무에 적용하고 있는 개발자라면 적어도 한번쯤은 EtherCAT(이더캣)을 사용해봤을 것이다 서보 모터 드라이버, I/O 보드 등 이더캣 슬레이브(Slave)를 구동하기 위해서는 이더캣 마스터(Master) 디바이스가 필요한데 개발 과정에서는 이더캣 개발사인 Beckhoff 등에서 판매(국내 모터 업체도 꽤 많다)하는 마스터 PC 혹은 마스터 PCI 슬롯 카드를 구매해서 사용하는게 일반적이다 좀 더 deep하게 모든 모듈을 내재화하고자하는 회사에서는 이더캣 마스터 모듈 자체도 개발하게 되는데, 일반적으로 Real-Time Linux를 OS로 사용하고 이더캣은 RT-LAB의 SOEM이나 EtherLab의 IgH EthreCAT Master 등 오픈소스 코드..

Jenkin Pipeline- Skip stage when slave node (agent) is offline 소스코드 빌드(build) 및 배포(release) 자동화 툴로 Jenkins를 유용하게 사용하고 있다 바이너리 빌드나 Unit Test를 master 노드가 아닌 다른 환경 (리눅스 환경 등)에서 진행해야 할 경우가 있는데, Pipeline에서 slave node 이름 기반으로 다음과 같이 구축해서 사용하고 있었다 pseudo-script pipeline { agent any environment { SLAVE_NODE_NAME = "slave_node" } stages { stage('Build') { parallel { stage('Master') { steps { ... } } stag..

2023년 공휴일 크롤링 (OpenAPI) 2022년이 저물어간다 매년 새해가 밝아오면 가장 먼저 하는 일은 역시 공휴일 확인 (직장인의 유일한 낙이랄까) 공공데이터포털의 "한국천문연구원_특일 정보" Open API를 사용해서 다가오는 2023년의 공휴일 정보를 가져와보자 (원래 노는 토/일 주말은 제외~) API 활용 포스트 링크 공공데이터포털::공휴일 데이터 조회 (REST API) 회사에서 사원별 공수(Man Hour) 관리 프로그램을 하나 만들었는데, 공휴일에는 입력이 안되게 만드는 기능이 필요하게 됐다 파이썬 써드파티 라이브러리 종류도 몇 개 있어 찾아봤는데, 중국의 yogyui.tistory.com 파이썬 코드로 매년 초 한번씩 정보를 가져와서 DB에 저장하는 자동화 코드를 개발해두면 여기저기..

C++::Prevent duplicated execution (Linux) 지난 포스팅에서 특정 프로세스의 ID값(PID)들을 조회하는 코드를 구현해봤다 C++::Linux에서 특정 프로세스의 ID값(PID) 읽어오기 (pidof 명령어) C++::Linux에서 특정 프로세스의 ID값(PID) 읽어오기 (pidof 명령어) C++::Get PID of specific process using 'pidof' command (Linux) 리눅스에서 특정 프로세스의 ID(PID)값을 읽어오는 C++코드를 작성해봤다 모든 코드는 Ubuntu 20.04.4 LTS 환경에서 테스트함 1. 터미널 명령어.. yogyui.tistory.com 이를 활용해 프로그램의 중복 실행을 방지할 수 있는 코드를 작성해보자 모든 ..

C++::Get PID of specific process using 'pidof' command (Linux) 리눅스에서 특정 프로세스의 ID(PID)값을 읽어오는 C++코드를 작성해봤다 모든 코드는 Ubuntu 20.04.4 LTS 환경에서 테스트함 1. 터미널 명령어 (pidof) 리눅스에서 pidof 명령어를 프로세스명과 함께 터미널에 입력하면 해당 이름을 가진 프로세스(들)의 ID값을 조회할 수 있다 (예를 위해 VSCode를 여러개 실행시킨 후 System Monitor 툴과 비교해봤다) $ pidof VSCode의 프로세스명은 code 이 외에도 ps, pgrep 등 다른 명령어를 통해서도 같은 결과를 얻을 수 있으니, 따로 검색해보기 바란다 2. 코드 구현 C/C++에서는 popen 함수로..

C++: Get MAC Address of Network Adapter in Linux 인터넷 관련 코딩 작업을 하다보면 서버에 접속된 네트워크 어댑터의 정보를 확인해야하는 경우가 종종 생긴다 Linux OS 환경에서 네트워크 어댑터의 MAC(Media Access Control) 주소를 알아내는 간단한 방법을 알아본 뒤, 이를 C++로 구현해보자 (MAC address에 관한 간략한 설명은 위키피디아 참고) ※ Ubuntu 20.04.4 LTS 환경에서 구현 및 테스트 1. 터미널 명령어 /sys/class/net/ 디렉터리 내부를 살펴보자 (ls 명령어) $ ls /sys/class/net PC에 장착된 네트워크 어댑터의 이름들이 보인다 특정 어댑터의 내부 정보 목록들을 마찬가지로 ls 명령어로 살펴..

C++: Check Directory Existence (g++) #include bool check_dir_exist(const char *path) { bool exist = false; struct stat st; if(stat(path, &st) == 0) { if( ((st.st_mode) & S_IFMT) == S_IFDIR ) { exist = true; } } return exist; } 헤더파일 를 include한 뒤 stat 함수 호출 int stat(const char *path, struct stat *buf); path: 경로명 문자열 포인터 (입력) buf: 경로에 대한 정보가 담긴 stat 구조체 (출력) 리턴값: 0 = 성공, -1 = 실패 (실패 이유는 다양하며, errno..

C++: chrono - Get Current Date/Time including millisecond (g++, POSIX) 윈도우즈 OS 타겟으로 개발한 C++ 기반 어플리케이션을 리눅스 OS에서 구동되게 포팅하는 작업을 진행하고 있다 (왠만한 유틸리티 함수들을 죄다 MFC를 활용해서 개발하다보니 손봐야할 게 한두개가 아니다 ㅠ) 이왕 포팅하는거 gcc/g++ 컴파일러로 구동할 수 있게 만들어보자 (POSIX 대응) C++11 이상을 사용하고 있다면 모듈을 가져와서 간단하게 구현할 수 있다 #include #include static std::string get_time_stamp() { const auto now = std::chrono::system_clock::now(); time_t tm_no..

분양받은 아파트 입주 시작일(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..