2009년 완공 예정인 광화문의 복원 완공 조감도이다. 답도가 예전처럼 길고 웅장 했으면 하는 아쉼이 많이 남는다. 정면 궁성도 어느정도 복원을 들어가고 부속 건물들도 함께 복원을 할예정하지만 또 아쉬움이 남는건 동십자각과 궁성 연결은 힘들듯 싶다치욕의 시간을 함께 했던 광화문의 진정한 원래 모습을 찾기를 기원한다. 광화문의 옛모습
API보다 유연한 무엇을 찾아 나서다 API를 기획하거나 제작 하다보면 엔드포인트에서 유연하게 작동할 수 있는 무엇(?)을 원하게 된다. 그러다보면 API에서 필드의 스콥을 정하는 필드를 만드는 악수를 두는 상황이 벌어질 수도 있다 중급이상 개발자야 알고있거나 찾아놨거나 만들었겠지만 뭐 여튼 이래저래 찾다보면 GraphQL을 만나게 된다. GraphQL GraphQL은 애플리케이션 프로그래밍 인터페이스(API)를 위한 쿼리 언어이자 서버측 런타임으로 클라이언트에게 요청한 만큼의 데이터를 제공하는 데 우선 순위를 부여한다 바로 이점 에서 장점이 생기는데 이부분으로 인해 차후 네트워크 대역폭을 절약시키는 데 도움을 주기도 한다. 파이썬 (#python) 최근들어서 #머신러닝 이나 #AI 관련 프로젝트에 대한 이야기만 나오면 나오는 언어가 바로 파이썬이다. GraphQL공식 사이트 가보면 알겠지만 프로젝트의 큰 부분을 차지하는게 JS 지만 관리 하는 입장이라면 아무래도 통합적으로 관리하기를 원할 수 있다보니 API 도 파이썬으로 개발 운영 해보는걸로 택했다. FastAPI + GraphQL (#strawberry) + SQLmodel 파이썬에 대해서 알아가는 중이기도 하지만 조금만 찾아보면 API만든다고 하면 많은 메뉴얼이 뜨고 있는 FastAPI(이름부터 마음에 듬) 를 택했다. 문제는 GraphQL 작성을 위한 프레임워크 인데 가장 많이 쓰이고 있는게 Graphene (star 7.7k) 이다. 코드를 보니 크게 어려운건 없지만 2위의 #strawberry 가 유독 끌렸다. 깃헙에서 스타갯수도 3.2k 로 한참 밀리는 느낌이지만 릴리즈 수가 압도적이었다. (어떤면에서 불안할 수 있다고 할 수 있겠지만 크게 Deprecated 되는 것이 없었다) ORM은 직관적이라고 판단한 SQLmodel을 활용하기로 했다. 패키지 관리 패키지 관리툴은 poetry를 사용 했다. [tool.poetry.dependencies] python = "^...
개요 리눅스 계열 데스크탑 OS 는 기본적으로 파이어폭스가 기본 브라우져로 설치 되어있다. 아무래도 이제 크롬이 익숙하다보니 크롬을 찾는 경우도 많고 리눅스와 파이썬 좀 한다 싶음 자동화 때문에라도 크롬을 찾기 마련이라 크롬을 설치해본다. 패키지 수동 설치 (AUR Helper 사용 안함) base-devel 패키지 설치 $ sudo pacman -S --needed base-devel git AUR 레포지토리(git 사용)에서 Chrome 설치 $ git clone https://aur.archlinux.org/google-chrome.git $ cd google-chrome $ makepkg -si 버전 업그레이드 AUR에서 버전 릴리즈가 이루어지면 수동으로 업그레이드 할 수 있다. $ git pull $ makepkg -si AUR Helper 사용 설치 AUR Helper 를 수동 패키지 처리 $ sudo pacman -S --needed base-devel git $ git clone https://aur.archlinux.org/yay-git.git $ cd yay $ makepkg -si 크롬 설치 $ yay -S google-chrome 버전 업그레이드 주의 pacman과 달리 yay는 "sudo"권한으로 실행하면 안된다. $ yay -Syu
개요 해외 주식을 하다보면 네이버 증권의 시가총액 목록 처럼 목록화 하는 페이지를 보고 싶어하는 분들이 많지만 미국 주식이 그렇게 호락호락 하지않음을 잘 알것이다. 돌고돌다 보면 finviz.com(이하 핀비즈)의 Screener(이하 스크리너) 페이지를 통해서 목록화를 시도 하는게 가장 깔끔하다. pandas 모듈을 활용하는 Python 패키지 pyfinviz 를 소개 해본다. from pyfinviz.screener import Screener # 매개변수 없음(기본 스크리너 테이블) screener = Screener() # with params (Analyst가 강력 매수 추천하는 "STOCKS ONLY"의 처음 3페이지) options = [Screener.IndustryOption.STOCKS_ONLY_EX_FUNDS, Screener.AnalystRecomOption.STRONG_BUY_1] screener = Screener(filter_options=options, view_option=Screener.ViewOption.VALUATION, pages=[x for x in range(1, 4)]) # available variables: print(screener.main_url) # 스크랩 URL print(screener.soups) # beautiful soup 페이지 단위 오브젝트 {1: soup, 2: soup, ...} print(screener.data_frames[0]['Ticker']) # 페이지 단위 pd.DataFrame 오브젝트 테이블 정보 {1: table_df, 2, table_df, ...} 크게 레인지를 주면 뻗어 버릴 가능성이 농후하니 머리를 많이 써야 한다 한다. ㅎㅎ
댓글
댓글 쓰기