분류 전체보기 805

SQL Basics: Maths with String Manipulations

Given a demographics table in the following format: demographics table schema id name birthday race return a single column named calculation where the value is the bit length of name, added to the number of characters in race. Solution: SELECT BIT_LENGTH(name)+ CHAR_LENGTH(race) AS calculation FROM demographics 'BIT_LENGTH' can obtain the bit length. 'CHAR_LENGTH' or 'LENGTH' can obtain the char..

모노스테이트, 메타클래스, 싱글톤 구현예시

모노스테이트 싱글톤 패턴 The Monostate Singleton Pattern 객체 생성여부 보다는 상태와 행위에 초점을 맞춘 패턴 단일 객체가 아닌, 모든 객체가 같은 상태를 공유하는 패턴 __init__ 으로 구현 하는 방법 # __init__ 으로 구현하는 방법 class Mono: __shared_state = {"공유":"데이터"} def __init__(self): self.data = 1 self.__dict__ = self.__shared_state pass obj = Mono() obj.data = 9999 other_obj = Mono() print(f"{obj=}") print(f"{other_obj=}") """ 결과값. 서로 다른 인스턴스임을 확인할 수 있음 obj= other..

싱글톤 패턴, 게으른 초기화, 모듈 싱글톤

싱글톤 패턴 글로벌하게 접근 가능한 단 한 개의 객체만을 허용하는 패턴 주로 로깅이나 디비, 프린터 스풀러 등 동일한 리소스에 대한 동시 요청의 충돌을 막기 위해 사용 목적 클래스에 대한 단일 객체 생성 전역 객체 제공 공유된 리소스에 대한 동시 접근 제어 구현 코드 class Singleton(object): # __new__를 오버라이드 한다. def __new__(cls): # hasattr는 객체가 instance 속성을 가지고 있는지 확인한다. (객체의 존재 유무 확인) if not hasattr(cls, 'instance'): # 클래스 객체가 없다면 객체를 할당한다. cls.instance = super(Singleton, cls).__new__(cls) # 기존 또는 할당한 객체를 반환한다..

디자인 패턴 개요

객체지향 프로그래밍 파이썬의 모든 것은 객체다. → 파이썬의 클래스 인스턴스, 변수는 개별적인 메모리 공간에 저장된다. 객체 프로그램 내의 개체(entity)를 의미 개체는 다른 개체와 상호작용을 통해 목적 달성 클래스 속성(데이터)과 행동을 포함하는 객체를 정의 생성자로 객체 초기 상태 설정 일종의 템플릿으로 재사용 용이 메소드 객체의 행위를 의미 속성을 조작하고 작업을 수행 객체지향 프로그래밍의 주요 기능 캡슐화 객체의 기능과 상태를 숨김 클라이언트는 객체 구조와 상태를 직접 수정할 수 없고, 대신 수정을 요청 요청 종류에 따라 get, set 같은 특수 함수를 사용하여 내부 상태 변경 파이썬에서는 사실상 캡슐화 개념이 없지만 앞에 _를 붙여 접근 제한을 명시 다형성 객체는 함수 인자에 따라 다른 기..

2022년 21주차 '사이드 프로젝트 1차 결과물'

Weekly growth '벨로그 워드 클라우드' 구현 처음에는 프론트에서 워드 클라우드를 구현하려고 했으나 적당한 라이브러리가 없었고, 내 포지션이 아니다 보니 구현에 시간이 걸릴 것 같았다. 그래서 백엔드에서 워드클라우드를 구현하고 이미지를 파일로 저장. 곧바로 프론트에 이미지 파일을 보내주는 로직으로 변경했다. 데이터베이스나 s3를 사용하지 않기 때문에 이미지를 파일로 직접 관리했고 규모가 작은 서비스인만큼 이런저런 외부 툴을 붙이는 것은 지양하고자 했다. 기능적으로는 처음 기획한대로 구현했다. 하지만 아직 해결해야할 문제들이 많다. 데이터를 분석하는 시간이 너무 오래 걸리고, 예외처리나 실패 케이스에 대한 대응도 부족하다.. 또한 로딩화면도 추가해야 하고, UI도 개선해야 한다. 특히 속도면에서 ..