2024/10 39

팀플) REST API 별자리 데이터 구체화 일단 완료.

별자리 정보 요청시 더이상 시간정보 입력 하지 않음.이제는 sunset정보 활용해서 시간 넘김get_best_visibility_time_for_constellation 메서드 활용해서 best_time 추출 로직 구현고도의 처리가 힘들어서 일단은 한국 평균 고도를 고정값으로 사용.Skyfield import 이슈, load_constellation_map으로 해결.지구 객체와 별자리 데이터 전역으로 처리init에 get_best_visibility_time_for_constellation 추가.이걸 구현했고,결과만 보자.이렇고 다른 요청을 몇개 더 해보자.// 20241013051721// http://localhost:5555/api/constellations?lat=36.4319&lon=127.48..

팀플) REST API 별자리 데이터 구체화중 (api 호출 효율적으로 설계)

이건 전의 포스트를 봤다면 대충은 구현해 놓았다는 것을 알 것이다.우선 UTC 시간을 현지시각으로 변환하는 것이 필요했었으니 별자리를 만들 땐 몰랐던 사실이 있다.유저가 시간 정보를 입력해 요청하면 그 시간 또한 UTC로 변환해야한다는 사실이..그렇다면 api요청이 호출에 대해서 명확히 할 필요가 있다. 왜냐면 안그러면 돈이 나가니까..별자리 데이터 요청은 기간을 설정할 수 있다.만약에 내 로직에서 offset 데이터에 대한 것을 명확히 해주지 않으면 api 호출이 요청한 기간의 모든 날에 다 이루어질 가능성이 있다.난 돈을 아껴야된다. (사실 아끼는게 아니고 여기서는 돈이 나가게 두면 안된다)그러니 이걸 명확히 하고 테스트 하자.우선 현재의 구조상 루트 (/api/constellations 엔드포인트)..

팀플) REST API 행성 데이터

일단은 행성 데이터를 대충 뽑아오는 로직을 썼고, 반환받아보자고.{"error":"'Angle' object has no attribute 'minutes'"}결과다.그래서 코드를 고쳤고.원하는 결과값을 받아냈다.그런데 여기서 고민해볼 것이 있다.api 호출이 많아진다. 줄일 방법이 없을까?일단 생각을 해봤는데 만약 best_time이 낮시간대면? best하지 않은 것 아닌가? 그럼 다시 현지 시각으로 변환해서 일몰 일출과 대조를 해야하네?그럼 시간 변환 로직은 두번 코드를 쓰게 되는데 이건 효율적인 것인가? 아닌 것 같다. 시간 변환을 담당하는 코드를 만들어서 불러오는게 좋겠다.그럼 일출 일몰 로직을 고쳐야하네.어? 근데 그러면 행성 정보를 요청하면 API 요청을 두번하게 되는 거 아닌가? 왜?요청 -..

팀플) REST API 일몰 일출 정보 데이터 한국시간 반환 검증

검증 방법검증을 위해서 23년도의 랜덤한 날짜로 데이터를 요청해서 구글링한 결과와 같은지 대조한다. 한국의 값만 오차가 크지 않으면 된다.위치는 광역시가 기준이다.요청 데이터부산 (부산광역시):http://localhost:5555/api/sunrise_sunset?lat=35.1796&lon=129.0756&date=2023-06-15대구 (대구광역시):http://localhost:5555/api/sunrise_sunset?lat=35.8714&lon=128.6014&date=2023-11-23인천 (인천광역시):http://localhost:5555/api/sunrise_sunset?lat=37.4563&lon=126.7052&date=2023-04-07광주 (광주광역시):http://localho..

팀플) REST API 일몰 일출 정보 데이터 시간의 정확성 올리기. (Google Time Zone API)

시간의 정확성 올리기 를 하기위해서 google time zone api를 python프로젝트에 도입할 생각이다.구글로그인을 이미 Spring에서 구현을 해서 구글 클라우드 콘솔에 API KEY는 있다. 여기서 끌어오면 될듯!그래서 이걸 검색해서 추가해주자.추가하면 거주지와 카드 정보 등록이 있는데, 데이터 한도가 초과하지 않는한 결제 될 일은 없으니 걱정말고 일단 생성하자.(초과에 임박하면 알림 설정도 있더라)이것도 혹시 모르니까 설정해두자. 데이터때문에 200달러를 날리고 싶지는 않으니까..도커 컨테이너 주소로 설정해줬다.이건 비번은 필요없댄다.여튼 이제는 python 프로젝트로 가져가보자.우선 api KEY는 Spring과 React에서 했던 것과 동일하게 .env를 통해서 하자.pip instal..

