분류 전체보기
-
UML 다이어그램공부 2020. 8. 1. 21:33
UML이란?Unified Modeling Language 의 약어로 시스템을 모델로 표현해 주는 대표적인 언어로 생각할 수 있습니다. 개발자가 자신의 생각을 구축하고 반영하는데 있어서 표준적이고 이해하기 쉬운 방법으로 할 수 있도록 도와주며, 자신의 설계 결과물을 다른 사람과 효과적으로 주고받으며 공유할 수 있는 메커니즘을 제공합니다.다이어그램이란?다이어그램(diagram)은 정보를 시각화하여 보다 쉽게 이해할 수 있도록 표현하는 기술입니다. 보통은 2차원(도형)으로 그리지만 3차원 공간에 시각화를 하기도 합니다.UML 다이어그램이란?위의 UML과 다이어그램을 합쳐서 시스템을 모델로 표현하기 위해 이를 시각화 하는 기술입니다. 구조 다이어그램(Structure Diagram)과 행위 다이어그램(Behav..
-
[Design Pattern] 플라이웨이트 패턴 (Flyweight Pattern)공부/디자인 패턴 2020. 7. 26. 18:14
Flyweight 패턴은 비용이 큰 자원을 공통으로 사용할 수 있도록 만드는 패턴입니다. 여기서 자원에 대한 비용은 크게 두가지로 나눠 볼 수 있습니다.중복 생성될 가능성이 높음중복 생성될 가능성이 높다는 의미는 동일한 자원이 자주 사용될 가능성이 높은 것입니다. 이러한 자원은 공통 자원으로 관리하고 있다가 요청이 있을 때 제공해 주는 것이 좋습니다.자원 생성 비용은 큰데 사용 빈도는 낮음생성 비용이 크지만 사용 빈도가 낮은 자원을 미리 생성해 두는 것은 좋지 않습니다. 따라서 요청이 있을 때, 생성해서 제공해 주는 편이 좋습니다. 일반적으로 Factory와 관리 역할을 분리하는 것이 좋아 보이지만 굳이 나누고자 할 정도로 크기가 크지 않아서 하나의 클래스가 담당하도록 구현을 합니다. 이러한 패턴을 적용..
-
RabbitMQ란?서버 2020. 7. 26. 17:05
RabbitMQ는 AMQP 프로토콜을 구현한 메시지 브로커입니다. 생산자에게 메시지를 받아 소비자에게 전달해주는 서비스로 시스템 간 메시지를 전달해주는 오픈소스 메시지 브로커 소프트웨어입니다.AMQP란?AMQP란 Advanced Message Queueing Protocol의 줄임말로 MQ의 오픈소스에 기반한 표준 프로토콜을 의미합니다. AMQP는 마지막 P(rotocol)에서 보는 것과 같이 프로토콜을 의미하기 때문에 이 것을 사용한 가장 유명한 소프트웨어는 RabbitMQ라 볼 수 있습니다. AMQP를 구성하는 요소는 Exchange, Queue, Binding이 있습니다.ExchangeExchange는 생산자로부터 수신한 메시지를 적절한 큐나 다른 exchange로 분배하는 라우터의 기능을 합니다...
-
[Design Pattern] 퍼사드 패턴 (Facade Pattern)공부/디자인 패턴 2020. 7. 25. 23:34
퍼사드 패턴은 복잡한 호출 과정을 한 번 더 감싸서 단순한 형태로 제공하는 패턴입니다. 예를 들어, 특정 쇼핑몰에서 A라는 상품을 사기 위해서는 A 상품의 물건이 존재하는지, 주문자의 지역에 배송이 가능한지, 배송업체가 존재하는지 등 특정 절차를 밟아야 합니다. 퍼사드 패턴을 적용하지 않는다면 사용자가 복잡한 절차를 순서있게 호출해야 하지만 퍼사드 패턴을 적용하면 주문하기 와 같은 버튼 1개로 노출하고 복잡한 절차를 숨길 수 있습니다.class Qty: def check(self): pass class Delivery: def valid(self): pass class Amount: def check(self): pass # 퍼사드 클래스 class Order: def __init__(self): sel..
-
[Python] re 모듈 사용법언어/파이썬 & 장고 2020. 7. 25. 22:53
regex는 정규 표현식으로 흔히 알려져 있습니다. 파이썬에서 정규 표현식을 사용할 때, 내장 모듈인 re를 사용하고 있습니다. re 모듈에서 제공해주는 함수들을 보면 match(), fullmatch(), findall(), search() 등등이 있는데 어떤 함수를 사용하냐에 따라 결과가 달라지게 됩니다. 여기서는 정규 표현식에 대한 기본부터 설명하는 것이 아닌, 파이썬의 re 모듈에서 제공하는 함수의 쓰임새를 예제와 함께 설명하여 사용자의 목적에 맞게 사용할 수 있도록 설명합니다.왜 정규 표현식을 쓸까?파이썬에서는 문자열에서도 기본적으로 특정 문자 또는 문자열이 존재하는지나 어느 위치에 있는지와 같은 기능을 제공합니다.'123' in 'abc123def' # True s = 'foo123bar' s..
-
[Django] Channels 란?언어/파이썬 & 장고 2020. 7. 22. 20:21
Django 3.0 에서 Channels 기능을 제공하는데 Channels은 ASGI를 기반으로 만들어진 프로젝트입니다. 기존의 HTTP 통신을 넘어서 웹 소켓, 채팅 프로토콜, IoT 프로토콜 등을 처리할 수 있습니다. 장고의 핵심을 그대로 따오고 계층화 시켜서 장고는 동기로 실행하지만 기타 connection과 socket을 비동기적으로 처리할 수 있도록 합니다. 또한 동기, 비동기 모드를 선택할 수도 있습니다.ASGI란?ASGI는 Asynchronous Server Gateway Interface의 약어이며 Django 3.0부터 지원하는 새로운 기능으로 비동기 웹서버 및 어플리케이션을 만들 수 있도록 제공합니다. Django 3.0부터는 ASGI를 주로 지원하는 형태를 볼 수 있습니다.WSGI의 ..
-
[PostgreSQL] JSON type 사용하기DB/PostgreSQL 2020. 6. 7. 16:40
json과 jsonb 타입PostgreSQL에서는 JSON 형식을 필드로 선언해 저장할 수 있습니다. 관련 타입은 json, json[], jsonb, jsonb[] 으로 4가지가 있습니다. 여기서 jsonb 라는 타입을 볼 수 있는데 json과 jsonb의 차이점은 입력된 값 그대로를 저장할 것인지 최적화된 값을 저장할 것인지 입니다.json 타입은 입력된 공백, 키 순서, 중복 등과 같은 모든 것을 그대로 저장합니다. 저장 이후 질의를 한다고 가정하면 json blob을 질의할 때마다 로드하고 구문을 분석하기 때문에 속도가 느린 단점이 있습니다.그에 반해 jsonb는 json blob의 줄임말로 입력된 값을 질의에 최적화된 형태로 저장합니다. 따라서 키의 순서, 중복 제거, 공백 제거 등이 발생해 초..
-
[Python] Selenium과 BeautifulSoup4를 사용해 네이버 검색 결과 크롤링하기언어/파이썬 & 장고 2020. 5. 27. 20:40
[Python] Selenium과 BeautifulSoup4를 사용해 네이버 카페 검색 결과 크롤링하기 에서는 네이버 카페를 타게팅하여 크롤링 하는 방법을 소개했다면 여기서는 네이버 검색 결과를 크롤링 하는 방법을 소개합니다.코드 실행 환경이나 사전 설치의 설명은 위 게시글 첫 문단에서 확인할 수 있습니다.네이버 검색 결과 크롤링하기from bs4 import BeautifulSoup from selenium import webdriver from urllib import parse options = webdriver.ChromeOptions() # options.add_argument('headless') chrome_driver = webdriver.Chrome('chrome/chromedriver'..
-
[Python] Selenium과 BeautifulSoup4를 사용해 네이버 카페 검색 결과 크롤링하기언어/파이썬 & 장고 2020. 5. 26. 21:03
네이버 카페에 원하는 키워드를 입력해 검색하고, 해당 검색 결과 리스트를 크롤링하는 방식을 설명합니다. 크롤링 사이트는 네이버 카페 중고나라를 타겟으로 합니다.selenium과 beautifulsoup 모듈을 사용하고 웹드라이버는 Phantom JS가 아닌 chromedriver의 headless 모드를 사용하여 로 진행합니다. chromedriver를 받으실 때, chrome://settings/help 에서 현재 설치된 크롬의 버전과 동일한 드라이버를 다운 받으셔야 시작부터 막히지 않습니다.selenium과 beautifulsoup 사용법은 아래 정리된 게시물을 확인하시면 도움이 됩니다.[Python] Selenium 사용하기 (+PhantomJS)[Python] BeautifulSoup 사용하기버전..
-
[Python] URL 인코딩 (퍼센트 인코딩) - urllib 사용하기언어/파이썬 & 장고 2020. 5. 10. 00:18
URL (퍼센트) 인코딩이란?URL 인코딩은 퍼센트 인코딩이라고도 불리며 URL에 문자를 표현하는 문자 인코딩 방법입니다. 알파벳이나 숫자 등 몇몇 문자를 제외한 나머지는 1바이트 단위로 묶인 16진수로 인코딩하는 방식입니다.불곰→ url encode%EB%B6%88%EA%B3%B0왜 해야 하는가GET 방식을 통해 HTTP 요청을 할 때 쿼리 파라미터가 붙는 경우가 생기는데 URL은 ASCII 코드값만 사용됩니다. 이 쿼리 파라미터에 한글이 포함될 경우, ASCII 코드만으로 표현을 할 수 없어서 인코딩을 진행해야 합니다. 호출하는 API마다 쿼리 파라미터에 한글 문자 그대로를 지원하는 경우도 있지만 그렇지 않은 경우도 있으므로 미리 인코딩을 거친 형식으로 전송하는 것이 바람직합니다.url encode파..