본문 바로가기

일::개발

(69)
Fastlane match 할 때 .p8 인증키 관련 문제 해결 Flutter 앱의 iOS 배포 자동화를 Fastlane 으로 구성해서 잘 돌아가고 있었는데, 기능을 변경하면서 capability 정보를 포함한 새로운 Provisioning Profile로 교체할 필요가 있었다. fastlane match 를 사용해 github repository에 보관되어 있는 Provisioning profile를 업데이트하려고 했는데, 어라. 전에 안 보이던 에러가 발생했다.[09:23:55]: Called from Fastfile at line 67[09:23:55]: [09:23:55]: 65: )[09:23:55]: 66: [09:23:55]: => 67: match([09:23:55]: 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") 이렇게 하면 패키지를 생성하지 않고 특정한 파일명을 가진 파일을 가져다 사용할 수 있다. 특히 파일명이 라이브러리 패키지 이름과 충돌날 때 유용하게 사용할 수 있다.