본문 바로가기

전체 글

(94)
SideKickCC Claude Code 모델이 좋아지면서 점점 응답을 기다리는 시간도 늘어나고 있다.한번에 여러 세션을 돌리다보니 놀고 있는 터미널이 생기는 것이 꼴보기 싫기도 하고. (노동계급의 자본가 놀이인가) 터미널에 붙어서 세션 현황을 알려주는 프로그램들이 있기는 한데, 그냥 이걸 밖에서 보여주는 장치가 있으면 좋겠다 싶어서, 그리고 이 정도는 쉽겠다 싶어서 첫번째 프로젝트로 정했다. 이 프로젝트는 크게 3가지로 나눌 수 있다.아두이노 장치 (하드웨어)아두이노, PC용 소프트웨어아두이노 보드용 하우징(3D프린터)아두이노는 아무 것도 모르는 상태였고, 그나마 학교 다닐 때 남땜 좀 해봤으니 어떻게 되지 않을까 하는 근거 없는 자신감만. (회로이론 C였던가...)소프트웨어는 뭐 C++로 하면 된다니까 어떻게든 되겠지...
새 취미 시작 작년 연말에 3D 프린터를 보고 오! 저거 재미있겠네~ 하고 군침만 삼키고 있었는데, 갑자기 딸내미가 반 친구가 가져온 모형을 보고 3D 프린터를 크리스마스 선물로 받고 싶다는 폭탄 선언을...그 핑계로 작년 크리스마스에 우리 집에 오신 산타할아버지는 엄청 큰 박스를 놓고 가셨다. 한동안 메이커월드에서 이것저것 모델 다운로드 받아서 예쁜 쓰레기를 양산하다 시들해질 무렵, 3D 프린터의 도착점은 결국 IOT와 아두이노라는 이야기를 듣고 잠시 시도해봤지만, 3D 모델링 툴은 똥손에게 너무 높은 벽이었다. 그렇게 3D 프린터가 자리만 차지하는 먼지 수집기가 되어가나 했는데... 세상이 변해버렸다.AI 시대에 못 하는게 어딨어! 마음을 먹고 나니 아니 이런 재미진 일이 있나!재미난 것들을 뚝딱뚝딱 만들어볼 수 ..
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: ..
catties 알리에서 뭘 좀 사려고 봤더니 크기표가 이렇게 나와 있다. 응? catties? 이게 뭐지? 생전 처음 보는 단위라 뭔가 하고 찾아봤더니 중국, 동아시아에서 무게를 측정하는 단위로 약 600그램 이란다. -_- 이... 이것은... '근' 이 아닌가! 옷 사는데 사이즈를 '근' 으로 측정한다니... 나는 100근이라 S 를 사야 하는 듯.
python으로 email 발송하기 (feat. gmail SMTP) python script에서 간단하게 이메일을 발송하고 싶고, 이메일의 빈도가 높지 않으면 번거롭게 SMTP 서버를 설정하지 않고 gmail에서 제공하는 SMTP 서버를 이용해서 메일을 발송할 수 있다. 간단한 예시 코드는 아래와 같다. import os import smtplib from email.mime.text import MIMEText from datetime import datetime, timedelta import glob # Gmail 설정 gmail_user = 'SENDER USERID@gmail.com' # Gmail 주소 gmail_app_password = 'YOUR APP SPECIFIC PASSWORD' # 앱 비밀번호 # 이메일 전송 def send_email(subjec..
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))..