분류 전체보기 22

spark 와 db연동 하기

data base에서 바로 spark로 데이터를 불러오자df2 = spark.read.format("jdbc")\ # jdbc는 maria/ mysql 계열 .option("url", db_url)\ .option("user", "db접근 아이디")\ .option("password", "db패스워드")\ .option("dbtable", "mysql에서는 db이름 psql일때는 스키마의 이름을 쓴다")\ .load() 위의 방식으로 읽거나 혹은 .format 메소드 말고 바로 jdbc 명령어를 사용해서도 읽어 올수 있다.df = spark.read.jdbc(url=db_url, table="테이블 이름", properties=db_properties) 단 이때 mariadb의..

spark 2025.01.22

Docker-linux-ubuntu 리눅스 우분투설치

도커를 리눅스 우분투에 설치해 보자  도커를 설치하는 방법은 여러가지가 있다1. apt2. docker-desktop3. package4. etc 기본적으로 apt와 docker-desktop이 편하지만 putty를 이용한 원격 linux 머신에 접속할 때는 다소 어려움을 겪을 수 있다.특히 os버전 이 18.04 bionic같은 예전 버전을 쓴다면 더더욱 이번 포스트에서는 os에 따른 다소 귀찮지만 쉬운 설치법으로 package를 이용한 설치를 해보고자 한다.Package를 이용한 docker 설치자신에게 알맞은 os와 버전을 확인 후 docker를 설치해보자  우선 os의 버전을 확인한다.lsb-release -a 명령어를 통해 os의 버전을 파악한다 CPU 아키텍쳐를 확인한다.uname -m 명령어..

docker 2024.11.13

Stable Diffusion 3 API 가지고 놀기

외부 API를 사용하는 방법을 연습해보자SD3(Stable Diffusion3)는 요즘 자주 사용되는 멀티모달 AI기술이다 프롬프트에 입력한 것을 이미지로 바꿔주는데 현재 https://stability.ai/ 위 사이트에 들어가면 api를 제공해 준다.Get Started with APIapi를 사용하기에 앞서 일단 회원가입을 해준다 google계정으로 만들면 간단하다회원가입은 api를 사용하기 위한 authoriztion 키를 얻기 위함이다. 위의 배너에서 get started with api 버튼을 클릭하자 아래로 내려가면  생성 업스케일 편집 등등 다양한 모델이 존재하는데 이중 generate의 모델 골라보자  how to use가 보이지만 외부 API를 처음 사용해본다면 당황할 수 있다 특히 오..

python 2024.09.27

[FastAPI] restapi를 위한 코드 순서

※ 프로젝트 구조 예시 fastapi_project/ # 프로젝트 root 디렉토리│├── app/ #fast api 관련 api모음 │ ├── __init__.py│ ├── main.py # 여기서 app= FastAPI()를 선언한다. web framework의 시작점│ ├── api/ │ │ ├── __init__.py│ │ ├── endpoints/ #endpoint로 crud의 명령어가 어느 url로 갈지 정한다. api/와 같은 트리 레벨에서 router로 사용되는 경우도 많다│ │ │ ├── __init__.py│ │ │ ├── items.py #예시│ │ │ └── users.py #예시│ ├── core/ #django에서 s..

python 2024.09.26

JWT을 사용할 때 주의사항

JSON Web TokenJWT란 무엇인가? JWT는 session과 같이 클라이언트가 서버에 data를 요청할 때 서버가 클라이언트가 신뢰할 수 있는 확인 할 떄 쓰인다.즉 인증( Authentication )을 위해 사용된다. JWT vs 세션(Session)   세션의 특징세션은 클라이언트를 구분하기 위해 서버에 DB를 두고 Session ID를 관리한다.Session ID는 쿠키(Cookie)를 통해 클라이언트에게 전달된다.Session ID를 통해 더 이상 로그인 ID와 PW를 보내지 않고 서버에 클라이언트가 누군지 확인한다.세션은 클라이언트를 강제로 로그아웃 시키거나, ban을 하기 쉽다. 하지만 많은 유저를 감당해야 하는 서비스의 경우 그 만큼 session ID를 서버에 보관해야하고 요청 ..

CS 2024.07.03

계산 시간 추정하기

