일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ExoPlayer
- llm
- list map
- AWS EC2
- ListAdapter
- video caching
- android custom view
- 안드로이드
- FastAPI
- exoplayer cache
- Zsh
- kotlin collection
- android ktor
- android
- getChangePayload
- ktor api call
- map
- 스피너
- ListAdapter DiffUtil
- kotlin list
- 시행착오
- Python
- 유튜브
- ChatGPT
- ktor client
- build with ai
- DiffUtil.ItemCallback
- 유튜브 요약
- doc2vec
- android exoplayer
- Today
- Total
목록TIL - Python (5)
버튼 수집상
전편 링크 [FastAPI] 인트라넷 앱을 위한 API 만들기 - 0. 소개 배경 인트라넷을 앱으로 만드는 내부 프로젝트가 착수됐다. 인트라넷은 정적문서로 만들어진 오래된 웹사이트라, 앱-웹을 연동시키는 API를 새로 만들어야 했다. 웹팀이 API를 만드는 동안, 앱팀 collectingbuttons.tistory.com 개인적으로 헤맸던 부분 위주로 기록한다. EC2 ubuntu 설정이나, FastAPI의 기본 사용법에 대한 설명은 생략한다. 🏃♀️EC2에서 screen 세션 돌리기 SSH 세션을 끝내고도 어플리케이션을 계속 실행시키기 위해서 screen 세션을 사용했다. 🎮기본 명령어 스크린 세션 리스트 보기 screen -ls 백그라운드에서 새로운 세션 실행 screen -d -m python3 ..
배경 인트라넷을 앱으로 만드는 내부 프로젝트가 착수됐다. 인트라넷은 정적문서로 만들어진 오래된 웹사이트라, 앱-웹을 연동시키는 API를 새로 만들어야 했다. 웹팀이 API를 만드는 동안, 앱팀은 UI 및 신기능 테스트를 위해 데모앱을 만들어보기로 했다. 그런데 빈 껍데기 앱을 만들자니 아무래도 허전하여, 필요에 맞게 간단한 API를 우선 직접 만들기로 한다. ✅FastAPI란? 경량화된 API 서버 만들기에 최적화된 파이썬 웹 프레임워크. Swagger API 문서화 지원. 📝왜 크롤링 API를 만들었나? 1. 데모 앱에 필요한 최소한의 데이터를 읽어오는 API가 필요했다. 2. 회사 내부 DB 읽기 권한이 없어서 크롤링으로 구현했다. 3. Java와 달리 Python은 스크립트 언어라서 컴파일된 실행파..

빠르게 보는 결론 쿼리를 일반 문자열로 적었더니 재사용도 어렵고 가독성도 떨어져서 ORM을 도입해봤다. 그랬더니 리스폰스 속도가 너무 느려졌다. 일단 잠정 중단하고 무엇을 어떻게 도입해봤는지 행적을 남긴다.ㅠㅠ 배경 리스트를 뿌리는 기능이 대부분인 BackOffice 사이트에 FastAPI로 API 백엔드를 만들었다. 그런데 내가 쿼리를 못 짜서인지, get 함수 바디가 엄청나게 길고 안 읽혔다. 그냥 통짜 문자열이라서 신택스 하이라이팅이 안 되는 게 너무 불편했다. 문득 ORM이라는 것을 기억해내고 장단점을 찾아봤다. 복잡한 데이터 조작없이 select 쿼리가 대부분이라면 ORM을 써도 괜찮지 않을까 싶어서 chatGPT에 물어봤다. Yes, considering your emphasis on sele..
FastAPI 공식 문서를 참고해서 token api를 구현했다. @app.post("/token") async def login(form_data: Annotated[OAuth2PasswordRequestForm, Depends()]): user_dict = fake_users_db.get(form_data.username) if not user_dict: raise HTTPException(status_code=400, detail="Incorrect username or password") user = UserInDB(**user_dict) hashed_password = fake_hash_password(form_data.password) if not hashed_password == user.h..

웹 크롤러에서 추출한 이미지 패스값을 저장하는데 이미지 패스가 중복될 경우, 수정한 사용자 ID만 업데이트하고 중복되지 않을 경우엔 이미지 패스와 저장한 사용자 ID를 저장하는 쿼리를 짰다. db = pymysql.connect(host='0.0.0.0', port=8000, user='userName', password='****', db='crawler', charset='utf8') cur = db.cursor() #... for path in paths: insert_dict = {'crawler_idx': 0, 'insertUser': userId, 'updateUser': userId, 'imgPath': path} # 이미지 저장하거나 덮어쓸 인덱스 # @position 변수할당 var_sq..