Programming
-
원격으로 작업을 할 일이 생겼습니다. 시간이 좀 걸리는 파이썬 패키지 설치 작업이었습니다. 이를 여러 장비에다 설치하려고 하는데 기존 코드는 장비 하나하나 일일이 접속해서 패키지도 하나하나 다 설치 완료 해야 다음 항목으로 넘어갈 수 있었습니다. 각 장비에서 소요되는 시간은 3분이 채 안되는데 전체 장비가 400여대 가까이 되니 1200분... 즉 20시간이 소요되는 겁니다... 이를 줄여보고자 며칠 째 집에도 제 때 못들어가고 작업하다가 대충 동작하는 코드를 완성해서 그 일부를 공유합니다. connect 인자는 대충 아실겁니다. known_hosts=None 은 등록되지 않은 장비에 접속할 때 known_hosts 에 등록할 것인지 물어보게 되는데 (ssh 명령으로는 -o StrictHostKeyChe..
[python3] asyncssh + nohup command원격으로 작업을 할 일이 생겼습니다. 시간이 좀 걸리는 파이썬 패키지 설치 작업이었습니다. 이를 여러 장비에다 설치하려고 하는데 기존 코드는 장비 하나하나 일일이 접속해서 패키지도 하나하나 다 설치 완료 해야 다음 항목으로 넘어갈 수 있었습니다. 각 장비에서 소요되는 시간은 3분이 채 안되는데 전체 장비가 400여대 가까이 되니 1200분... 즉 20시간이 소요되는 겁니다... 이를 줄여보고자 며칠 째 집에도 제 때 못들어가고 작업하다가 대충 동작하는 코드를 완성해서 그 일부를 공유합니다. connect 인자는 대충 아실겁니다. known_hosts=None 은 등록되지 않은 장비에 접속할 때 known_hosts 에 등록할 것인지 물어보게 되는데 (ssh 명령으로는 -o StrictHostKeyChe..
2023.09.22 -
제목과 같은 오류가 발생했을 때 chatgpt 따위는 도움을 주지 않습니다... python3 -m pip install -U pyopenssl 이 명령으로 마음의 평화를 찾았습니다.
[python3] AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'제목과 같은 오류가 발생했을 때 chatgpt 따위는 도움을 주지 않습니다... python3 -m pip install -U pyopenssl 이 명령으로 마음의 평화를 찾았습니다.
2023.09.19 -
일단 github 에서 새로운 저장소를 만듭니다. 만들어진 저장소의 필요한 주소(https 또는 git@..git)를 복사해서 로컬 저장소에서 다음 명령을 내립니다. git remote set-url origin git@github.com:저장소주소.git git push 참 쉽죠? 더보기 다만, 요즘의 github 기본 저장소는 main 이고 기존의 많은 git 저장소는 기본 저장소가 master 인 점이 다를 수 있습니다. github 해당 프로젝트 페이지에 보면 Settings 가 있습니다. General 항목에 Default branch 가 있고 이게 main 으로 되어 있는데 연필 모양 아이콘을 눌러서 직접 수정하거나 좌우 화살표 아이콘을 눌러 새로 push 한 master 를 선택해서 간편히 ..
[github] 로컬 저장소를 새 github 저장소로 쉽게 만들기일단 github 에서 새로운 저장소를 만듭니다. 만들어진 저장소의 필요한 주소(https 또는 git@..git)를 복사해서 로컬 저장소에서 다음 명령을 내립니다. git remote set-url origin git@github.com:저장소주소.git git push 참 쉽죠? 더보기 다만, 요즘의 github 기본 저장소는 main 이고 기존의 많은 git 저장소는 기본 저장소가 master 인 점이 다를 수 있습니다. github 해당 프로젝트 페이지에 보면 Settings 가 있습니다. General 항목에 Default branch 가 있고 이게 main 으로 되어 있는데 연필 모양 아이콘을 눌러서 직접 수정하거나 좌우 화살표 아이콘을 눌러 새로 push 한 master 를 선택해서 간편히 ..
2023.06.21 -
기록용으로 남깁니다. 쉬운 내용인데 가끔 가물가물해서 정리합니다. 문자열이 s = "God is my judge" 일 때 s[::-1] 로 뒤집힌 값을 얻을 수 있습니다. 참고로 이 슬라이스 인덱싱은 [시작위치:끝위치:step/stride/보폭] 으로 지정할 수 있습니다. 끝위치 전까지로 끝위치 문자는 포함되지 않습니다. s 는 s[0::1] 과 같습니다. 다른 방법(for 를 사용한 c 방법, 리스트로 변환하는 방법)들이 있지만 이 방법만 기억하셔도 좋을 것 같습니다. 깔끔하니까요!!
[python] 문자열 뒤집기기록용으로 남깁니다. 쉬운 내용인데 가끔 가물가물해서 정리합니다. 문자열이 s = "God is my judge" 일 때 s[::-1] 로 뒤집힌 값을 얻을 수 있습니다. 참고로 이 슬라이스 인덱싱은 [시작위치:끝위치:step/stride/보폭] 으로 지정할 수 있습니다. 끝위치 전까지로 끝위치 문자는 포함되지 않습니다. s 는 s[0::1] 과 같습니다. 다른 방법(for 를 사용한 c 방법, 리스트로 변환하는 방법)들이 있지만 이 방법만 기억하셔도 좋을 것 같습니다. 깔끔하니까요!!
2023.06.19 -
기록용으로 남깁니다. 구글 코랩에서 ipynb 파일 같은 것을 열었을 때 구글 드라이브에 있는 데이터 파일에 접근할 수 있습니다. from google.colab import drive import pandas as pd drive.mount("/content/drive") df = pd.read_csv("/content/drive/MyDrive/abcd.csv") 먼저 google.colab 의 drive 를 import 합니다. 코랩 안에서는 당연히 별도의 설치 없이 사용할 수 있습니다. 그 외의 환경에서는 멍개님의 글 과 같이 복잡한 방법이 필요합니다. drive.mount("/content/drive") 명령으로 마운트 명령을 내리면 구글 계정 연동 페이지 뜨면서 권한 묻고 할 겁니다. 내가 쓰려..
[python][colab] 구글 드라이브 로그인하고 파일 접근하기기록용으로 남깁니다. 구글 코랩에서 ipynb 파일 같은 것을 열었을 때 구글 드라이브에 있는 데이터 파일에 접근할 수 있습니다. from google.colab import drive import pandas as pd drive.mount("/content/drive") df = pd.read_csv("/content/drive/MyDrive/abcd.csv") 먼저 google.colab 의 drive 를 import 합니다. 코랩 안에서는 당연히 별도의 설치 없이 사용할 수 있습니다. 그 외의 환경에서는 멍개님의 글 과 같이 복잡한 방법이 필요합니다. drive.mount("/content/drive") 명령으로 마운트 명령을 내리면 구글 계정 연동 페이지 뜨면서 권한 묻고 할 겁니다. 내가 쓰려..
2023.05.31 -
def check_duplicate_execution(exact_python_file_name, pid): for p in psutil.process_iter(): cmd = p.cmdline() if cmd and exact_python_file_name in cmd and p.pid != pid: return True return False 파라미터는 비교할 파이썬 파일 이름인데 여기에서는 이것을 실행한 내 프로세스의 파일 이름을 전달합니다. psutil.process_iter() 로 psutil.Process객체를 하나씩 가져와서 cmdline() 으로 얻어온 명령 줄에 해당 이름이 존재하는지 확인가능합니다. cmdline() 은 리스트로 되어 있습니다. 보통은 파이썬 스크립트 이름은 cmdline..
[python3] 파이썬 프로세스 중복 실행 여부 확인def check_duplicate_execution(exact_python_file_name, pid): for p in psutil.process_iter(): cmd = p.cmdline() if cmd and exact_python_file_name in cmd and p.pid != pid: return True return False 파라미터는 비교할 파이썬 파일 이름인데 여기에서는 이것을 실행한 내 프로세스의 파일 이름을 전달합니다. psutil.process_iter() 로 psutil.Process객체를 하나씩 가져와서 cmdline() 으로 얻어온 명령 줄에 해당 이름이 존재하는지 확인가능합니다. cmdline() 은 리스트로 되어 있습니다. 보통은 파이썬 스크립트 이름은 cmdline..
2023.05.24 -
3.7 ~ 3.8 https://python.flowdas.com/whatsnew/3.8.html 3.8 ~ 3.9 https://python.flowdas.com/whatsnew/3.9.html 3.9 ~ 3.10 https://docs.python.org/ko/3/whatsnew/3.10.html 3.10 ~ 3.11 https://docs.python.org/ko/3/whatsnew/3.11.html
[python3] 버전별 차이 정리(작성중)3.7 ~ 3.8 https://python.flowdas.com/whatsnew/3.8.html 3.8 ~ 3.9 https://python.flowdas.com/whatsnew/3.9.html 3.9 ~ 3.10 https://docs.python.org/ko/3/whatsnew/3.10.html 3.10 ~ 3.11 https://docs.python.org/ko/3/whatsnew/3.11.html
2023.05.03 -
# 빈 배열 선언 arr=() # 배열에 원소 추가 arr+=("next_one") arr+=("next_two") # 배열 탐색하며 출력 for (( i=0; i
[bash] 배열 선언 및 원소 추가하기# 빈 배열 선언 arr=() # 배열에 원소 추가 arr+=("next_one") arr+=("next_two") # 배열 탐색하며 출력 for (( i=0; i
2023.02.24