문제 10억개의 int 중에서 100만개의 int를 작은 순서대로 추출하려고 한다메모리는 얼마가 필요하며 총 계산 시간은 얼마가 걸릴까?1. 메모리가 얼마 필요할까? int의 메모리 크기느 일반적으로 4byte라고 말한다 하지만 이는 정확하지 못하다.c, c++의경우 4bytejava의 경우 일반적으로 4bytepython의 경우 24byte가 출력된다.더보기python은 24byte인 이유는 객체이기 때문이다. sys.maxsize를 할경우 64bit컴퓨터 기준 8byte가 출력된다.계산을 위해 전제조건으로  64bit java 언어를 기준으로 하겠다. int로 충분히 10억까지의 숫자를 담을수 있으므로 10억은 int로 만들수있다 10억 x 4byte를 하면 약 4GB의 메모리 공간이 필요함을 알 수..

CS 2024.06.02

급격한 db 데이터 증가에 대처하는 방법 - Sharding

데이터 베이스에 급격스런 데이터가 추가 되었을 때 전략데이터 베이스에 급격스런 데이터가 추가 되면 성능에 큰 하자가 생길 때가 있다. 이럴 경우 어떤 방식으로 데이터를 분산할까? 1. DB Sharding2. DB Partitioning3. Replication4. Distributed db system 다음과 같은 전략이 사용될 수 있을 것이다. 이중 이번엔 sharding에 대하 기록하도록 한다. 1. 샤딩이랑 무엇인가?샤딩(sharding)은 db를 나누어 다른 machine(샤드(shard) 라고 불린다)에 db를 저장하는 방식을 말한다.  2. 샤딩의 전략A. 수평적 샤딩(Horizontal Sharding)  row단위로 테이블을 나누어 갹 샤드마다 row의 범위를 지정하여 저장한다. 위의 그..

DB 2024.05.27

poetry add 혹은 pipenv install 무한로딩

venv를 통한 pip install은 정상 작동되지만  poetry 혹은 pipenv와 같은 패키지 매니저를 쓸때 패키지 설치가 안될때가 있다. 이때 keyring인증이 문제인 경우가 있다 poetry add -vvv 패키지이름 poetry의 경우 위 -vvv커맨드를 입력하면 상세 로그가 나온다이때 만약 keyring인증에서 넘어가고 있지 않다면export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring 를 .bashrc 또는 .bashpofile에 등록하면 된다. 만약 위 방법으로 해결은 안되지만 검색이 필요할땐 다음 단어를 넣어 검색하는걸 추천한다. poetry add stuck / hang

python 2024.05.08

Clean-architecture 계층 Use Case layer

프로그램에서 가장 중요한 영역 use case1. 어떤 내용이 들어갈까?use case 계층은 프로그램(프로젝트) 혹은 앱에 있어 가장 중요한 부분이다.비즈니스 룰이 바로 이 계층에 들어간다.사용하는 진짜 데이터를 가공하는 부분이 비즈니스 룰의 역할이다. 예를 들어 사용자 로그인, 특정필터를 사용한 검색수행 그리고 은행의 트랜잭션 작업이 이에 해당한다.※ 비즈니스 룰이란 시스템의 가장 코어한 부분의 내용이다 2. User Case계층의 특징이 계층은 최대한 작으면 작을수록 좋다.작은 기능을 하나씩 고립 시키는 것(수정하거나 고칠때 이부분만 고치면 된다는 의미다.)작은 기능 하나씩 독립적으로 만들어 테스트하기 좋고 유지보수하기 좋게 만들어야한다.use case를 통해 entities에 접근할수 있어야 하며..

architecture 2024.04.29

Clean-architecture 계층 entities layer

clean architecture의 가장 안쪽의 있는 계층Entities layer에 대해 정리한다. 1. 어떤 내용이 들어갈까?이 계층은 도메인 모델의 구현체가 들어가게 된다.간단히 말하자면 앱을 만들때 상호작용하는 특정한 구현체들이 들어간다 보면된다. ※ 단, String 같은 파이썬에서 전반적이고 일반적인 사용되는 모델이 들어가는게 아니라, 앱 기준으로 특징을 기준으로 고립시켜 사용할 모델을 넣는다.ex) 예약 플랫폼에서 delux Room, suite room  책 clean-architectures-in-python에서는 다음과 같이 말하고 있다.If your project was a tool to analyse medieval manuscripts, however, you might need ..

architecture 2024.04.29