2023의 게시물 표시

Arch 계열 리눅스 구글 크롬 설치

이미지
개요 리눅스 계열 데스크탑 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

Johnson & Johnson (JNJ )의 2Q 매출/이익 예상치 상회

이미지
Johnson & Johnson의 2분기 매출/이익이 예상치를 상회했다. COVID-19로 인해 노화방지와 메디테크(Medtech Product)에 대한 수요 증가로 인해 주목을 받아왔다. 연간 수익 및 매출 전망치 상향 조정 Johnson & Johnson( JNJ )의 주가는 제약/의료 제품 회사가 예상보다 나은 결과를 제시하고 의료 기술 제품에 대한 높은 수요에 대한 지침을 높이면서 상승 반전 했다. 2023년 2분기 주당순이익(EPS)이 2.80달러, 매출이 6.3% 증가한 255억3000만달러를 보고, 모두 예상을 초과 달성   제약 및 의료 기술 혁신에 중점 수술, 정형외과 및 시력 향상 기기를 만드는 J&J의 MedTech 사업부 매출은 팬데믹 기간 동안 미국인들이 미뤄둔 의료절차를 재개함에 따라 12.9% 증가했다고 보고 했다. 이어 제약 매출은 COVID-19 백신 판매 감소로 인해 3.1% 증가했고 소비자 건강 사업부 수익은 5.4% 증가했다. CEO인 Joaquin Duato는 J&J가 "제약 및 의료 기술 혁신에 중점을 둔 2개 부문 회사가 되는 것을 포함하여" 수많은 촉매제 덕분에 하반기에는 강한 포지션에 접어들고 있다고 답했다. 5월에 회사는 소비자 건강 사업부를 Kenvue( KVUE ) 라는 독립 회사로 분사   시장전망 J&J는 연간 EPS를 이전의 $10.60에서 $10.70에서 $10.70에서 $10.80로 높였습니다. 하지만 매출은 988억~998억 달러로 당초 예상했던 979억~989억 달러보다 적다. J&J 주가는 보도 이후 20일 장초반 거래에서 6% 상승했으나 연중 하락세를 보여왔다.

미국 주식 Ticker(종목) 데이터 리스트업 #핀비즈 #자동화

이미지
개요 해외 주식을 하다보면 네이버 증권의 시가총액 목록 처럼 목록화 하는 페이지를 보고 싶어하는 분들이 많지만 미국 주식이 그렇게 호락호락 하지않음을 잘 알것이다. 돌고돌다 보면 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, ...} 크게 레인지를 주면 뻗어 버릴 가능성이 농후하니 머리를 많이 써야 한다 한다. ㅎㅎ

Bijection #짧은주소 를 만들어보자

