기술정리16 파이썬 프로그램 만들기 Flethttps://flet.dev/ Build multi-platform apps in Python powered by Flutter | FletBuild multi-platform apps in Python powered by Flutter.flet.dev `pyqt`, `tkinter` 등등 과 같이 파이썬 프로그램을 만들기 위해 사용된다.flutter 기반으로 만들어졌기 때문에 웹/앱 어디서든 배포가 가능하다. 단순하고 빠르게 개발이 가능하기 때문에 선택한 라이브러리이다.들어가기 앞서가능하면 최신적이면서 어느 정도 검증되었고 성능, 유지보수, 생산 이점을 챙기는 라이브러리 버전을 채택한다. 중복제거를 최대한 피하고 유지보수를 용이하게 하기 위해서 `class` 별로 코드를 작성한다.가능하면 최대.. 2024. 6. 14. Django 크롤링 & 스크랩핑 하기 크롤링 & 스크랩핑 이란?크롤링 (Web Crawling): 크롤링은 웹을 탐색하고 데이터를 수집하는 자동화된 프로세스다.크롤러 또는 스파이더라고 불리는 프로그램이 웹 페이지를 순회하며 링크를 따라 이동하면서 정보를 수집한다. 주로 검색 엔진이 웹을 색인화하고 사용자에게 검색 결과를 제공하기 위해 크롤링을 사용한다크롤러는 HTML을 분석하고 필요한 데이터를 추출하여 저장하거나 다른 시스템으로 전송한다. 스크래핑 (Web Scraping): 스크래핑은 웹 페이지에서 필요한 데이터를 추출하는 과정을 의미한다. 이는 주로 자동화된 방식으로 이루어진다.웹 페이지의 HTML을 읽고 분석하여 특정 데이터를 추출하거나 원하는 형식으로 가공한다.스크래핑은 크롤링 이후에 이루어지는 단계로, 크롤러가 수집한 데이터에서 필.. 2024. 5. 6. Django 다중 업로드 지원하기 장고에서의 다중업로드 지원장고에서는 단일 업로드만을 기본적으로 지원한다.프로필 이미지 같이 한 개의 이미지만 등록하는 경우라면 상관없겠지만 여러 이미지를 등록하기 위해서는 별도의 작업이 필요하다. 다중 업로드 구현`models.py`class TimeStampedModel(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: abstract = Trueclass Note(LifecycleModelMixin, TimeStampedModel): author = models.ForeignKey(Us.. 2024. 5. 6. Django Race condition 문제 해결하기 Race Condition이란?쇼핑몰에서 물건을 구매한다고 가정을 해본다.상품의 재고수량이 2개이고 A 사용자와 B 사용자가 해당 상품을 동시에 1개씩 구매를 하게 된다면 어떻게 될까?상품의 재고수량이 -2개가 되어서 최종 재고수량이 0개가 되기를 기대할 것인데 실제로는 그렇지 않다. 이유는 다음과 같다.Race condition은 동시에 여러 프로세스 또는 스레드가 공유 자원에 접근할 때 발생하는 문제이다. 이는 공유 자원에 대한 접근 순서가 보장되지 않아 예상치 못한 결과를 초래할 수 있다. 예를 들어, 두 개의 스레드가 동시에 공유 변수를 수정하는 경우, 각 스레드가 변수를 읽고 쓰는 시점이 서로 겹칠 수 있어 예상치 못한 값이 나올 수 있다. Transaction이란?트랜잭션은 데이터베이스에서 .. 2024. 4. 28. Django 이미지 최적화 하기 이미지 최적화가 필요한 이유 초고화질인 이미지를 사용자가 업로드할 수 도 있다.특히 갤러리의 경우 많은 이미지를 포함하게 되는데 위에 이미지와 같이 4.32MB 이상의 고용량의 이미지들이 누적되다 보면 그만큼의 리소스를 소비해야 한다. 따라서 이미지는 적당히 최적화할 필요성이 있다. 이미지 최적화 적용helper.py# 일관성 있게 이미지 저장def uuid_name_upload_to(instance: models.Model, filename: str) -> str: app_label = instance.__class__._meta.app_label cls_name = instance.__class__.__name__.lower() ymd_path = force_str(timezone... 2024. 4. 25. Next.js SSG & Prisma Acclerate Prisma Acclerate 간단 설명Django Cache API, Redis Cache와 같이 Node 백엔드 측에서 Prisma ORM을 사용할 때 적용할 수 있는 데이터 베이스 캐시를 이용한 가속화 기능이다. Time-to-live TTL을 사용한 캐시 전략오래된 캐시 데이터가 허용되는 경우 TTL을 사용하여 데이터베이스 로드를 줄이는 게 가능해진다. Stale-while-revalidate SWR을 이용한 캐시 전략SWR을 사용하면 최소한의 오래된 데이터로 요청에 빠르게 응답할 수 있다. 데이터베이스 로드를 줄이지는 않지만 응답 시간을 크게 향상할 수 있다. TTL은 데이터 변화가 거의 없는 DetailView에 적용하기 적합하다. SWR은 데이터가 주로 동적으로 변경되면.. 2024. 4. 9. 이전 1 2 3 다음