팀플) REST API 일몰 일출 정보 데이터

일단 구현중 큰 문제에 직면함..datetime이라는 파이썬에서 기본으로 제공하는 라이브러리가 있는데, timedelta를 엑세스 할 수 없는 문제에 직면했다.venv(가상환경)을 지웠다가 다시 생성하고 라이브러리를 받아도 해결이 되지 않았다.구글링 해보니까 datetime.py를 생성해서 사용한다면 이런 문제가 발생할 수도 있다고 하는데, 나의 경우는 당연 그건아니고 datetime임포트까진 되는데 timedelta를 불러오는데서 문제가 발생한 것.재설치 해보고 파이썬 콘솔로 사용해봤는데 사용은 된다. 근데 어째선지 프로젝트에서는 안된다.어 너무 답답해서 그냥 여기서 찾아봤는데 두개네?아 두개가 문제가 아니고 가상환경에서 pip내에 datetime.py가 존재하는데 이것 때문에 충돌하는건가?아니 얘네 ..

팀플) REST API 별자리 정보데이터 생성.

흠.. 쉽지 않네?계속 고치다보니까 에러가 바뀜.일단 에러가 좀 계속해서 많았는데 그래서 skyfield에 대한 정보 수집부터 했다.skyfield 1.49 버전을 사용중이였는데, 그야 install을 그냥 진행해서 제일 최신 버전을 다운 받았으니까.제일 정보가 많고 안정적인 버전이 1.45인 것을 확인하고 다운그레이드 진행.pip install skyfield==1.45이제는 좀 에러가 없었으면 좋겠다.그래도 여전히 문제가 해결되지 않아서 더 정보를 찾아보고,pip install skyfield-data이런 것도 필요하다는 것을 알게되었다. 설치를 안해서 찾지 못한 것.여기서 이 둘의 차이점이 뭐냐면Skyfield: 파이썬으로 천문학 계산을 쉽게 할 수 있게 도와주는 라이브러리. 행성, 별, 인공위성 ..

팀플) REST API 설계 시작.

git을 보니까 __main__, __init__이나 다양한 폴더들이 보였다.그래서 이런 구조를 따라가는 것 부터 시작.내 프로젝트는 현재덩그러니.. 하다.star_info_api/│├── venv/ # 가상 환경 폴더 (추적하지 않음)│├── app/ # 메인 애플리케이션 폴더│ ├── __init__.py # Flask 앱 초기화│ ├── routes.py # 모든 API 엔드포인트 정의│ ├── models.py # 데이터 모델 정의 (필요 시)│ └── utils.py # 공통 함수나 유틸리티 함수 정의│├── instance/ # 설정 파일 (예:..

팀플) Python 설치 및 Skyfield 설치 적용. REST API 설계 시작.

우선 AstromyAPI 폐기를 결정했고 차선책으로 Python 라이브러리 Skyfield를 사용하자고 결정했다.Skyfield를 사용해서 데이터를 직접 계산, 가공해서 천문 데이터를 만들고, 이를 배포할 생각이다.해야할 일Python 설치Skyfield 라이브러리 설치Skyfield 데이터 생상 로직그러니까 결론은 Python으로 API를 직접 만들겠다는 내용이다.일단 설치부터 하자.본인은 맥 환경이라.brew install python3이렇게 설치했다.잘 설치 됐군.설치 후 Python 패키지 관리자(PIP)를 확인해보니까 설치가 되지 않아서 직접 설치해줬다.가 아니고, 알아보니까 mac 환경에서 설치 진행을 homebrew로 진행해서 가상환경이 필요하다고 해서 가상환경을 만들어 주고 pip을 실행시..

팀플) AstronomyAPI 연결 시작 (폐기)

이제는 Astronomy API를 연결해보자.여기서 앱 생성해주면 API Key를 주겠지. 나도 처음해봐서 잘 모른다.이렇게 생성.음 주는군 이제 이걸 사용하면 된다.만들었으니 .env에 KEY값을 환경변수로 저장해주고@Servicepublic class AstronomyApiService { private final String apiKey; private final String apiSecret; private final String baseUrl; private RestTemplate restTemplate = new RestTemplate(); public AstronomyApiService() { // Dotenv로 환경 변수 불러오기 Dote..