본문 바로가기

일::개발

(68)
ubuntu: cron, timezone ubuntu 서버에서 특정한 시간에 돌아야 하는 프로세스가 있어서 crontab으로 처리하려고 했다. HOME="/home/me/cron" # 매 시간 실행 0 * * * * cd $HOME && ./hourly.sh # 3시 30분에 실행 30 3 * * * cd $HOME && ./330.sh 매 시간 돌아야 하는 스크립트 hourly.sh 는 정상적으로 실행되는데, 3시 30분에 돌아야 하는 스크립트 330.sh 는 실행이 되지 않는 문제가 있었다. /var/log/syslog 을 살펴봐도 3시 30분에 CRON 로그가 아예 없었다. 이럴 때는 로컬 타임존이 어떻게 설정되어 있는지 먼저 확인해보고 $ timedatectl Local time: Fri 2024-01-19 12:52:19 KST Uni..
ubuntu: github 에서 반응이 없을 때 새로 설치한 ubuntu 서버에서 github 에 있는 소스를 pull 하려고 하는 상황이었다. 처음에 https로 clone할 때는 문제 없이 되었다. > git clone https://github.com/........./project.git github ID, password를 매번 입력하는게 귀찮기도 하고, 스크립트를 만들어서 pull, build 하려고 https 대신 ssh 를 이용하기로 했다. 1) ssh key 생성 > ssh-keygen -t ed25519 -C "testaccount@test.com" 이렇게 하면 ~/.ssh/ 밑에 id_ed25519, id_ed25519.pub 2개의 파일이 생긴다. .pub 확장자가 붙은 것은 공개키 파일, 없는 것은 개인키 파일이다. 개인키 파일..
python: 특정 디렉토리 내의 파일 리스트를 얻는 방법 1. 파일명만 필요한 경우 os.listdir() 함수를 이용하면 특정한 디렉토리의 파일명 리스트를 쉽게 얻을 수 있다. import os files = os.listdir(PATH) 하지만 이렇게 하면 디렉토리 명도 포함된다. 디렉토리를 제외한 파일의 이름만 얻고 싶으면 import os files = [f for f in os.listdir(PATH) if os.path.isfile(f)] # files: [] 이렇게 하면 파이썬스럽게 파일명 리스트가 나올... 것 같지만, isfile()은 full path 를 넣어야 제대로 된 결과가 나온다. import os files = [f for f in os.listdir(PATH) if os.path.isfile(os.path.join(PATH, f))..
zsh alias 에서 설정한 커맨드가 매번 실행되지 않는다. 매번 타이핑하기 싫은 것을 zsh에 alias 해보려고 했더니 예상 외의 문제가 발생해서 남겨놓는다. ~/.zshrc 에 alias를 설정했다. alias printdate="echo ${date}" 이렇게 하면 printdate 커맨드를 내릴 때마다 지금 날짜, 시간이 출력될 것을 예상했는데... > printdate 2023년 7월 26일 수요일 10시 49분 19초 KST > printdate 2023년 7월 26일 수요일 10시 49분 19초 KST >printdate 2023년 7월 26일 수요일 10시 49분 19초 KST 결과는 두둥!!! 매번 실행될 필요가 있는 스크립트는 alias가 아니라 함수로 작성하는 것이 좋겠다. printdate () { echo $(date) } 이렇게 하면 잘..
python async IO를 통한 동시성 처리 python에서 동시성을 처리하는 방법을 정리해본다. 다루게 될 키워드들. multiprocessing, multithreading, async, await, async IO, coroutine, task, explicitly asynchronous, implicitly asynchronous, futures 기존에 동시성을 구현하기 위해 사용하던 방법들 1. Multiprocessing 복수의 CPU를 동시에 사용. multiprocessing 패키지을 이용해서 구현할 수 있다. 하드웨어 사양에 관련이 있고, 동시에 많은 계산이 필요한 작업에 적합하다. 2. Threading 다수의 thread가 번갈아가면서 실행되는 방법으로 동시성을 구현한다. 하나의 process가 다수의 thread를 포함할 수 ..
방화벽 내부의 로컬 네트워크에 외부에서 접근할 수 있게 하는 툴 ngrok http 80 무료 사용자는 2시간까지 임시 도메인이 유지된다. 잘 사용하면 아주 편함. ngrok.com
python: import a custom file 디렉토리에 __init__.py 를 추가해서 패키지로 만들면 import 로 쉽게 가져와서 사용할 수 있지만, 패키지로 만들고 싶지 않은 단일 파일을 import 하고 싶을 때는 python 빌트인 함수인 __import__() 를 사용한다. external = __import__("my_single_file.py") 이렇게 하면 패키지를 생성하지 않고 특정한 파일명을 가진 파일을 가져다 사용할 수 있다. 특히 파일명이 라이브러리 패키지 이름과 충돌날 때 유용하게 사용할 수 있다.
firebase functions node.js 한참 전에 올려놓았던 firebase function이 언제부턴가 돌아가지 않는 것을 뒤늦게 알고 원인을 찾아 수정하려고 보니 로컬 emulator를 통한 디버깅부터 deploy 까지 뭔가 제대로 되지 않는다. 얼마 전까지 google cloud functions는 잘 되는 환경이었는데? 하고 생각해보니 그건 python 이었지... 하여간 여러 가지 문제가 있었는데, 몇 시간 삽질 끝에 해결해서 과정을 정리해둔다. 1. Java version ❯ firebase emulators:start --inspect-functions ⬢ emulators: firebase-tools no longer supports Java version before 11. Please upgrade to Java versio..