이미지
bit.ly 를 보다보니 Short URL 서비스를 보다보니 다합쳐도 글자수로 22열 이다. (예: https://bit.ly/3o5QAs3) 문득 path 쪽을 유심히 보면 일정한 규칙에 의해서 작성이 되는듯하다 bit.ly 는 월에 2억개의 URL이 생성된다고 주장한다 Int(4byte) unsigned 기준으로 대략 42.8억의 표기를 한다 쳐도 10자리가 필요하다. 그것도 주장 대로라면 대략 21개월이면 꽉 채워 진다. 늘 그렇듯 검색의 바다에서 원리를 찾아 떠나다 이래저래 찾다보니 전단사 대응에 대해서 알게 되었다. 사실 우여 곡절이 많았다 BASE64 부터 md5, hex 등등 원하는 값이나 길이에 못미치는 상태 였다. 여윽시 chatGPT? Bijection(전단사 대응)은 한 세트의 원소들을 다른 세트의 원소들로 일대일로 대응시키는 함수입니다. Python에서 bijection을 구현하는 방법은 여러 가지가 있지만, 가장 간단한 방법은 딕셔너리를 사용하는 것입니다. 딕셔너리는 각 원소를 키(key)와 값(value)으로 매핑하는 자료형입니다. 답은 쉽게 구할 수 있었지만 이 과정까지 가는데 검색 엔진을 이래저래 뒤지고 또 뒤지고 나서야 Bijection이라는 용어를 알게 되었다 사실 대략적으로 숫자의 값을 나눠서 나머지 (hex 와 비슷할꺼라 생각) 를 매칭할 계획이었다. chatGPT 가 만들어준 코드 chatGPT는 개인적으로 중급 이상의 개발자에겐 정말 부사수 같은 개발자이지 싶다. 큰 그림을 그리다가 막상 코딩을 하려면 어디서 부터 할지 또는 중간 중간 검색을 통해서 그걸 검증하고 하는데 시간이 많이 걸리는데 chatGPT는 그런 부분에서 상당히 시간을 줄일 수 있도록 도와준다. def create_bijection(keys, values): if len(keys) != len(values): raise ValueError("The number of keys and values mus

Python Strawberry GraphQL 예제 (feat. #sqlmodel, #mysql)

이미지
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 = "^

1-2-2. Strawberry graphql 지원 유형 ( #Supported #types )

이미지
지원되는 타입 GraphQL은 아래와 같은 타입을 지원한다. 스칼라 타입 (Scalar types) 개체 타입 (Object types) 쿼리 타입 (The Query type) 뮤테이션 타입 (The Mutation type) 입력 타입 (Input types) 스칼라 타입 (Scalar types) 스칼라 타입은 Python 의 기본 타입과 유사하다. Int: 32비트 정수 integer는 Python의 int 에 매핑 Float: Python의 float에 매핑 String: 파이썬의 str에 매핑 Boolean(참 또는 거짓)은 파이썬의 bool에 매핑 고유 식별자 ID는 문자열로 직렬화되고 다음과 같이 사용 가능 strawberry.ID(“value”) 개체를 가져오거나 캐시의 키로 사용됨 UUID, 문자열로 직렬화된 UUID 값 @ Strawberry는 날짜, 시간 및 날짜/시간 개체에 대한 지원을 포함하고 있다. 공식적으로 GraphQL 사양에는 포함되어 있지 않지만 대부분 서버에서 지원하고 있다. ISO-8601 (날짜와 시간과 관련된 데이터 교환을 다루는 국제 표준) 로 일련번호가 지정되어 있다. 기초 적인 스칼라 타입의 요소로도 작동하지만 고유한 스칼라 타입을 지원한다. 개체 타입(The Query type) GraphQL 스키마에서 정의하는 대부분의 타입은 객체 타입이고 개체 타입에는 필드 모음이 포함되며 각 필드는 스칼라 타입 이나 다른 개체형일 수 있다. Tip. "개체 타입"은 이전 스키마 에서와 같이 서로를 참조할 수 있다. import typing import strawberry @strawberry.type class Book: title: str author: "Author" @strawberry.type class Author: name: str books: typing.List[Book] 필드에 데이

PYTHON SFTP 파일전송 (paramiko)

이미지
서버를 운영하다 보면 사용자들이 업로드한 파일을 분산 처리 하거나 하는 일이 상당히 많을 것이다. 파일 서버마다 WAS를 설치 하기도 그렇고 리눅스 서버를 사용한다면 SSH가 거의 기본으로 사용하다 보니 용이하게 파일 업로드 할 수 있도록 사용하는게 어떨가 싶다. 찾아보니 파이썬에서는 paramiko 라는 라이브러리가 있고 간단하게 사용 가능 하기에 정리 해둔다. 1. 패키지 설치 $ pip install paramiko 2. 코드구성 import paramiko # 호스트 (사용가능한것을 입력, 아래는 예시) host = "10.10.10.1" # 포트 (운영 서버라면 기본 포트 이외로 하는게 좋다) port = 22 # 트랜스포트 생성 transprot = paramiko.transport.Transport(host,port) # 사용자 아이디 패스워드 (일반 사용자로 구성) userId = "user" password = 'passwd' # 커넥션 transprot.connect(username = userId, password = password) sftp = paramiko.SFTPClient.from_transport(transprot) # 변수에 로컬 원격 파일명 선언 ( 같은 이름으로 해도 상관 없다 / 예시는 이해하기 쉽도록) localPath = 'local_img.png' remotePath = 'remote_img.png' # 파일 업로드 sftp.put(localpath, remotepath) # 파일 다운로드 (PUT 의 반대) sftp.get(remotepath, localpath) # Close sftp.close() transprot.close() 간단 하지만 매우 강력한 파일 업로드를 구성 할 수 있다. 여러 언어와 섞어서 쓰기도 좋을 듯하다.

#파이썬 #유튜브 영상 이미지 추출

이미지
최근에 드라마를 보다가 스크랩을 하고 싶어졌다. 인스타나 블로그질이라는걸 해보고 싶었는데 뭔가 이미지를 따는게 귀찮았다. 찾아보니 유튜브 영상을 바로 다운로드 해줄 수 있는 파이썬 라이브러리가 있길래 영상을 다운로드 받아서 이미지 추출까지 해주는 라이브러리를 한큐에 만들고자 한다. pytube 설치 $ pip install pytube ffmpeg 설치 # 윈도우의 경우에는 다운로드 받아서 폴더에 압축을 풀고 환경설정만 잡으면 된다. $ sudo apt install ffmpeg 코드작성 from pytube import YouTube from urllib import parse import datetime as dt import sys import os DOWNLOAD_FOLDER = "./Downloads" url = None duration = 1 distdate = dt.datetime.now().strftime("%Y%m%d") # 혹시 까먹을 까봐 args 실행코드만 출력하면 관련 args에 관한 정보를 출력 if len(sys.argv) <= 1: print("args:2 => 유튜브 주소") print("args:3 => 분당 장수 (최대 1800)") sys.exit(0) # 두번째 유튭 주소 입력시 if len(sys.argv) >= 2: url = sys.argv[1] # 분당 몇장 출력 할것인지 계산 처리 1입력시 1초 한장 if len(sys.argv) >= 3: duration = int(sys.argv[2]) duration = 1800 if duration > 1800 else duration duration = round( (duration / 60),2) # ffmpeg 실행 코드 ffm = 'ffmpeg -ss 00:00:0

Arch Linux에 FFmpeg를 설치하는 방법

이미지
  개요 FFmpeg는 멀티미디어 파일을 처리하는 오픈 소스 패키지다. 워낙 멀티미디어 파일 관리에는 크기 조정, 인코딩/디코딩, 노이즈 제거, 압축, 썸네일 생성 등과 같은 다양한 일반 작업이 포함되어 있다보니 이러한 작업을 수행하기 위해 FFmpeg는 수십 개의 라이브러리와 함께 설치 된다. 최근 들어서 인공지능, 머신러닝 분야에서도 사용되어지다 보니 FFmpeg의 중요성을 고려하여 Arch Linux에 FFmpeg를 설치하는 가능한 방법을 알아본다. Pacman을 사용하여 설치하는 방법 Pacman은 Arch Linux의 공식 패키지 관리자이다. FFmpeg도 포함되어 있다. 패키지를 설치하기 전에 시스템 패키지를 업데이트하는 것이 좋다. $ sudo pacman -Syu $ sudo pacman -S ffmpeg [sudo] USER 암호: 경고: ffmpeg-2:5.1.2-1는 최신 버전입니다. -- 재설치 의존성 해결 중... 꾸러미 충돌을 찾는 중... 꾸러미 (1) ffmpeg-2:5.1.2-1 총 다운로드 크기: 11.19 MiB 총 설치 크기: 36.59 MiB 알짜 업그레이드 크기: 0.00 MiB :: 설치를 진행하시겠습니까? [Y/n] y :: 꾸러미 가져오는 중... ffmpeg-2:5.1.2-1-x86_64 11.2 MiB 1447 KiB/s 00:08 [##########################################] 100% (1/1) 키링의 키를 검사 중 [##########################################] 100% (1/1) 꾸러미 무결성 검사 중 [####################################

Arch Linux 시스템 업데이트

이미지
개요 머신러닝이나 딥러닝이 많이 보편화 되고 관공서에서도 관심을 갖으면서 우분투가 확실히 대세로 자리 잡음을 느낀다. 쥔장의 개인적인 성향이 많은 사람들이 관심 갖으면 다른 유니크한 것들을 찾기 시작 하는데 최근에 꽃힌 OS 가 Arch Linux (아치 리눅스)다. 우분투를 기본적으로 사용 하다보면 설치하거나 업데이트를 할때에 습관적으로 "sudo apt update && sudo apt dist-upgrade" 명령을 날리곤 한다. 그러다보니 문득 Arch Linux 는 습관이 들어 있지도 않고 하다보니 이번 기회에 정리를 해두려 한다. 데비안 우분투와 마찬가지로 오리지널 Arch를 사용하든 Manjaro 및 Garuda Linux와 같은 Arch 기반 배포판을 사용하든 간단한 명령으로 시스템을 안전하게 업데이트하는 방법을 보여준다 모든 Linux 배포판에서는 패키지를 최신 상태로 유지하는 것이 중요하다고 생각되어진다. Arch는 수시로 최신 업데이트를 제공하고 있고 시스템 손상 및 패키지 손상을 방지하려면 효과적인 백업과 함께 자주 업데이트해야 한다.   Arch Linux 시스템 업데이트 대부분의 아치 기반 배포판은 apt 대신에 pacman 이라는 패키지 관리자를 이용한다. 사용자 계정에 sudo 액세스 권한이 필요하다 $ sudo pacman -Syu [sudo] USER 암호: :: 꾸러미 데이터베이스 동기화 중... core 161.7 KiB 323 KiB/s 00:01 [##########################################] 100% extra 1857.5 KiB 1451 KiB/s 00:01 [##########################################] 100% community

1-2-1. Strawberry graphql 스키마 기초 개요 #Schema #basics

이미지
GraphQL 서버는 스키마를 사용하여 데이터의 모델을 설명할 수 있다. 데이터 테이블에 필드가 있는 유형 의 계층 구조를 정의한다. 또한 클라이언트가 실행할 수 있는 query(읽기) 와 mutation(쓰기, 수정)을 제공한다. 스키마의 기본과 Strawberry를 사용하여 빌드하는 방법에 대해 알아보자 스키마 정의 언어(SDL : Schema definition language) GraphQL 서버 스키마를 생성하는 방법에는 두 가지가 있다. 하나는 "스키마" 우선 방식 그리고 또 다른 하나는 "코드" 우선 방식 이다. Strawberry 는 코드 우선 방식으로 정의한 스키마만 지원한다. 코드 우선 방식으로 들어가기 전에 스키마 정의가 무엇인지 알아보자. 스키마(Schema) 는 GraphQL 사양에 포함된 GraphQL의 스키마 정의 언어를 사용함으로써 작동하는 것을 의미한다. SDL을 사용하여 정의한 스키마의 예시 type Book { title: String! author: Author! } type Author { name: String! books: [Book!]! } 스키마는 이들 사이의 모든 유형과 관계를 정의한다. 이를 통해 클라이언트 개발자는 사용 가능한 데이터를 확인하고 해당 데이터를 특정하여 하위 집합을 요청할 수 있다. @ !(느낌표) 필드가 null을 허용하지 않음을 지정한다. 스키마는 데이터를 가져오는 방법을 지정하지 않는다. 나중에 리졸버를 정의할 때 구현한다. 코드 우선 접근 방식 위에 언급했듯이 Strawberry는 코드 우선 접근 방식을 사용한다. 아래 예시를 보면 쉽게 이해 할 수 있다. import typing import strawberry @strawberry.type class Book: title: str author: "Author" @strawberry.type class Aut

1-1. Strawberry graphql 시작하기

이미지
이 튜토리얼(https://strawberry.rocks/docs)은 다음과 같이 활용이 될 수 있다 GraphQL 원리에 대한 기본적인 이해를 돕는다 Strawberry를 사용하여 GraphQL 스키마 정의 할 수 있다. 스키마에 대해 쿼리를 실행할 수 있는 Strawberry 서버 를 구축 할 수 있다. 사용자가 명령줄과 Python에 익숙하고 최신 버전의 Python(3.7+)이 설치되어 있다고 가정한다. Strawberry는 Python의 데이터 클래스 및 유형 힌트 기능 위에 구축됩니다. 1단계: 새 프로젝트 생성 및 Strawberry 설치 virtualenv 를 통해서 "strawberry debug" 서버를 설치설치 한다 $ mkdir strawberry-demo $ cd strawberry-demo $ python -m venv virtualenv $ source virtualenv/bin/activate $ pip install 'strawberry-graphql[debug-server]' 2단계: 스키마 정의 모든 GraphQL 서버는 스키마를 사용하여 클라이언트가 쿼리할 수 있는 데이터 구조를 정의한다. 하기 예제에서 타이틀과 예약자를 이용하는 예약(부킹) 쿼리하는 서비스를 구성한다. 에디터에서 schema.py 파일을 생성하고 다음 내용이 포함될 수 있도록 한다. # schema.py import typing import strawberry @strawberry.type class Book: title: str # 예약 타이틀 author: str # 예약자 @strawberry.type class Query: books: typing.List[Book] 클라이언트가 0개 이상의 부킹 목록을 반환하는 쿼리를 실행할 수 있는 GraphQL 스키마가 생성되었다. 3단계: 데이터 세트 정의 이제 스키마 구조가 있으므로 데이터 자체를 정의할 수 있다.